Linux_Crond服务管理
Linux的Crond 服务管理
Cron 是 Linux 系统中用于在后台无需人工干预的情况下,按照预定时间自动执行脚本或命令的守护进程
服务与命令管理
常用命令速查
| 功能分类 | 命令 | 说明 |
|---|---|---|
| 服务控制 | systemctl start crond |
启动服务 |
systemctl status crond |
查看服务运行状态 | |
systemctl enable crond |
设置开机自启 | |
| 任务管理 | crontab -e |
编辑当前用户的定时任务 |
crontab -l |
查看当前用户的定时任务 | |
crontab -r |
删除当前用户的所有任务(高危操作,无确认提示) | |
| Root 管理 | crontab -u <user> -e |
编辑指定用户的任务 |
| 权限控制 | /etc/cron.allow |
白名单:仅允许该文件中的用户使用 cron |
/etc/cron.deny |
黑名单:禁止该文件中的用户使用 cron |
Crond 任务语法详解
基础格式
* * * * * /path/to/command
字段解析
| 字段 | 含义 | 取值范围 | 特殊字符 |
|---|---|---|---|
| 1 | 分钟 | 0-59 | * (任意), , (枚举), - (范围), / (间隔) |
| 2 | 小时 | 0-23 | 同上 |
| 3 | 日期 | 1-31 | 同上 |
| 4 | 月份 | 1-12 | 同上 |
| 5 | 星期 | 0-7 (0和7均为周日) | 同上 |
| 6 | 命令 | 脚本或命令的绝对路径 | 使用绝对路径 |
特殊字符用法示例
- 逗号:用于枚举多个时间点,例如
30 2 * * *表示每天的 2:30 执行。 - 星号:代表任意值,例如
* * * * *表示每分钟执行。 - 斜杠:用于指定间隔频率,例如
*/5 * * * *表示每隔 5 分钟执行。 - 横杠:用于指定一个范围,例如
0 9-17 * * 1-5表示周一至周五的 9:00 到 17:00 的整点执行。
实践
创建文件目录Test
新建一个test.txt文件
设置定时任务自动同步
server1与server2同步该文件
#注意 本实践基于Linux的OpenSSH服务案例三
#设置定时任务
#定义VIM为默认编译器
export EDITOR=vim
#设置定时任务
crontab -e
* * * * * rsync -av Test server2:/root
#查看定时任务
crontab -l
* * * * * rsync -av Test server2:/root
#创建文件
touch Test/test.txt
#查看日志
tail -f /var/log/cron
##返回结果如下
Apr 7 20:04:01 centos7 CROND[19266]: (root) CMD (rsync -av Test server2:/root)
Apr 7 20:05:01 centos7 CROND[19281]: (root) CMD (rsync -av Test server2:/root)
Apr 7 20:05:19 centos7 crontab[19295]: (root) BEGIN EDIT (root)
Apr 7 20:05:24 centos7 crontab[19295]: (root) END EDIT (root)
Apr 7 20:05:38 centos7 crontab[19297]: (root) BEGIN EDIT (root)
Apr 7 20:05:47 centos7 crontab[19297]: (root) END EDIT (root)
Apr 7 20:06:01 centos7 CROND[19300]: (root) CMD (rsync -av Test server2:/root)
Apr 7 20:06:55 centos7 crontab[19315]: (root) LIST (root)
Apr 7 20:07:01 centos7 CROND[19317]: (root) CMD (rsync -av Test server2:/root)
Apr 7 20:08:01 centos7 CROND[19332]: (root) CMD (rsync -av Test server2:/root)
#在对方服务器查看
ssh server2 ls Test/test.txt
##返回结果如下
Test/test.txt