我为守护进程编写了一个名为“ts.conf”的 upstart 脚本,并将其放在 /etc/init 中。当我尝试使用
启动 ts
我期望收到确认消息,也期望得到提示,但终端挂起了。当我按下 ctrl-c 时,我得到了提示。如果我重新启动,则会显示一条消息
开始:作业已在运行:ts
但是,服务器没有运行,我可以使用“ps -ef”找到 mono 进程。
脚本“ts.conf”位于 /etc/init 中,如下所示:
start on runlevel [2345]
stop on runlevel [016]
respawn
expect fork
script
cd /home/ubuntu/Terraria
/usr/bin/mono /home/ubuntu/Terraria/TerrariaServer.exe -worldpath /home/ubuntu/Terraria -world world1.wld
end script
如果我从命令提示符手动运行命令,服务器可以正常启动。有人能看出我的 upstart 脚本有什么问题吗,或者能理解为什么什么都没有发生吗?
请注意,上面的文字是错误的,它说我可以用 ps -ef 找到该进程。我不能使用 ps 查找该进程。
答案1
您可能在这里遇到多个问题:
1) expect fork
. 脚本部分不断等待分叉发生并挂起等待。
2) 服务器没有启动。Upstart 脚本部分以 的身份运行root
,缺少所有环境。您说如果将其粘贴到命令行上,它会起作用,那是因为您不是 root,并且您有环境。
如果预计 mono 会真正分叉,那么修复 2 也会修复 1。否则删除expect fork
。
请参阅 Upstart Cookbookhttp://upstart.ubuntu.com/cookbook/#id94对于用户工作,它可能会解决您的问题2。