我是linux系统的新手,我正在尝试让PHP脚本无限次地运行。请注意,我正在使用Debian 7
。
所以,我正在使用screen
来打开一个窗口,到目前为止一直很好,我已经运行了worker.php
文件,我需要制作运行php脚本的shell脚本无限次。
所以我想出了这个:
#!/bin/sh
for (( ; ; ))
do
/usr/bin/php worker.php
sleep 1
done
问题是,当我尝试在./worker.sh
中运行screen
时,出现此错误:
bash: ./worker.sh: /bin/sh^M: bad interpreter: No such file or directory
所以我删除了for
,并将其替换为简单的echo
,这导致了同样的错误,所以我写了这个问题因为我不知道什么是错的,sh
或bash
都存在于服务器上,我想知道shebang
是否错误但是......我的automysqlbackup
脚本以相同的{{}开头1}}。
你知道出了什么问题吗?我只是个新手..真的不太了解。 如果你想知道为什么我每秒都运行一个文件,那是因为这个文件在游戏中用作队列中的命令处理器。每分钟用cron运行它太慢了。 MySQL触发器不能满足我的需求,所以我不得不这样做。
问候。
答案 0 :(得分:0)
从消息中看来,你的shebang线末端有一个<cr><lf>
(#!one)。由于不是debian unix上的有效行结尾(它在windows和其他一些unix版本上),它被作为文件名的一部分,因此o / s无法找到要运行的程序。 / p>
修复它需要这样的东西:
tr -d '\015' < worker.sh > worker_nocr.fixed
另外,当您使用bash作为shell时,您可能希望更改shebang以使用bash,或者在命令提示符下键入它们时其他可能无法正常工作