Upstart 服務永遠不會啟動或完全停止

Upstart 服務永遠不會啟動或完全停止

我正在嘗試為 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 中,您不需要執行chdirin 腳本,不確定是否是在您擁有的任何版本的 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更多日誌等級。

相關內容