如何使 crontab 有效运行?

如何使 crontab 有效运行?

我是 Linux 新手,如果这个问题太愚蠢,我很抱歉。我想知道如何正确创建 crontab,我创建了以下作业:

* * * * * /usr/src/debug/http/cron_job.sh >/dev/null 2>&1

在 cron_job.sh 中如下

pidof html
if [ 0 = $? ]
then
 echo running
else 
 cd /usr/src/debug/http/
 ./html
fi

但当我检查正在运行的程序时它显示

2738 ? ... ./html
2748 ? ... ./html
2788 ? ... ./html

运行应用程序时似乎出现重复,我的设置有误吗?请告诉我如何解决这个问题?

感谢您的帮助。

答案1

您的 cron 作业开始运行,其当前工作目录设置为拥有该作业的用户的主目录。当您将要执行的脚本指定为 时/usr/src/debug/http/cron_job.sh,它确实不是导致工作目录被改变。

因此,pidof html实际上执行的操作与相同pidof $HOME/html。脚本后面显示html可执行文件实际上位于中/usr/src/debug/http/html,因此pidof html命令需要您正在测试的可执行文件的完整路径,因此将其替换为:

pidof /usr/src/debug/http/html

如果/usr/src/debug/http/html实际上是一个脚本,您还需要添加选项-x

pidof -x /usr/src/debug/http/html

修复脚本的另一种方法是简单地将命令移动cd /usr/src/debug/http为 cron 作业脚本的第一行,这样脚本就会始终改变到正确的目录中,甚至在尝试测试进程是否存在之前html

相关内容