crontab 定时任务

查看当前用户的定时任务列表

# 执行该命令会显示当前登录用户的定时任务列表,如下所示
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的意思就是:标准输出重定向到空设备文件,标准错误输出重定向等同于标准输出,因为之前标准输出已经重定向到了空设备文件,所以标准错误输出也重定向到空设备文件。

最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容