Cron Job:将 shell 脚本输出重定向到文件

Cron Job:将 shell 脚本输出重定向到文件

下面的一行 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.login /root。如果您希望将其输入/vagrant,请明确将输出重定向到/vagrant/crond.log.

(FWIW,俱乐部的第二条规则crond是:不要假设你的 中有任何东西PATH,使用二进制文件的显式路径,但由于echo它也是 bash 内置命令,所以你对此没问题。)

答案2

已写,但不在您要查找的位置。最好的方法是使用绝对路径。

相关内容