如果想深入了解(google not use), 我们应该看哪些文档

• cron(8) is the daemon that executes scheduled commands.
• crontab(1) is the program used to modify user crontab(5) files.
• crontab(5) is a per user file that contains instructions for cron(8).

如何设置crontab

这个其实很简单

备用脚本

#service.sh 这个(点.)有可能出问题(由于run-parts造成的), 可以更名为servicsh
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/opt/someApp/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin #还有可能是path变量不对, 可以设置path变量.
cd /data/www/gitm/tb/code
/usr/local/bin/php /data/www/gitm/tb/code/service.php  >> /data/www/gitm/tb/code/logs/$(date -d "today" +"%Y%m%d_%H%M%S")outs.log #改为每次生成一个新的文件

正常设置

crontab -e #如果是这样设置的话, 可以用下面一句.
crontab -l #查看是否正常任务列表里面有.
* * * * * env > /tmp/env.output #第一步先测试一下, crontab是否正常执行, 因此, 把上面一句加进去, 不论是/etc/crontab 还是 crontab -e
*/1 * * * * /etc/crontabs-enable/service.sh #真正使用, 这么一句话就ok了.

开机启动

/etc/crontab #里面指定/etc/crontabs-enable/service.sh
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/opt/someApp/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin #还有可能是path变量不对, 可以设置path变量.
MAILTO=machangkun@g-go.cn
HOME=/
*/1 * * * * root run-parts /etc/crontabs-enable #就是这里指定的执行目录.
/etc/init.d/crond restart  #重新启动服务, 才能生效

重启动/启动cron服务

sudo/etc/init.d/crond restart #重启cron #cron可以换成crond
sudo service crond restart #也是重启cron #start可以换成restart
vi /etc/init.d #编辑这个文件也可以启动cron

如何确认crontab正常运行

看log

#查看log, 从尾部查看最新的.
tail -n 5 xxx.log
tail xxx.log 默认显示10条.

log位置

  1. /var/log/cron*
  2. /var/log/syslog,
  3. /var/log/messages
  4. /var/cron/log

输出log和log设置

  1. 看log和输出 shell脚本»定向输出. php脚本写好log, 并且指定errorlog.
0 * * * * /home/abliskovs/update/update.sh 2>&1 /tmp/testlog.log  # 2>&1 是把成功和失败都输出到testlog.log
  1. 启动cron的log, /etc/rsyslog.d/50*的那个文件,将cron 的注释去掉,重启syslog进程,就形成日志了.

crontab各种奇怪问题

  1. 据说crontab的文件里面, 最后要有一个回车, 没有回车, 则那一行就不执行. 换句话说, 最后需要有一个空行.
  2. cron.d/, cron.daily/, cron.hourly/ 这三个目录里面的shell文件, 文件名不能有点, 因此[service.sh]必须重命名[service]
#!/bin/bash #据说这是一个有用的声明.
bash -c "mybashcommand" # 同上
SHELL=/bin/bash #同上

参考(真全): [http://serverfault.com/questions/449651/why-is-my-crontab-not-working-and-how-can-i-troubleshoot-it]

看系统执行情况, 这个部分相当独立, 单独写另一个blog吧

ps -ef | grep cron | grep -v grep #检查是否crontab正常运行. 根据结果决定是否重启(cron或者crond)
pgrep cron #用这句能看到cron是否执行. 

系统任务的方法

fg #切换到前台
⌃+z #挂起程序
bg #切换到后台

参考: http://song49.blog.51cto.com/4480450/1029674
参考: http://my.oschina.net/u/2397255/blog/729604