2017-03-09 46 views
0

我已經安裝了Virtuoso,並且我想創建一項服務,以便此服務可以從操作系統啓動。要正常啓動Virtuoso,請轉至目錄cd /usr/local/var/lib/virtuoso/db並運行virtuoso-t -f。這個命令必須在我提到的目錄內部執行,否則它不會讀取配置文件。所以我創建了腳本/etc/init.d/virtuoso創建服務啓動

#!/bin/bash 
# Virtuoso  Startup script for the Openlink Virtuoso 
# Source function library. 
. /etc/rc.d/init.d/functions 

prog="virtuoso" 
lockfile=/var/lock/subsys/virtuoso.lock 
RETVAL=0 

start() { 
     echo -n $"Starting $prog: " 
     cd /usr/local/var/lib/virtuoso/db/ | virtuoso-t -f 
     RETVAL=$? 
     echo 
     [ $RETVAL = 0 ] && touch ${lockfile} 
     return $RETVAL 
} 

stop() { 
    echo -n $"Stopping $prog: " 
    killproc $prog -TERM 
    RETVAL=$? 
    echo 
    [ $RETVAL = 0 ] && rm -f ${lockfile} ${pidfile} 
} 

case "$1" in 
    start) 
    start 
    ;; 
    stop) 
    stop 
    ;; 
    restart) 
    stop 
    start 
    ;; 
    status) 
    # status -p $pidfile && exit 0 || exit $? 
    status $prog 
    RETVAL=$? 
    ;; 
    *) 
    echo $"Usage: $prog {start|stop|restart|status}" 
    RETVAL=2 
esac 

exit $RETVAL 

但該服務抱怨說它沒有找到命令virtuoso-t。如果我創建一個腳本來手動啓動,而不需要service start virtuoso它可以工作。但如果我呼叫/etc/init.d/virtuoso內的腳本不起作用。

任何線索?謝謝

# service virtuoso status 
● virtuoso.service - SYSV: The Openlink Virtuoso is a high-performance object-relational SQL database. 
    Loaded: loaded (/etc/rc.d/init.d/virtuoso; bad; vendor preset: disabled) 
    Active: failed (Result: exit-code) since Thu 2017-03-09 11:17:25 EST; 28s ago 
    Docs: man:systemd-sysv-generator(8) 
    Process: 10905 ExecStart=/etc/rc.d/init.d/virtuoso start (code=exited, status=127) 

Mar 09 11:17:25 irodsprodvm.ebioscience.amc.nl systemd[1]: Starting SYSV: The Openlink Virtuoso is a high-performance object-relational SQL database.... 
Mar 09 11:17:25 irodsprodvm.ebioscience.amc.nl virtuoso[10905]: Starting virtuoso: /etc/rc.d/init.d/virtuoso: line 19: virtuoso-t: command not found 
Mar 09 11:17:25 irodsprodvm.ebioscience.amc.nl systemd[1]: virtuoso.service: control process exited, code=exited status=127 
Mar 09 11:17:25 irodsprodvm.ebioscience.amc.nl systemd[1]: Failed to start SYSV: The Openlink Virtuoso is a high-performance object-relational SQL database.. 
Mar 09 11:17:25 irodsprodvm.ebioscience.amc.nl systemd[1]: Unit virtuoso.service entered failed state. 
Mar 09 11:17:25 irodsprodvm.ebioscience.amc.nl systemd[1]: virtuoso.service failed. 
Warning: virtuoso.service changed on disk. Run 'systemctl daemon-reload' to reload units. 

回答

0

我修好了。在腳本的開頭添加了此行

PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin 
相關問題