我设置了一个 crontabcrontab -e
并检查它是否保存crontab -l
:
*/10 6-8 * 1-11 1 /home/asarluhi/Documents/Scripts/monday.sh
的内容monday.sh
是:
#!/bin/bash
ruby ~/Documents/Scripts/monday_task.rb >> ~/Documents/Scripts/monday
monday_task.rb
是一个ruby脚本,web抓取一些数据,太长在这里不报告,但是里面没有错误。monday
是一个简单的空文本文件,
从 shell 启动时脚本运行良好。
我查看var/log/syslog
并发现以下条目:
Nov 7 07:55:01 SATELLITE-L50-A-161 CRON[6984]: (root) CMD (command -v debian-sa1 > /dev/null && debian-sa1 1 1)
Nov 7 08:00:01 SATELLITE-L50-A-161 CRON[7032]: pam_ecryptfs: Skipping automatic eCryptfs mount
Nov 7 08:00:01 SATELLITE-L50-A-161 CRON[7033]: (asarluhi) CMD (/home/asarluhi/Documents/Scripts/monday.sh)
Nov 7 08:00:01 SATELLITE-L50-A-161 CRON[7031]: (asarluhi) MAIL (mailed 1 byte of output; but got status 0x00ff, #012)
Nov 7 08:00:01 SATELLITE-L50-A-161 CRON[7038]: pam_ecryptfs: Skipping automatic eCryptfs unmount
Nov 7 08:00:43 SATELLITE-L50-A-161 anacron[6485]: Job `cron.daily' terminated
Nov 7 08:00:43 SATELLITE-L50-A-161 anacron[6485]: Normal exit (1 job run)
Nov 7 08:05:01 SATELLITE-L50-A-161 CRON[7112]: (root) CMD (command -v debian-sa1 > /dev/null && debian-sa1 1 1)
Nov 7 08:10:01 SATELLITE-L50-A-161 CRON[7141]: pam_ecryptfs: Skipping automatic eCryptfs mount
Nov 7 08:10:01 SATELLITE-L50-A-161 CRON[7142]: (asarluhi) CMD (/home/asarluhi/Documents/Scripts/monday.sh)
Nov 7 08:10:01 SATELLITE-L50-A-161 CRON[7140]: (asarluhi) MAIL (mailed 1 byte of output; but got status 0x00ff, #012)
Nov 7 08:10:01 SATELLITE-L50-A-161 CRON[7147]: pam_ecryptfs: Skipping automatic eCryptfs unmount
Nov 7 08:15:01 SATELLITE-L50-A-161 CRON[7206]: (root) CMD (command -v debian-sa1 > /dev/null && debian-sa1 1 1)
Nov 7 08:17:01 SATELLITE-L50-A-161 CRON[7221]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly)
...
如您所见,cron 作业从早上 8:00 开始,而不是在 crontable 中的早上 6:00。
该脚本已启动,但没有写入任何内容~/Documents/Scripts/monday
我在Cron not running scripts之前的 askubuntu 问题中读到 STDERR 应该最终出现在系统邮件中,但是没有以我的用户名命名的目录/var/mail/
,所以我什么也没找到。
看起来可执行文件
ruby
不在cron
的路径中,因此您需要使用可执行文件的完整路径。更改您的
monday.sh
脚本:至:
正如您所
syslog
演示的那样,monday.sh
脚本正在按时运行,因此绝对路径名是唯一的答案。根据 OP 注释ruby
,还必须以绝对路径名作为前缀。