
本文共 1849 字,大约阅读时间需要 6 分钟。
在介绍 crontab
命令之前,我们首先要了解 crond
服务。crond
是一个Linux下用来周期执行任务或等待事件处理的守护进程,类似于Windows中的计划任务。它在系统启动时自动运行,并每分钟检查一次任务列表。
启动和管理 crond
服务
默认情况下,crond
服务在安装Linux操作系统后就会启用。要启动或重启 crond
服务,可以使用以下命令:
# 启动 crond[root@localhost ~]# systemctl start crond# 重启 crond[root@localhost ~]# systemctl restart crond# 设置 crond 服务为开机自启动[root@localhost ~]# systemctl enable crond
当然,在大多数Linux发行版中,crond
服务通常会自启动,并且默认开机时启用。
了解 crontab
命令的使用
crontab
命令用于管理周期任务,它类似于 at
命令,但比 at
命令更灵活,支持更复杂的定时规则。
访问和使用 crontab
每个用户都可以用自己所属的身份使用 crontab
命令,通过以下命令进入编辑器:
[root@localhost ~]# crontab -e
如果不带 -e
选项,crontab
会直接使用当前用户的任务文件。
关于访问控制
crontab
命令的访问受限于 /etc/cron.allow
和 /etc/cron.deny
两个文件。默认情况下,只有 root 用户可以使用 crontab
命令。在 /etc/cron.allow
中写入允许的用户时,只有这些用户才能使用 crontab
。如果没有 /etc/cron.allow
文件,且用户不在 /etc/cron.deny
中,则默认可以使用 crontab
。
crontab 定时任务的格式
crontab
定时任务文件的格式采用五个字段,分别对应分钟、小时、天、月、周(可选)和执行时的命令。格式如下:
_auditジョ Stations Minutes Hours Days Months Days_of_week Command* * * * * user command
各字段的意义如下:
字段 | 说明 | 范围 |
---|---|---|
第一个 * | 分钟(0-59) | any minute |
第二个 * | 小时(0-23) | any hour |
第三个 * | 天数(1-31) | any day |
第四个 * | 月份(1-12)或月份缩写(如jan,feb) | any month |
第五个 * | 星期(0-7,0和7代表星期日) | any day of week |
后续部分 | 指定要执行的命令,用户身份及命令路径 |
常用符号:
*
:表示所有值。,
:指定多个值。-
:表示范围。/
:表示间隔。
例如:
*/5
表示每隔5分钟。1-5
表示在1到5之间的值。0
表示 指定时间点。
定时任务实例
*/5 * * * * /bin/echo "11" > /tmp/test
- 每周二的凌晨5:05重启系统:
- 每月1日、10日、15日的凌晨3:30执行日志备份脚本:
5 5 * * 2 /sbin/shutdown -r now
30 3 1,10,15 * * /root/sh/autobak.sh
执行命令中需要注意的事项:
-命令既可以直接输入命令,也可以指向脚本。建议使用绝对路径,以避免权限问题。
使用 cron
和 anacron
cron
适用于24小时运行的机器,而 anacron
则针对每天或每周关机的机器。
需要注意 cron
和 anacron
会有冲突,安装 anacron
时会替代 cron
服务。
配置 crontab
又怎么办
在 /etc/crontab
文件中可以配置系统级定时任务,需要使用 root
用户身份编辑。
用哪种方法更好
如果只需要为用户设置个人任务,可以使用 crontab -e
。而如果需要设置系统级任务,可以直接编辑 /etc/crontab
并重新加载服务。
[root@localhost ~]# visudo /etc/crontab
在编辑文件后,守护进程 crond
会自动读取新的任务列表。
通过以上方法,可以灵活地管理Linux服务器上的定时任务。
发表评论
最新留言
关于作者
