centos7(linux)定时计划任务-crontab、crond 作者:马育民 • 2021-12-24 19:17 • 阅读:10140 # 说明 crond是linux下执行计划任务的程序,与windows下的计划任务类似 - 可以定时执行某个程序 - 也可以周期性执行某个程序 # 安装 ``` yum install crontabs ``` # crond crond是一个守护进程 ### 相关命令 ``` systemctl start crond #启动服务 systemctl stop crond #停止服务 systemctl restart crond #重启服务 systemctl reload crond #重载配置文件 systemctl status crond #查看状态 ``` 或者 ``` service crond start #启动服务 service crond stop #关闭服务 service crond restart #重启服务 service crond reload #重新载入配置 service crond status #查看crontab服务状态 ``` ### 设置开机启动 ``` systemctl enable crond.service ``` ### 查看是否开机启动 列出所有已经安装的服务及状态 ``` systemctl list-unit-files ``` # crontab crontab 管理定时任务,在固定的间隔时间执行 `系统指令` 或 `shell` 脚本 时间间隔的单位可以是:分钟、小时、日、月、周及以上的任意组合 ### 常用命令 ``` crontab -e 编辑crontab文件(编辑定时任务) ``` 其他: ``` crontab -u 设定某个用户的cron服务 crontab -l 显示crontab文件(显示已设置的定时任务) crontab -r 删除crontab文件(删除定时任务) crontab -i 删除crontab文件提醒用户(删除定时任务) ``` # 定时任务格式 ``` .---------------- minute (0 - 59) | .------------- hour (0 - 23) | | .---------- day of month (1 - 31) | | | .------- month (1 - 12) OR jan,feb,mar,apr ... | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat | | | | | * * * * * user-name command to be executed ``` **解释:** 用户的定时任务分 **6段**,如下: - 第1列表示分钟,1~59 - 第2列表示小时,1~23(0表示0点) - 第3列表示日期,1~31 - 第4列表示月份,1~12 - 第5列标识号星期,0~6(0表示星期天) - 第6列要运行的命令 关于定时时间的详细用法,点击 [链接](https://www.malaoshi.top/show_1IX2TiES9yTg.html "链接") # 例子 每分钟执行一次 sh 脚本 ### 创建脚本 创建 `.sh` 文件,该文件内是要执行的命令 ``` vim /program/timer.sh ``` 内如如下: ``` echo "hello world" >> /test_timer.log date >> /test_timer.log ``` 执行该脚本时,会在 `/test_timer.log` 文件中增加 `hello world` 和 `当前时间`(如果没有该文件会自动创建) 增加可执行权限: ``` chmod 777 /program/timer.sh ``` 测试: ``` /program/timer.sh ``` 查看是否会生成 `/test_timer.log` 文件,以及内容是否正确 ### 设置定时 执行下面命令: ``` crontab -e ``` 增加下面内容: ``` * * * * * /program/timer.sh ``` 表示每分钟都会执行 `/program/timer.sh` 脚本 然后 `ESC`-> `:`->`wq` **保存退出**,提示如下: ``` crontab: installing new crontab ``` 表示添加一个新的定时任务 **注意:** 必须要 **保存退出** ### 测试 执行下面命令: ``` tail -f /test_timer.log ``` **每隔一分钟** 就会打印 `hello world` 和 `当前时间`,如下: ``` hello world 2021年 12月 26日 星期日 18:30:01 CST hello world 2021年 12月 26日 星期日 18:31:01 CST hello world 2021年 12月 26日 星期日 18:32:01 CST hello world 2021年 12月 26日 星期日 18:33:01 CST ``` 原文出处:http://malaoshi.top/show_1IX2Ti2uaI38.html