如何在shell脚本中无限次运行php文件


How to run php file in shell script infinite times

我是linux系统的新手,我正试图使PHP脚本无限次运行。注意,我使用的是Debian 7

所以,我使用screen打开一个窗口,到目前为止还好,我有worker.php文件已经成功运行,我需要使shell脚本运行php脚本无限次。

所以我想到了这个:

#!/bin/sh
for (( ; ; ))
do
    /usr/bin/php worker.php
    sleep 1
done

问题是,当试图在screen中运行./worker.sh时,我得到这个错误:

bash: ./worker.sh: /bin/sh^M: bad interpreter: No such file or directory

所以我已经剥离了for,并用一个简单的echo代替了它,这导致了同样的错误,所以我写了这个问题,因为我不知道什么是错的,shbash都存在于服务器上,我想知道shebang是否错了,但是……我有automysqlbackup脚本,以相同的shebang开头。

你知道出了什么问题吗?我只是个新手……我知道的不多。如果你想知道为什么我要每秒运行一个文件,那是因为这个文件充当了游戏队列中的命令处理器。每分钟用cron运行它太慢了。MySQL触发器不适合我的需要,所以我被迫这样做。

问候。

从消息来看,您在shebang行(#!)的末尾有一个<cr><lf>。一个)。在debian unix上,它不是一个有效的行尾(在windows和其他unix系统上),它被作为文件名的一部分,因此o/s无法找到要运行的程序。

修复它需要这样做:

tr -d ''015' < worker.sh > worker_nocr.fixed

另外,当您使用bash作为shell时,您可能希望将shebang也更改为使用bash,否则在命令提示符

中输入的其他内容可能无法正常工作。