1.1 服务启动与关闭
crontab 服务
服务操作说明:
service crond start //启动服务
service crond stop //关闭服务
service crond restart //重启服务
service crond reload //重新载入配置
1.2 新增任务的方式
1)在/etc/crontab配置文件中配置(个人比较喜欢)
例如:
crontab中的cron表达式最小只能到分钟,没有秒,* * * * *表示每分钟运行一次
(注意图片上面的最后一个被#号注释掉了,如果要运行需要删除#号)
2)用crontab命令添加
命令格式:
crontab [-u user] file
crontab [-u user] [ -e | -l | -r ]
-u user:用来设定某个用户的crontab服务,如果不指定用户,则表示编辑当前用户的crontab文件。
file:file是命令文件的名字,表示将file做为crontab的任务列表文件并载入crontab。
-e:编辑某个用户的crontab文件内容。如果不指定用户,则表示编辑当前用户的crontab文件。
-l:显示某个用户的crontab文件内容,如果不指定用户,则表示显示当前用户的crontab文件内容。
-r:从/var/spool/cron目录中删除某个用户的crontab文件,如果不指定用户,则默认删除当前用户的crontab文件。
1.3 查看crontab job的调用日志
查看日志看某个job有没有执行或报错tail -f/var/log/cron。
1.4 清理系统用户的邮件日志
每条任务调度执行完毕,系统都会将任务输出信息通过电子邮件的形式发送给当前系统用户,这样日积月累,日志信息会非常大,可能会影响系统的正常运行,因此,将每条任务进行重定向处理非常重要。例如,可以在crontab文件中设置如下形式,忽略日志输出:
0 */3 * * * root /bin/sh /root/Desktop/test.sh >/dev/null 2>&1
/dev/null 2>&1表示先将标准输出重定向到/dev/null,然后将标准错误重定向到标准输出,由于标准输出已经重定向到了/dev/null,因此标准错误也会重定向到/dev/null,这样日志输出问题就解决了。
1.5 注意事项,绝对重要!!!
1、/etc/crontab配置的时候,指定shell脚本文件时要用绝对路径!
2、shell脚本中所有命令以及文件也全部要用绝对路径!
3、如果shell脚本死活不执行,但是手动调用却可以,就考虑是不是环境变量的问题。1和2其实就可以归结为环境变量问题。
在crontab文件中定义多个调度任务时,需要特别注环境变量的设置,因为我们手动执行某个任务时,是在当前shell环境下进行的,程序当然能找到环境变量,而系统自动执行任务调度时,是不会加载任何环境变量的,因此,就需要在crontab文件中指定任务运行所需的所有环境变量,这样,系统执行任务调度时就没有问题了。
可以在脚本中加上环境变量
!/bin/sh
source /etc/profile
……
4、如果要定义一个定时重启系统的任务,就必须将任务放到/etc/crontab文件,即使在root用户下创建一个定时重启系统的任务也是无效的。