Linux Cron 定时任务
目标:
通过crontab命令在Linux系统设置定时任务
crontab命令
-u <user> define user
-e edit user's crontab
-l list user's crontab
-r delete user's crontab
-i prompt before deleting
-n <host> set host in cluster to run users' crontabs
-c get host in cluster to run users' crontabs
-s selinux context
-V print version and exit
-x <mask> enable debugging
准备定时任务的文件 /home/demo/cron-job
这个文件一定要是Unix(LF)格式,不能是Windows(CR LF)格式会导致定时任务执行失败
1 | 15 3 * * * /bin/sh /home/demo/restart.sh |
这种方式可能会手动执行restart.sh没问题,但是定时任务不生效,缺少环境变量导致。
在shell中执行时是能够找到环境变量的,但是在crontab中,它是不会自己导入环境变量的,需要我们指定 . /etc/profile 就是导入环境变量。并将所有路径都写成绝对路径。
1 2 | 15 3 * * * ./etc/profile; /bin/sh /home/demo/restart.sh 15 4 * * * ./etc/profile; /bin/sh /home/demo/restart.sh |
通过文件给用户root设置定时任务
1 | sudo crontab -u root /home/demo/cron-job |
直接命令行修改用户root定时任务
1 | sudo crontab -u root -e |
查看用户roog的定时任务
1 | sudo crontab -u root -l |
增加了crontab任务后,在/var/spool/cron目录下会有一个账号命名的文件。该文件的内容就是刚账号的crontab任务。
对crontab问题的定位方法:
1.在crontab文件最后一行加入一个测试任务,如: * * * * * root echo “hello world” >> /root/test_cron 每分钟写一条,很快就能看出是不是crontab中语法的问题。
2.查看日志文件,定时任务的日志文件一般是/var/log/cron,查看下这个文件的最后几行就能知道定时任务是不是完全都停掉了,是不是在执行过程中遇到了什么问题。
参考
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!