cron 定时任务怎么玩
·
cron
是一个在 Unix 和类 Unix 操作系统中用于定时执行任务的守护进程。通过 cron
,用户可以安排脚本或命令在特定的时间或周期性地自动运行。cron
使用一个称为 crontab
的文件来存储和管理这些定时任务。
1. crontab
文件格式
每个用户的 crontab
文件包含一系列的任务,每个任务占一行。每行的格式如下:
* * * * * command-to-be-executed
其中,五个星号分别表示:
- 分钟 (0 - 59)
- 小时 (0 - 23)
- 日期 (1 - 31)
- 月份 (1 - 12)
- 星期 (0 - 7) (0 和 7 都表示星期日)
每个字段可以使用以下特殊字符:
- ``:表示所有可能的值。
,
:表示多个值,例如1,3,5
。- ``:表示一个范围,例如
1-5
。 /
:表示步长,例如/2
表示每 2 个单位。
示例
每天凌晨 2 点执行脚本:
0 2 * * * /path/to/script.sh
每 5 分钟执行一次命令:
*/5 * * * * /path/to/command
每周一的上午 8 点执行任务:
0 8 * * 1 /path/to/task
2. crontab
命令
crontab
命令用于管理用户的 cron
任务。常用的子命令包括:
crontab -e
:编辑当前用户的crontab
文件。crontab -l
:列出当前用户的crontab
文件内容。crontab -r
:删除当前用户的crontab
文件。crontab -u username
:管理指定用户的crontab
文件(需要管理员权限)。
示例
编辑当前用户的
crontab
文件:crontab -e
列出当前用户的
cron
任务:crontab -l
删除当前用户的所有
cron
任务:crontab -r
3. 注意事项
cron
任务的执行环境可能与用户登录时的环境不同,因此建议在脚本中设置完整路径或明确的环境变量。cron
任务的输出默认会通过邮件发送给用户。如果需要重定向输出,可以使用>
或>>
:* * * * * /path/to/command > /path/to/logfile 2>&1
通过 cron
,用户可以轻松实现定时任务的自动化管理,非常适合用于备份、日志清理、系统维护等场景。
4. 脚本分享
定时删除无 tag 的 docker 镜像
#!/bin/bash ,[object Object], ,[object Object], ,[object Object], [object Object]
#定时每天0点执行 0 0 * * * /tmp/corn-rm-docker-images.sh
由于 seafile-cli 没有定时同步,我就采取定时复制 memos数据目录,然后让seafile-cli 同步复制后的文件夹,这样就达到了定时备份 memos 的数据。
# 由于memos的数据可能实时在变化,这里添加flock 0 0 * * * flock -xn /tmp/stargate1.lock -c 'cp /root/.memos/* /tmp/memos/'
flock
是一个用于文件锁定的命令行工具,通常用于确保同一时间只有一个实例的脚本或程序运行。flock
通过锁定文件来实现互斥访问,避免多个进程同时执行同一段代码。