一、crontab 命令简介
crontab
是 Linux 系统中用于调度任务的工具,它允许用户按照预定的时间自动运行脚本或命令。通过 crontab
命令可以添加、修改、列出和删除用户的(周期性)定时任务。
守护进程:corn
● cron.service - Regular background program processing daemon
Loaded: loaded (/lib/systemd/system/cron.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2024-08-14 15:09:39 UTC; 4 weeks 0 days ago
Docs: man:cron(8)
Main PID: 593 (cron)
Tasks: 1 (limit: 2219)
Memory: 3.0M
CPU: 31.463s
CGroup: /system.slice/cron.service
└─593 /usr/sbin/cron -f -P
二、crontab 命令参数
crontab [选项] [文件]
选项:
crontab [-u user] -e # 编辑 crontab crontab [-u user] -l # 列出 crontab crontab [-u user] -r # 删除 crontab crontab [-u user] -i -r # 删除前提示确认
参数:
-
file
:指定 crontab 文件。
-
crontab 表位置:/var/spool/cron/crontabs
root@ubuntu:/var/spool/cron/crontabs# ls
soulio
每个设置了 cron 任务的用户在此目录下拥有一个同名文件。
查看用户 soulio 的 cron 任务:
root@ubuntu:/var/spool/cron/crontabs# cat soulio
0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
编辑文件:使用 crontab -e
编辑当前用户的 crontab。你也可以切换到 root 用户,使用 vim
编辑任意用户的 crontab。
格式:文件每行代表一个 cron 作业,每行的格式为 分钟 小时 天 月 星期 命令
,例如:
0 5 * * 1 tar -zcf /var/backups/home.tar.gz /home/
含义:每个星期一的凌晨 5 点 0 分,将 /home/
目录打包并压缩成名为 home.tar.gz
的文件,并将该文件存储在 /var/backups/
目录下。
时间调度可以用[0-9]表示具体的时间,也可以用符号表示范围:
-
*
:匹配该字段的所有值。 -
,
:用于指定值的列表,例如,1,2,3
代表第 1、2、3 分钟。 -
-
:用于指定值的范围,例如,1-5
代表第 1 到第 5 分钟。 -
/
:用于指定值的步长,例如,*/2
代表每两分钟。
星号 *
处在不同位置时的含义:
- 分钟(0-59)
- 小时(0-23)
- 日(1-31)
- 月(1-12)
- 星期几(0-7,其中 0 和 7 都代表星期天)
更多细节(不用记,先收藏,用时查)
- 计划任务可以包含多个命令,用
;
分割。 - 计划任务可以使用
环境变量
,例如 HOME 和 PATH。 - 计划任务可以使用
username
和password
来指定执行计划任务的用户和密码。 - 计划任务可以使用
output
和error
来指定输出和错误文件。 - 计划任务可以使用
env
命令来设置环境变量。 - 计划任务可以使用
nice
命令来设置执行优先级。 - 计划任务可以使用 ionice 命令来 nice I/O 设置 input/output 优先级。
三、crontab 命令示例
1.编辑 crontab 表
crontab -e
2.编辑任务
* * * * * /usr/bin/command
# 每小时执行一次命令
0 * * * * /usr/bin/command
# 每天凌晨1点执行命令
0 1 * * * /usr/bin/command
# 每周一凌晨1点执行命令
0 1 * * 1 /usr/bin/command
# 每月的第一天凌晨1点执行命令
0 1 1 * * /usr/bin/command
# 每季度的第一天凌晨1点执行命令
0 1 1 */3 * /usr/bin/command
# 每个工作日的上午9点执行命令
0 9 * * 1-5 /usr/bin/command
# 每5分钟执行一次命令
*/5 * * * * /usr/bin/command
# 每两小时执行一次命令
0 */2 * * * /usr/bin/command
# 每星期六和星期日的凌晨1点执行命令
0 1 * * 6,0 /usr/bin/command
# 每小时的第5分钟和第10分钟执行命令
5,10 * * * * /usr/bin/command
# 每天的凌晨2点到早上6点,每半小时执行一次命令
*/30 2-6 * * * /usr/bin/command
3. 查看当前用户的 crontab
crontab -l
4. 删除当前用户的 crontab
crontab -r
serv00 保活案例
serv00 是一个公益虚拟主机,我们希望主机重启后能够自动执行脚本,启用我们的程序。
1.进入 crontab 表
crontab -e
2.添加用户任务:系统重启后自动执行指定脚本
@reboot ~/script.sh
在脚本中启动你的程序。
结尾 tips
crontab 有个兄弟命令 at :执行一次性定时任务。
本文详解介绍crontab命令的用法
本文共 738 个字数,平均阅读时长 ≈ 2分钟
评论 (0)