我正在嘗試為 teampeak 伺服器製作一個簡單的新貴腳本,但無法使其工作。
當我說初始化控制啟動它只是執行但從未完成甚至發出任何訊息。同樣的情況也發生在停止。
為了確保我沒有做錯任何事情,我複製了 cron 腳本並嘗試運行它,但結果是一樣的。
我在這裡做錯了什麼?
更新:
這是我的 TS3 腳本:
# myservice - myservice job file
description "my service description"
author "Me <[email protected]>"
# Stanzas
#
# Stanzas control when and how a process is started and stopped
# See a list of stanzas here: http://upstart.ubuntu.com/wiki/Stanzas#respawn
# When to start the service
start on runlevel [2345]
# When to stop the service
stop on runlevel [016]
# Automatically restart process if crashed
respawn
# Essentially lets upstart know the process will detach itself to the background
expect fork
# Start the process
script
emit going into TS3 dir
chdir /home/danizmax/teamspeak3-server_linux-x86/
emit starting TS3
exec su -c "/home/danizmax/teamspeak3-server_linux-x86/ts3server_startscript.sh start" danizmax &
emit done
end script
我嘗試使用最簡單的腳本,但這也不起作用:
description "regular background program processing daemon"
start on runlevel [2345]
stop on runlevel [!2345]
expect fork
respawn
exec echo example
console output
感謝您的協助。
答案1
在你這個新貴的工作中,有很多奇怪的地方讓我摸不著頭緒。
1)emit不是我所知道的程序,因此除非您將其新增至系統路徑中,否則可能會導致錯誤。您指的是 'echo' 嗎?這可能也沒有幫助,因為它將轉到可能不可見的系統控制台。
2)假設「emit」節有效,你說「expect fork」但實際上 fork兩次。一次用於“腳本”,然後當 teampeak 腳本分叉到後台時再次進行。
3)你「su」來運行腳本,但在大多數情況下start-stop-daemon其實比較簡單:
在 11.10 中,您不需要執行chdir
in 腳本,不確定是否是在您擁有的任何版本的 upstart 之後新增的。檢查man 5 init
一下有沒有這個詞chdir
start on runlevel [2345]
stop on runlevel [^2345]
respawn
chdir /home/danizmax/teamspeak-server
expect fork
exec start-stop-daemon --start --user danizmax --group danizmax --exec /home/danizmax/teamspeak3-server_linux-x86/ts3server_startscript.sh -- start
此外,錯誤可能會在 /var/log/syslog 中報告。您可以透過運行來大大增加錯誤級別
initctl log-priority info
man initctl
更多日誌等級。