《Linux 定时任务全解析:从时间查看、修改到任务设置与管理》 在日常的系统管理与运维工作中,定时任务的设置与管理是一项至关重要的技能。无论是定期执行数据备份、清理日志文件,还是按照特定时间调度系统程序,都离不开定时任务的支持。就如同Windows系统中的计划任务一样,Linux系统中的定时任务为我们提供了强大而灵活的自动化操作能力。
你可以根据实际情况对导读内容进行调整和修改。如果你还有其他想法或需求,欢迎继续向我提问。
2.18 定时任务定期执行任务(执行命令),和windows的计划任务是一样的。
2.18.1 查看时间代码语言:javascript代码运行次数:0运行复制#时间命令
date
#查看时间
[root@localhost ~]# date
2021年 07月 23日 星期五 14:38:19 CST
[root@localhost ~]# date +%F
2021-07-23
[root@localhost ~]# date +%T
14:35:47
[root@localhost tmp]# date +%F\ %T
2022-01-11 10:07:50 2.18.2 修改时间和日期代码语言:javascript代码运行次数:0运行复制#修改时间和日期
[root@localhost ~]# date -s '20200723 14:40:00'
2020年 07月 23日 星期四 14:40:00 CST
# 修改时间
[root@localhost ~]# date -s '14:40:00'
#同步时间,如果时间和当前时间不一致,可以做一下时间同步,来让时间准确起来
systemctl restart chronyd
# 一次执行完是有延迟的,等待一会才看到准确时间,前提是我们有网2.18.3 定时任务的格式代码语言:javascript代码运行次数:0运行复制#定时任务的格式
* * * * * cmd
分 时 日 月 周 命令
分:0-59
时:0-23
日:0-31
月:1-12
周:1-7
#每5分钟执行一次
*/5 * * * *
#每1小时的01分执行一次
01 */1 * * *
#每半个小时执行一次,下面的意思是每小时的00分和30分各执行一次
00,30 */1 * * *
#每天晚上8:00执行一次
00 20 * * *
#每个月1号晚上8:00执行
00 20 1 * *
#每年1月1号晚上8:00执行
00 20 1 1 *
#每周1、周三、周五晚上8:00执行一次
00 20 * * 1,3,5
# 几个符号的意思:
# * 每分钟
# */5 每5分钟
# 05 第5分钟
# 每秒钟执行的任务,需要单独写脚本,繁琐一些。2.18.4 查看,编辑定时任务代码语言:javascript代码运行次数:0运行复制#查看定时任务,遇到特殊符号%,需要添加转义符号\;
[root@localhost ~]# crontab -l
* * * * * echo `date +\%T` >>/tmp/time.txt
#编辑定时任务
[root@localhost ~]# crontab -e
* * * * * date >> /tmp/time.txt # 每分钟执行一次
[root@localhost ~]# crontab -l
* * * * * date >> /tmp/time.txt
## 我们可以通过cat来查看任务是否执行了,但是比较麻烦,每次手动输入cat,所以我们可以用如下指令
tail -f /tmp/time.txt #监测文件尾部内容的变化.
[root@localhost ~]# tail -f /tmp/time.txt
2023年 03月 24日 星期五 10:58:01 CST
2023年 03月 24日 星期五 10:59:01 CST
2023年 03月 24日 星期五 11:00:01 CST
2023年 03月 24日 星期五 11:01:01 CST
# 是这个进程再帮我们执行定时任务:
[root@localhost ~]# ps -ef|grep cron
root 581 1 0 18:05 ? 00:00:00 /usr/sbin/crond -n
# 我们还可以自行重启这个进程
root@localhost ~]# systemctl restart crond
[root@localhost ~]# ps -ef|grep cron # 可以看到进程启动时间变化了
root 2611 1 25 21:27 ? 00:00:00 /usr/sbin/crond -n
#改为每小时的03分执行
[root@localhost ~]# crontab -e
[root@localhost ~]# crontab -l
03 * * * * date >> /tmp/time.txt
#修改一下系统时间
[root@localhost ~]# date -s '12:02:50'
2023年 03月 24日 星期五 12:02:50 CST
[root@localhost ~]# tail -f /tmp/time.txt
...
2023年 03月 24日 星期五 11:13:01 CST
2023年 03月 24日 星期五 11:14:01 CST
2023年 03月 24日 星期五 12:03:03 CST # 12点03分执行的
# crontab -e里面每一行都可以写一个定时任务,也就是可以写多个定时任务。
# 比如,再加一个热内:每天晚上9:20自动关机
# 20 21 * * * shutdown -h now
[root@localhost ~]# date -s '21:19:50'
2023年 03月 24日 星期五 21:19:50 CST
[root@localhost ~]# crontab -l
03 * * * * date >> /tmp/time.txt
20 21 * * * shutdown -h now
[root@localhost ~]# date
2023年 03月 24日 星期五 21:21:03 CST
您在 /var/spool/mail/root 中有邮件
# 错误的原因可能是需要我们写shutdown的绝对路径
[root@localhost ~]# which shutdown # which也是查找,可以查找指令的绝对路径
/usr/sbin/shutdown
# 这里就是想提示大家,如果指令不行,就写指令的绝对路径
# 我们发现,没有关闭成功,并且看到了一个提示,有个邮件?我们去看一下
### 如果定时任务的格式,或者内容有问题,系统都会发邮件提示:image-20230710135913414