linux – 在后台运行的命令行脚本进入停止状态

linux – 在后台运行的命令行脚本进入停止状态,第1张

概述我有一个简短的 PHP实用程序脚本,我只是用cli从cli运行它: php myscript.php 脚本始终在运行,定期执行某些任务(与问题无关).它不需要用户的任何输入. 运行之后,我通常按CTRL z,然后运行bg将进程置于后台,一切都很好. 如果我运行它: php myscript.php & 脚本在启动时放在后台,但它也处于停止状态.例: [1] 11513[1]+ Stopped 我有一个简短的 PHP实用程序脚本,我只是用cli从cli运行它:

PHP myscript.PHP

脚本始终在运行,定期执行某些任务(与问题无关).它不需要用户的任何输入.
运行之后,我通常按CTRL z,然后运行bg将进程置于后台,一切都很好.

如果我运行它:

PHP myscript.PHP &

脚本在启动时放在后台,但它也处于停止状态.例:

[1] 11513[1]+  Stopped                 PHP myscript.PHP

即使在这一点上运行bg也无济于事,我必须运行fg,然后再按CTRL z和bg使其工作.

这是PHP脚本:

<?while(true){    echo 'hi '.time()."\n";    sleep(30);}?>

我的问题是我不能直接在后台运行它,因为系统会停止它,我不明白为什么.我怎样才能解决这个问题?

更新:

我制作了相同脚本的bash版本,它可以运行并放入后台(运行而不是停止),只需使用&最后(script.sh&)

script.sh:

#!/bin/bashwhile true; do    echo `date`    sleep 30done

为什么PHP脚本在后台启动后停止,而bash脚本没有?
什么可能导致这种不同的行为?

解决方法 通常情况下,您使用&发送到后台的过程是什么?并且脚本等待来自终端的输入,进入停止状态.

例如.有一个bash脚本valecho:

#!/bin/shread valecho $val

运行它:

./valecho &

脚本将停止.

当它运行时

echo hello | ./valecho &

将正确运行和完成.

所以,检查你的PHP – 可能需要stdin的一些输入

编辑 – 基于评论:

我不是一个PHP开发人员 – 但只是尝试了下一个脚本(p.PHP)

<?PHP    while(true){        echo 'hi '.time()."\n";        sleep(3);    }?>

使用命令:

PHP -f p.PHP &

并且运行得很好……所以…为混乱而烦恼……

总结

以上是内存溢出为你收集整理的linux – 在后台运行的命令行脚本进入停止状态全部内容,希望文章能够帮你解决linux – 在后台运行的命令行脚本进入停止状态所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/1021569.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存