Linux利用crond添加定时任务
crond 是linux用来定期执行程序的命令。当安装完成操作系统之后,默认便会启动此任务调度命令。crond命令每分钟会定期检查是否有要执行的工作,如果有要执行的工作便会自动执行该工作。
1 查看crond服务状态:
[root@localhost ~]# systemctl status crond.service
● crond.service - Command Scheduler
Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2022-03-23 10:41:37 CST; 59min ago
Main PID: 21686 (crond)
Tasks: 1
Memory: 1.0M
CGroup: /system.slice/crond.service
└─21686 /usr/sbin/crond -n
3月 23 11:01:02 localhost.localdomain CROND[24590]: (root) CMDOUT (/etc/cron.hourly/sm3-whitelist:)
3月 23 11:01:02 localhost.localdomain CROND[24590]: (root) CMDOUT ()
3月 23 11:01:02 localhost.localdomain CROND[24590]: (root) CMDOUT (/etc/cron.hourly/sm3-whitelist: 第 3 行:cd: /var/backups: 没有那个文件或目录)
3月 23 11:32:33 localhost.localdomain systemd[1]: Reloading Command Scheduler.
3月 23 11:32:33 localhost.localdomain systemd[1]: Reloaded Command Scheduler.
3月 23 11:33:01 localhost.localdomain crond[21686]: (CRON) INFO (running with inotify support)
3月 23 11:35:01 localhost.localdomain crond[21686]: (root) RELOAD (/var/spool/cron/root)
3月 23 11:36:08 localhost.localdomain systemd[1]: Reloading Command Scheduler.
3月 23 11:36:08 localhost.localdomain systemd[1]: Reloaded Command Scheduler.
3月 23 11:37:01 localhost.localdomain crond[21686]: (CRON) INFO (running with inotify support)
可以看到crond服务是自启动(enabled),且正在运行的(active)
2 配置
2.1 全局用户配置
配置文件:/etc/crontab,直接vi等编辑就可以。
2.2 个人用户配置(临时配置)
- 加任务:
crontab -e
0 */1 * * * command
0 */2 * * * command - 查询任务是否加了:
crontab -l
0 */1 * * * command
0 */2 * * * command
2.3 配置格式
* * * * * command
分钟(0-59) 小时(0-23) 日期(1-31) 月份(1-12) 星期(0-6,0代表星期天) 命令
第1列表示分钟1~59 每分钟用*或者 */1表示,每5分钟(*/5)
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列表示月份1~12
第5列标识号星期0~6(0表示星期天)
第6列要运行的命令
相关参数详细说明:
星号(*)可以用来代表所有有效的值。譬如,月份值中的星号意味着在满足其它制约条件后每月都执行该命令。
整数间的短线(-)指定一个整数范围。譬如,1-4 意味着整数 1、2、3、4。
用逗号(,)隔开的一系列值指定一个列表。譬如,3, 4, 6, 8 标明这四个指定的整数。
正斜线(/)可以用来指定间隔频率。在范围后加上 / 意味着在范围内可以跳过 integer。譬如,0-59/2 可以用来在分钟字段定义每两分钟。间隔频率值还可以和星号一起使用。例如,*/3 的值可以用在月份字段中表示每三个月运行一次任务。
开头为井号(#)的行是注释,不会被处理。
2.3.1 配置实例
- 每隔1个小时执行一次 ls
0 */1 * * * ls - 每隔2个小时执行一次 ls
0 */2 * * * ls - 每隔3个小时执行一次 ls
0 */3 * * * ls - 每隔4个小时执行一次 ls
0 */4 * * * ls - 每隔10天执行一次 ls
0 0 */10 * * ls - 每天1点执行 ls
0 1 * * * ls
3 命令
3.1 crontab命令
crontab -u //设定某个用户的cron服务,一般root用户在执行这个命令的时候需要此参数
crontab -l //列出某个用户cron服务的详细内容
crontab -r //删除每个用户的cron服务
crontab -e //编辑某个用户的cron服务
例1:root查看自己的cron设置:crontab -u root -l
例2:root删除fred的cron设置:crontab -u fred -r
3.2 任务调度执行结果的转向:
例1:每天5:30执行ls命令,并把结果输出到/jp/test文件中
30 5 * * * ls >/jp/test 2>&1
注:2>&1 表示执行结果及错误信息。
3.3 crond服务控制命令
/sbin/service crond start //启动服务
/sbin/service crond stop //关闭服务
/sbin/service crond restart //重启服务
/sbin/service crond reload //重新载入配置
/sbin/service crond status //查看服务状态
3.4 查看crond 执行日志
tail -200f /var/log/cron