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

Rah*_*man 1 shell bash cron

下面只是一行 shell 脚本,它不能作为 cron 作业工作,但直接从终端执行工作正常:

#!/bin/bash

echo "Executed" >> ./crond.log 2>&1
Run Code Online (Sandbox Code Playgroud)

可能是什么问题?

检查 /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)
Run Code Online (Sandbox Code Playgroud)

Crontab 工作列表如下所示:

*/5 * * * * sh /vagrant/mypagelogin.sh
*/5 * * * * sh /vagrant/my.sh
[root@vagrant-centos64 vagrant]#
Run Code Online (Sandbox Code Playgroud)

crond.log 的访问权限是:

-rwxrwxrwx 1 vagrant vagrant 0 May 16 10:51 crond.log
Run Code Online (Sandbox Code Playgroud)

更新:crond.log 文件与 my.sh 位于同一位置。[/流浪汉]

Ulr*_*arz 5

crond俱乐部的第一条规则:您不要假设工作目录。我的猜测是你会找到一个crond.login /root。如果您希望它在 中/vagrant,请将输出显式重定向到/vagrant/crond.log.

(FWIW,第二法则crond俱乐部是:不要以为你有什么事PATH,使用二进制显式路径,但由于echo也是一个bash内建命令,你在一个很好。)

  • 还将作业放在 vagrant 的 crontab 中,而不是 root 的 ** 除非** 作业特别需要以 root 身份运行。 (4认同)