我是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
代替了它,这导致了同样的错误,所以我写了这个问题,因为我不知道什么是错的,sh
或bash
都存在于服务器上,我想知道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,否则在命令提示符