安装
通常 ubuntu 下自带 cron,如果没有也可以通过以下命令进行安装:1
apt-get install cron
若已经安装,输入以下命令判断 cron 服务是否启动:1
pgrep cron
如果有 pid (一串数字)输出则说明 cron 服务已经启动,没有任何输出说明需要手动启动 cron 服务。
启动 cron 服务:1
service cron start
管理任务计划
cron 的所有任务计划都记录在 crontab 任务计划文件中,通过 crontab 命令对该任务文件进行管理。
1 | 参数 说明 |
使用示例:1
2
3
4
5$ crontab -u foo -e #编辑用户 foo 的计划任务文件
$ crontab -e #编辑当前用户的计划任务文件
$ crontab -u foo -l #显示用户 foo 的计划任务文件
$ crontab -l #显示当前用户的计划任务文件
$ crontab -r #删除当前用户的计划任务文件
编辑任务计划
初次使用 crontab -e,可能需要选择编辑器,输入编辑器序号点击回车后进入计划任务文件编辑模式。若直接进入编辑模式忽略以上内容。
进入编辑模式后,按照指定格式添加任务计划。
任务计划的语法格式如下:1
2m h dom mon dow command
0-59 0-23 1-31 1-12 0-7 command
m: 表示分钟
h: 表示小时
dom: 表示日期
mon: 表示月份
dow: 表示星期
command: 预执行的命令
另外需要使用一些特殊符号实现灵活的配置:
- 代表所有值
/ 代表“每”
- 代表范围
, 分割数字
任务示例如下:1
2
3
4
5
6
7
8
9
10
11
12
13## 指定具体执行时间
2 * * * * ls #每个小时的第2分钟执行一次 ls 命令
30 7 * * * ls #每天7:30执行一次 ls 命令
30 20 * * 2 ls #每周二,20:30执行一次 ls 命令(0和7表示星期天)
## 指定间隔时间
*/2 * * * * ls #每隔2分钟执行一次 ls 命令
## 指定时间段
30 7 3-6 * * ls #每个月的3,4,5,6号的7:30分各执行一次 ls 命令
## 指定多个时间
30 7 3,6 * * ls #每月的3号和6号的7:30分各执行一次 ls 命令
另外,使用 run-parts 可以运行指定目录下所有的脚本(注意脚本必须加上 “#!/bin/bash”,否则 run-parts 会调用失败).1
30 7 * * * run-parts /home #每天7:30运行 /home 目录下的所有脚本
按照指定格式添加任务,保存后,任务生效。
下面是一个实际的计划任务文件,包含系统自带注释和一个每两分钟执行一次输出字符串 ”Hello World“ 到 /home 目录下 cron_test 文件的计划任务。
1 | # Edit this file to introduce tasks to be run by cron. |
常见规则1
2
3
4
5
6
7
8
9
10
11每五分钟执行 */5 * * * *
每小时执行 0 * * * *
每天执行 0 0 * * *
每周执行 0 0 * * 0
每月执行 0 0 1 * *
每年执行 0 0 1 1 *
nohup和&
1 | nohup python scripts/listen_rspd_data_send_email.py >nohup.out 2>&1 & |