Upstart 服务正在运行,已停止并且将不再运行

Upstart 服务正在运行,已停止并且将不再运行

我确信有人在某个地方更改了服务器上的某些内容,但我无法确定发生了什么。请记住,在本周开始之前,该服务运行正常。(注意:这仅适用于一台服务器,因为同一服务在其他 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/我已确认(用户 root、组 root、权限 644)中的权限正确。

我曾经尝试更改服务的名称,只是因为我读过一篇关于一些冲突名称的帖子,而我正陷入困境。

附加信息...

看起来该服务尝试重新启动,并在exec服务终止之前多次发送日志消息。

我刚刚找到了 Upstart 的日志,其中写道:

“无法打开输入文件:/home/src/www-server/services/job_info_parser.php”。

我尝试更改权限、组和所有者,但没有任何效果。


有人见过服务脚本像这样停止工作吗?如果见过,原因是什么?我该如何修复?还是我是个十足的白痴,自己在脚本或服务中引入了问题?

答案1

我在这里假设这是一个长期运行的守护进程类型的任务;如果它是一次性运行和停止任务,那么您需要“task”关键字。

1)据我所知,exec 和 script 是互相排斥的;它们是指定要运行此作业的两种不同方式。

2)我认为没有理由使用 sudo;upstart 以 root 身份运行,你可以使用 setuid/setgid 来更改作业运行的用户/组,就好像它不应该是 root。

我怀疑 sudo 会造成混乱,或者隐藏真正发生的事情;upstart 非常注重跟踪正在运行的任务的 pid。请参阅http://upstart.ubuntu.com/cookbook/#expect了解一些血腥细节;事实上,查看整个页面可能还有其他线索

相关内容