1、crontab
Crontab的服务进程名为crond,英文意为周期任务。顾名思义,crontab在Linux主要用于周期定时任务管理。通常安装操作系统后,默认已启动crond服务。crontab可理解为cron_table,表示cron的任务列表。类似crontab的工具还有at和anacrontab,但具体使用场景不同。
不同的系统,叫法可能不一样,在Ubuntu下,服务名叫cron。
2、操作crontab
安装(apt、yum等)好了以后
$ crontab -e
* * * * * date >> /tmp/date.txt
- Edit the crontab file for the current user:
crontab -e
- Edit the crontab file for a specific user:
sudo crontab -e -u {{user}}
- Replace the current crontab with the contents of the given file:
crontab {{path/to/file}}
- View a list of existing cron jobs for current user:
crontab -l
- Remove all cron jobs for the current user:
crontab -r
- Sample job which runs at 10:00 every day (* means any value):
0 10 * * * {{command_to_execute}}
- Sample job which runs every minute on the 3rd of April:
* * 3 Apr * {{command_to_execute}}
- Sample job which runs a certain script at 02:30 every Friday:
30 2 * * Fri {{/absolute/path/to/script.sh}}
3、重点说明
# 计划任务定义的例子:
# .---------------- 分 (0 - 59)
# | .------------- 时 (0 - 23)
# | | .---------- 日 (1 - 31)
# | | | .------- 月 (1 - 12)
# | | | | .---- 星期 (0 - 7) (星期日可为0或7)
# | | | | |
# * * * * * 执行的命令
* * * * * date >> /time.txt 2>&1
定时任务的结构如上,前面是定义定时,后面是命令。
命令写法,差之毫厘,谬之千里:
# 每天3点执行
0 3 * * * command
# 三点的每分钟都执行
* 3 * * * command
内容需要重定向输出到指定文件,否则容易造成无法获取执行日志的问题。形如:
ls >> /tmp/ls.txt 2>&1