我在尝试配置supervisor以运行php脚本时遇到了问题。在调试模式下运行supervisor可以提供以下信息:
2015-03-09 08:53:06,342 INFO supervisord started with pid 2030
2015-03-09 08:53:06,358 INFO spawned: 'worker1' with pid 2031
2015-03-09 08:53:06,423 INFO exited: worker1 (exit status 1; not expected)
2015-03-09 08:53:06,424 INFO received SIGCLD indicating a child quit
2015-03-09 08:53:07,440 INFO spawned: 'worker1' with pid 2032
2015-03-09 08:53:07,587 INFO exited: worker1 (exit status 1; not expected)
2015-03-09 08:53:07,589 INFO received SIGCLD indicating a child quit
2015-03-09 08:53:09,604 INFO spawned: 'worker1' with pid 2033
2015-03-09 08:53:09,756 INFO exited: worker1 (exit status 1; not expected)
2015-03-09 08:53:09,758 INFO received SIGCLD indicating a child quit
2015-03-09 08:53:12,775 INFO spawned: 'worker1' with pid 2034
2015-03-09 08:53:12,973 INFO exited: worker1 (exit status 1; not expected)
2015-03-09 08:53:12,974 INFO received SIGCLD indicating a child quit
2015-03-09 08:53:13,976 INFO gave up: worker1 entered FATAL state, too many start retries too quickly
主管配置:
[program:worker1]
command=php myScript.php
directory=/home/path/to/script/
user=root
autostart=true
autorestart=true
stderr_logfile=/var/log/worker1.err.log
stdout_logfile=/var/log/worker1.out.log
redirect_stderr=true
environment=PATH="/usr/bin"
对于这个测试,请使用myScript。php只需打印出echo“test”。PHP_EOL
没有报告php错误的日志,如果我通过cli运行脚本,它将按预期工作。supervisord日志只报告与debuggin相同的输出。
我也尝试过使用绝对路径,比如
/usr/bin/php/home/path/to/script/myScript。php
但没有任何变化。
myScript的文件权限。php设置为
-rwxr-x 1 root apache
真的不知道还能查到什么。谢谢你的支持!
更新1
我还尝试过监视其他程序,比如/bin/cat或bash脚本,效果非常好。问题似乎仅限于php。
UPDATE_2
正如NB在评论中指出的,我已将测试脚本更改为更像长期运行的作业:
while(true){
echo "test".PHP_EOL;
sleep(10);
}
和以前一样,它进入致命状态。
我已经使用Supervisord一段时间了,这是我配置中的内容:
[program:worker1]
command=php /absolute/path/to/myScript.php
我写这个作为一个答案的原因是由于格式。
此外,请尝试以下脚本:
for(i = 0; i < 10; i++)
{
printf("\nIteration: %d", $i);
usleep(1000 * 200); // 200 milliseconds between each printf
}
exit;
并将其添加到监管中。它应该在回响后重新启动。
尝试设置startsecs=0
:
[program:foo]
command = ls
startsecs = 0
autorestart = false
http://supervisord.org/configuration.html
开始
程序启动后需要运行的秒数,以考虑启动成功。如果程序在启动后没有持续这么多秒,即使它以“预期”的退出代码退出(请参阅exitcodes),启动也将被视为失败。设置为0表示程序不需要在任何特定时间内保持运行。
我用退出代码1重现这种行为的唯一方法是使用无效的文件路径。因此,首先请仔细检查路径是否正确。但我认为你以前做过。
我更假设该文件位于主目录下,而root用户无法访问和运行它。所以我会尝试更改脚本的位置。
对于测试,您可以将脚本放在/tmp/myScript.php
下:
cp /home/path/to/script/myScript.php /tmp/myScript.php
并像这样修改您的主管配置:
[program:worker1]
command=php myScript.php
directory=/tmp/
user=root
autostart=true
autorestart=true
stderr_logfile=/var/log/worker1.err.log
stdout_logfile=/var/log/worker1.out.log
redirect_stderr=true
environment=PATH="/usr/bin"
现在你应该可以运行你的脚本了。
如果这样做有效,您应该检查阻止root访问脚本的文件夹。这可能是由一个加密(并装入)文件夹(home dir?)引起的,或者如果该位置是从其他位置装载的(samba、nfs…)。要解决这个问题,您可以尝试将用户从root更改为您的用户(我不建议这样做),或者将项目位置更改为另一个文件夹,该文件夹不位于您的home dir下。
我不得不格式化我的驱动器,但我的一个项目不再工作了。所有其他相同类型的项目都运行良好。这是Laravel Vue JS。问题是我无法运行npm run watch/dev或prodution。他们都给出了错误。Laravel 5.7 npm ver 6.4.1 node ver 10.15.0 windows 10 我安装/卸载了不同的节点版本,没有骰子。我已经多次删除/安装节点模块,什么都没有。
问题内容: 当我运行以下代码时: 我收到此错误: 退出状态1 但是,这对调试错误的确切原因没有帮助。 如何获得更详细的信息? 问题答案: 解决方案是使用Command对象的属性。可以这样完成: 运行上面的代码,可以清楚地说明问题所在: 退出状态1:查找:-exec:不终止“;” 或“ +” 编辑: 在上面的代码中,我们希望在发生错误的情况下,消息将被打印到stderr,并且命令将返回非零的错误代码
当我尝试使用此命令安装mpi4py时 也尝试过, 我总是会遇到这样的错误:
...there are dark corners in the Bourne shell, and people use all of them. Chet Ramey exit 命令一般用于结束一个脚本,就像C语言的exit一样。它也能返回一个值给父进程。 每一个命令都能返回一个退出状态(有时也看做 返回状态 ).一个命令执行成功返回0,一个执行不成功的命令则返回一个非零值,此值通常可以被解释
我是在尝试 但是我有一个错误 使用缓存的PyAudio-0.2.11.tar.gz(37 kB)安装收集的软件包:pyaudio运行setup.py为pyaudio安装:开始运行setup.py为pyaudio安装:完成,状态为“错误” 错误:命令出错,退出状态为1:' C:\ Users \ Admin \ PycharmProjects \ AI \ venv \ Scripts \ pyth