2013-02-22 91 views
-1

我無法在啓動設備時正常啓動程序。 我已經創建了一個腳本並將該腳本放入/etc/init.d/S77Hello.sh 在此腳本中,我啓動了該程序,該程序作爲其他程序的看門狗。 但啓動完成後,只有看門狗程序不運行應該由看門狗程序啓動的其他程序。無法在啓動時在Linux中啓動程序

有趣的是,當我使用以下命令啓動程序時: /etc/init.d/S77Hello.sh start 它以正常方式啓動所有其他程序。

S77Hello.sh

#!/bin/sh 
/usr/local/bin/mywatchdog 

任何有助於解決問題會有所幫助。

感謝, Yuvi

+0

您可以發佈'S77Hello.sh'文件的內容嗎? – 2013-02-22 18:46:49

+0

其簡單的腳本命令'/ usr/local/bin/mywatchdog'就是它。 – Yuvi 2013-02-22 18:51:19

+0

你的腳本在前臺運行你的程序。 '/ usr/local/bin/mywatchdog'程序是否足夠聰明,可以在啓動後進入後臺? – 2013-02-22 19:03:29

回答

1

腳本在/etc/init.d不會自動在啓動時調用;你必須首先告訴你的init系統。如果您的發行版有/etc/init.d這可能通過update-rc.d完成。具體如下:

update-rc.d S77Hello.sh defaults 

查看相關手冊頁。如果你更喜歡GUI,rcconf提供了更友好的用戶界面,但你可能需要先安裝它。

然而,在你這樣做之前,修復你的init腳本;它缺乏重要的信息。如果您尚未閱讀,您可能需要閱讀this

最起碼,它需要是這個樣子:

#/bin/sh 
### BEGIN INIT INFO 
# Provides:   mywatchdog 
# Required-Start: $local_fs 
# Required-Stop:  $local_fs 
# Default-Start:  2 3 4 5 
# Default-Stop:  0 1 6 
# Short-Description: Start watchdog at boot time 
# Description:  Something something something 
### END INIT INFO 

case "$1" in 
    start) 
     /usr/local/bin/mywatchdog 
     echo $! >/var/run/mywatchdog.pid 
      echo "watchdog started." 
     ;; 
    stop) 
     if kill "$(cat /var/run/mywatchdog.pid)"; then 
      rm /var/run/mywatchdog.pid 
      echo "watchdog stopped." 
     else 
      exit 1 
     fi 
     ;; 
    *) 
     echo "Usage: $0 {start|stop}" 
     exit 1 
     ;; 
esac 

這是假設一個Debian-like系統在一定程度上,但由於您使用的是發行與ARM的sysvinit一個,我猜猜你在Raspberry Pi上使用Raspian。如果不是,請檢查現有init腳本在發行版中的工作方式。