1. cron定时任务
linux 中用于定时执行某些特定能操作, 如定时备份文件, 定时更新/删除文件, 都会使用到定时任务.
- cron 是服务命令 crond 是用来执行执行服务的守护进程, crond 每分钟会检查是否有需要执行的任务.
- crontab 则是crond 定时检查的文件, 所有的定时任务都是写在了 crontab 文件中,
2. crontab 文件格式
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
---------------------
# Example of job definition:
# .---------------- 分钟, 设置每小时的第N分钟
# | .------------- 第 N 小时
# | | .---------- 第 N 天
# | | | .------- 第 N 月
# | | | | .---- 每周的 第N天
# | | | | |
# * * * * * [用户名] 需要执行的命令
## 上面的时间中
# *: 表示所有, 例如 * 1 * * * 表示每天的第一个小时 的每一分钟
# ,: 分割可以指定多个如 1 1,2,3,4 * * * : 表示每天的1,2,3,4 小时的第一分钟执行
# -: 指定范围, 如: 1 1 * * 1-5 : 表示每周1-5 的1点1分执行
# /: 指定间隔, 如 0 0 /5 * * : 表示每个5天 的零点执行1次
3. crontab 命令操作
-
命令格式
crontab [-u user] file
-
常用选项
-e: 编辑有个用户的crontab , 如果不指定crontab 则编辑当前用户的 crontab
-l: 显示某个用户的 crontab
-r: 删除某个用户的 crontab , 用户的crontab 存储在 /var/spool/cron 目录中, 建议禁止使用该选项, 而是使用 crontab -e 之后从内部编辑删除.
-i: 删除时会让用户确认
4. 示例
- 每分钟执行一次命令
[root@node10009 ~]# crontab -l
* * * * * echo "hello world" > /root/1.txt
[root@node10009 ~]# ls
a anaconda-ks.cfg
[root@node10009 ~]# date
Thu Nov 22 17:14:45 CST 2018
[root@node10009 ~]# date
Thu Nov 22 17:15:22 CST 2018
[root@node10009 ~]# ls
1.txt a anaconda-ks.cfg
[root@node10009 ~]# cat 1.txt
hello world
[root@node10009 ~]#
5. 常用设置
0 3 * * * command # 每天凌晨3点执行, 常用于备份,更新
0 9-18 * * 1-5 command # 每周1 到周五 的 9点到下午6点 的小时执行一次
END