Opensuse

在 OpenSuse 12.1 上將項目添加到 inittab

  • August 6, 2012

我目前正在開發一個需要添加的項目,inittab以便程序在啟動期間載入。

我要啟動的程序是 ac# mono 應用程序。我創建了一個啟動腳本,如果手動執行啟動腳本,程序啟動正常。但是,當我將它放入inittab程序時不會啟動。

我已經簽入了,/var/log/messages但它並沒有說有什麼問題,它只是說它正在重新載入。

以下是我添加到inittab腳本中的內容

bes:2345:respawn:/home/bits/MyProgram/start.myprogram

感謝您的任何幫助,您可以提供

更新 下面是位於 /home/bits/MyProgram 中的啟動腳本中的程式碼。

#!/bin/sh

cd /home/bits/MyProgram

/usr/bin/mono EmailServer.exe "$@"

我還嘗試將 > mylog.txt 添加到以 /usr/bin/mono 開頭的行的末尾,例如

/usr/bin/mono EmailServer.exe “$@” > mylog.txt

如果我手動執行啟動腳本,即使我不在啟動腳本所在的目錄中它也可以正常工作,只是當我將它添加到 inittab 並執行 telinit q 它永遠不會啟動並且日誌不會寫入但如果我手動啟動程序,日誌會被寫入。

感謝您的任何幫助,您可以提供。

問題很簡單,您使用的是 OpenSuse 12.1,它使用 systemd而不是經典的System V 引導系統

要安裝新的服務位置,請在 /etc/systemd/system/myprogname.service 中創建以下文件

[Unit]
Description=My progname service file

[Service]
ExecStart=/home/bits/MyProgram

[Install]
WantedBy=multi-user.target

之後執行systemctl daemon-reloadsystemctl start myprogname.service

如果你想自動重啟 MyProgname 你必須添加

Restart=restart-always

到服務區。

把你的程序放在某個地方。

複製並編輯位於**/etc/init.d/skeleton**的初始化作業控制的骨架模板文件。

修改此文件以指示您想要的執行級別…在您的範例中,您需要 2、3、4、5,文件頂部有選項(在註釋中)以指示所需的執行級別

將此新文件放在**/etc/init.d**中,並具有描述性名稱。(範例中使用的myfancyname

一個平台無關的方法來測試這個,或者啟用/禁用(如果你使用了骨架文件)

sudo /etc/init.d/myfancyname start
sudo /etc/init.d/myfancyname stop
sudo /etc/init.d/myfancyname restart

有特定於發行版的方法來執行這些相同的操作,例如,Debian 使用update-rc.d myfancyname$$ start|stop|enable|disable… $$

修改 inittab通常是個主意,如果你把它搞砸了,系統將不再啟動,然後你就會遇到兩個問題。(不需要正則表達式!)

將腳本添加到 /etc/init.d/ 子目錄更加標準化,幾乎可以與任何 linux 風格一起使用,可能是一些 *nix,也可能是一些 bsd。

引用自:https://unix.stackexchange.com/questions/42671