下面的一行 shell 脚本不作为 cron 作业工作,而是直接从终端执行,效果很好:
#!/bin/bash
echo "Executed" >> ./crond.log 2>&1
可能是什么问题?
检查/var/log/cron,发现cron正在及时踢任务:
May 16 10:30:01 vagrant-centos64 CROND[3015]: (root) CMD (sh /vagrant/my.sh)
May 16 10:35:01 vagrant-centos64 CROND[3122]: (root) CMD (sh /vagrant/my.sh)
May 16 10:40:01 vagrant-centos64 CROND[3189]: (root) CMD (sh /vagrant/my.sh)
May 16 10:45:01 vagrant-centos64 CROND[3270]: (root) CMD (sh /vagrant/my.sh)
May 16 10:50:01 vagrant-centos64 CROND[3343]: (root) CMD (sh /vagrant/my.sh)
May 16 10:55:01 vagrant-centos64 CROND[3430]: (root) CMD (sh /vagrant/my.sh)
crontab 作业列表如下:
*/5 * * * * sh /vagrant/mypagelogin.sh
*/5 * * * * sh /vagrant/my.sh
[root@vagrant-centos64 vagrant]#
crond.log 的访问权限是:
-rwxrwxrwx 1 vagrant vagrant 0 May 16 10:51 crond.log
更新:crond.log 文件位于与 my.sh 相同的位置。 [/流浪汉]
答案1
俱乐部的第一条规则crond
:你不假设工作目录。我的猜测是你会找到一个crond.log
in /root
。如果您希望将其输入/vagrant
,请明确将输出重定向到/vagrant/crond.log
.
(FWIW,俱乐部的第二条规则crond
是:不要假设你的 中有任何东西PATH
,使用二进制文件的显式路径,但由于echo
它也是 bash 内置命令,所以你对此没问题。)
答案2
已写,但不在您要查找的位置。最好的方法是使用绝对路径。