我确信有人在服务器上改变了一些东西,但我无法确定发生了什么。 记住这个服务在本周开始之前是完美的。 ( 注意:这是特定于一台服务器的,因为这个服务在其他4台服务器上运行的很好。 )
我有以下服务来运行PHP脚本
start on filesystem and net-device-up IFACE=eth0 respawn #exec echo OARSUDP ran at `date` >> /var/log/oarsudp.log script sudo -u root /usr/bin/php -f /home/src/www-server/services/job_info_parser.php end script
如果我尝试启动它,我会收到一条消息 –
sudo service oarsudp start oarsudp start/running, process 2604
如果我立即检查我得到的状态 –
sudo service oarsudp status oarsudp stop/waiting
我添加了exec行来发送注释到日志。 只有当script标签及其内容被注释掉时才起作用。
我在命令行脚本标签内运行了PHP行,它完美的工作,没有发生错误。
我已经确认/etc/init/ (用户根,组根,权限644)内的权限是正确的。
我尝试改变服务的名称,仅仅是因为我读了一些关于一些相互冲突的名字的post,而我正在抓秸秆。
看起来服务试图重新生成,在服务死亡之前多次发送exec的日志消息。
我刚刚findUpstart的日志,他们说 –
“无法打开input文件:/home/src/www-server/services/job_info_parser.php”。
我试图改变权限,组和所有者,但没有任何工作。
有没有人见过这样的服务脚本停止工作? 如果是这样,原因是什么?如何解决? 还是我是一个白痴,在脚本或服务中引入了一个问题呢?
我在这里假设这是一个长期运行的守护进程types的任务; 如果是一次性运行和停止任务,则需要“任务”关键字。
1)就我所知,执行和脚本是相互排斥的; 他们有两种不同的方式来指定为这项工作运行什么。
2)我没有看到sudo的理由; upstart以root身份运行,你可以使用setuid / setgid来更改作业运行的用户/组,就像它不应该是root一样。
我怀疑sudo是令人困惑的东西,或隐藏真正的事情; 新贵对跟踪正在运行的任务的pid非常特别。 见http://upstart.ubuntu.com/cookbook/#expect有关血腥的细节; 实际上,看到整个页面的一些可能的其他线索