查看当前用户的定时任务列表
# 执行该命令会显示当前登录用户的定时任务列表,如下所示
crontab -l -u $USER
# 已有定时任务
50 15 * * * sh /var/tmp/shell_script/1.sh
创建(编辑)定时任务列表
# 执行该命令会打开crontab 的任务列表,并进行编辑
crontab -e
定时任务格式
# 分钟 小时 每月第几天 月份 每周第几天 命令
min hour dayofmonth month dayofweek command
# 示例
15 18 * * * sh /var/tmp/shell_script/1.sh
# 每天下午6点15分执行/var/tmp/shell_script目录下的1.sh脚本
15 18 1 * * sh /var/tmp/shell_script/1.sh
# 每月1号下午6点15分执行/var/tmp/shell_script目录下的1.sh脚本
# 可以使用逗号区分多个时间,比如每月1号,2号,3号
15 18 1,2,3 * * sh /var/tmp/shell_script/1.sh
# 每月1号,2号,3号下午6点15分执行/var/tmp/shell_script目录下的1.sh脚本
删除定时任务
# 执行该命令会删除该用户的所有定时任务
crontab -r
注意
-
一定要设置crontab的输出重定向,如果crontab不重定向输出,并且crontab所执行的命令有输出内容,那么输出的内容会以邮件的形式发送给用户,内容存储在邮件文件
/var/spool/mail/$user
中,如果命令执行比较频繁,或者命令输出内容较多,会使这个邮件文件不断追加内容,文件越来越大。而邮件文件一般存放在根分区,根分区一般相对较小,所以会造成根分区写满而无法登录服务器。所以无论何时,最好在crontab命令中都加上输出重定向到文件或者/dev/null。 -
/dev/null:/dev/null 代表空设备文件。
-
> 代表重定向到哪里,例如:
echo "123" > /var/tmp/shell_script/hello.txt
。 -
1 表示stdout标准输出,系统默认值是1,所以"
>/dev/null
"等同于"1>/dev/null
"。 -
2 表示stderr标准错误。
-
& 表示等同于的意思,
2>&1
,表示2的输出重定向等同于1。 -
那么
>/dev/null 2>&1
的意思就是:标准输出重定向到空设备文件,标准错误输出重定向等同于标准输出,因为之前标准输出已经重定向到了空设备文件,所以标准错误输出也重定向到空设备文件。
网友评论