在 OpenSuse 12.1 上將項目添加到 inittab
我目前正在開發一個需要添加的項目,
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-reload
和systemctl 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。