小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
之前的文章Linux at 命令语法详解介绍了at命令,它用来执行一次性定时计划任务。接下来,再来介绍一下周期性执行的计划任务。
我们在工作中,周期性的定时任务会经常用到,比如系统文件的定时备份、日志的定时清理等。crontab是Linux系统中设置周期性计划任务的命令,crond命令会每分钟定期检查是否有要执行的任务,如果有要执行的任务便会自动执行。
crontab命令
语法格式
crontab [-u user] -[ler]
参数选项
-l:列出所有任务-e:编辑任务-r:移除任务-u user:仅root可运行,为指定用户管理cron任务
编辑计划任务
编辑计划任务其实就是编辑一个计划任务的文件,文件的一行设置一个计划任务。
crontab -e
每行的格式如下:
# .---------------- minute 分钟 (0-59)
# | .------------- hour 时 (0-23)
# | | .---------- day of month 日 (1-31)
# | | | .------- month 月 (1-12)
# | | | | .---- day of week 周 (0-7) (其中0和7都代表星期天)
# | | | | | .----要执行的命令
| | | | | |
* * * * * user command
例如,设置每分钟将当前时间保存到/home/date_test.txt文件的任务:
*/1 * * * * date > /home/text.txt
一分钟之后,打开/home/text.txt文件,如果有看到时间就说明设置成功了。
除了*号和/符号还有其它符号来设定时间:
| 符号 | 含义 |
|---|---|
| *(星号) | 不限制,什么时候都可以 |
| ,(逗号) | 如果有多个时段,用逗号分开,例如每小时的30分和45分执行命令30,45 * * * * date > /home/text.txt |
| -(减号) | 一个时间段内执行任务,例如每小时的30-45分执行命令30-45 * * * * date > /home/text.txt |
| /(斜线) | 每隔多少时间就执行一次命令,例如上例*/1 * * * * date > /home/text.txt表示每隔1分钟执行一下命令 |
注意: 用crontab -e编辑的周期性计划任务存放在/var/spool/cron/用户名文件中,例如root用户的在/var/spool/cron/root文件中, 但最好不要直接编辑该文件。
查看任务列表
查看所有计划任务列表:
crontab -l
# */1 * * * * date > /home/test.txt
# 30-45 * * * * date > /home/test.txt
查看指定用户的计划任务列表:
crontab -u username -l
删除计划任务
删除所有计划任务:
crontab -r
删除指定用户的计划任务:
crontab -r -u username
但是并不建议使用这个命令,这个命令会删除系统上的所有计划任务,有可能会误删不应该删除的任务,建议通过crontab -e命令编辑,直接删除不需要的那一行任务即可。
字符串指定任务执行时间
Cron支持使用特定的字符串,更快速的创建命令:
@hourly:每小时运行一次@midnight:每天运行一次@daily:午夜运行一次@weekly:每周运行一次@monthly:每月运行一次@annually:每年运行一次@yearly:每年运行一次@reboot:每次启动时运行一次
原创不易,如果小伙伴们觉得有帮助,麻烦点个赞再走呗~
最后,感谢女朋友在工作和生活中的包容、理解与支持 !