1
我有以下的Upstart腳本。當我運行以下命令service worker-1 start
時,一切正常。我可以看到ps aux | grep php
運行的工人。我也可以使用service worker-1 stop
我需要重新啓動/更新工人。但不幸的是,這個腳本僅在重啓時部分工作。腳本被執行(開始:作業已經運行:worker-1當我嘗試service worker-1 start
)但我沒有看到任何正在運行的工作人員ps aux | grep php
,當然service worker-1 stop
返回stop: Unknown instance:
。你有什麼想法可能是錯的?重啓後運行PHP腳本與Upstart
description "Starts/kills workers."
author "Jiri Mihal"
start on (started php5-fpm and started mysql)
stop on shutdown
pre-start script
echo "[`date`] Workers started" >> /var/log/worker-1.log
exec 2>>/var/log/worker-1.log
end script
post-start script
echo $$ > /var/run/worker-1.pid
for i in `seq 1 5`;
do
exec php /home/jiri/workers/dlapi.workers/workers/RpcWorkerLauncher.php Worker-1 >/dev/null 2>&1 &
done
end script
post-stop script
read -r FIRSTLINE < /var/run/worker-1.pid
kill $(($FIRSTLINE + 2))
kill $(($FIRSTLINE + 3))
kill $(($FIRSTLINE + 4))
kill $(($FIRSTLINE + 5))
kill $(($FIRSTLINE + 6))
rm /var/run/worker-1.pid
echo "[`date`] Workers stopped" >> /var/log/worker-1.log
end script
只是一個猜測,但在重新啓動我會假設用戶在運行啓動腳本/服務是不是你很可能根本。您是否嘗試過使用sudo甚至su來運行命令來root並運行它。 –
是的,我試過了,我可以用sudo運行上面的命令,沒有任何問題。我也可以以root用戶身份運行這些命令。但我可以嘗試更改從用戶文件夾到某個「系統」文件夾的路徑。也許用戶的文件夾在啓動早期不可用。 –
嘗試使用像這樣(http://askubuntu.com/questions/20229/how-to-run-an-application-at-startup-as-a-certain-user)將用戶啓動時切換到另一個用戶(你自己)並運行該用戶下的啓動命令/服務。 –