linux – 在后台运行的命令行脚本进入停止状态
发布时间:2020-12-13 23:58:03 所属栏目:Linux 来源:网络整理
导读:我有一个简短的 PHP实用程序脚本,我只是用cli从cli运行它: php myscript.php 脚本始终在运行,定期执行某些任务(与问题无关).它不需要用户的任何输入. 运行之后,我通常按CTRL z,然后运行bg将进程置于后台,一切都很好. 如果我运行它: php myscript.php 脚本
我有一个简短的
PHP实用程序脚本,我只是用cli从cli运行它:
php myscript.php 脚本始终在运行,定期执行某些任务(与问题无关).它不需要用户的任何输入. 如果我运行它: 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/bash while true; do echo `date` sleep 30 done 为什么php脚本在后台启动后停止,而bash脚本没有? 解决方法
通常情况下,您使用&发送到后台的过程是什么?并且脚本等待来自终端的输入,进入停止状态.
例如.有一个bash脚本valecho: #!/bin/sh read val echo $val 运行它: ./valecho & 脚本将停止. 当它运行时 echo hello | ./valecho & 将正确运行和完成. 所以,检查你的PHP – 可能需要stdin的一些输入 编辑 – 基于评论: 我不是一个php开发人员 – 但只是尝试了下一个脚本(p.php) <?php while(true){ ? ?echo 'hi '.time()."n"; ? ?sleep(3); } ?> 使用命令: php -f p.php & 并且运行得很好……所以…为混乱而烦恼…… (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |