cron是一个基于时间的作业调度器,可以在指定的时间运行命令。
打开终端并编辑cron任务
crontab -e
定时任务
# 每天20点30分执行程序 30 20 * * * /home/user/my_program # 每天15点30分关闭程序 30 15 * * * pkill my_program
定时在tmux会话中运行
已有会话中运行
0 16 * * * tmux send-keys -t mysession '/path/to/your/script.sh' C-m
0 16 * * * tmux new-session -d -s mysession '/path/to/your/script.sh'
crontab
是 Unix 和类 Unix 操作系统上用于管理定时任务(也称为计划任务)的命令。以下是 crontab
的基本用法和常见的例子:
查看当前用户的 crontab 文件:
crontab -l
编辑当前用户的 crontab 文件:
crontab -e
这将打开一个编辑器,让你可以编辑定时任务。
删除当前用户的 crontab 文件:
crontab -r
为指定用户设置 crontab 文件(需要超级用户权限):
sudo crontab -u username -e
补充:
更改默认编辑器
如果你想更改默认编辑器(在之后运行 crontab -e 时生效),可以使用以下命令来选择默认的编辑器:
select-editor
crontab 文件的每一行表示一个定时任务,格式如下:
* * * * * command
每个星号的位置分别表示:
minute
(分钟):0 - 59hour
(小时):0 - 23day of month
(日期):1 - 31month
(月份):1 - 12day of week
(星期几):0 - 7(0 和 7 都表示星期天)例如,以下定时任务将在每天凌晨 2 点运行:
0 2 * * * /path/to/command
每分钟都输出字符串到文件
* * * * * echo "This is a message at $(date)" >> /home/user/message.log
每天凌晨 3 点运行一个脚本:
0 3 * * * /home/user/backup.sh
每隔 5 分钟运行一次脚本:
*/5 * * * * /home/user/check_status.sh
每周一到周五的上午 8 点运行:
0 8 * * 1-5 /home/user/weekday_task.sh
每月的第一天凌晨 1 点运行:
0 1 1 * * /home/user/monthly_report.sh
每周六和周日的中午 12 点运行:
0 12 * * 6,7 /home/user/weekend_task.sh
你可以在 crontab 文件的顶部定义环境变量,例如:
SHELL=/bin/bash PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin MAILTO=user@example.com # 定时任务 0 2 * * * /home/user/backup.sh
上面的 MAILTO
变量会将定时任务的输出结果通过邮件发送给指定的用户。
crontab
是一个强大的工具,可以帮助你自动化定时任务。在编辑 crontab 文件时,确保格式正确并且任务路径和权限设置正确,以确保任务按预期运行。