1. 开启定时服务
如果想要在Linux操作系统中执行定时任务需要先保证`crond`服务是开启的(默认是开启的)
```shell
查看crond服务状态
service crond status
启动crond服务(如果已经启动可以不用设置)
systemctl start crond
停止crond服务
systemctl stop crond
编辑指定用户的定时任务
crontab -u 用户名 -e
查看指定用户下所有的定时任务
crontab -u 用户名 -l
```
通过制定、编辑和开启定时任务。添加定时任何的格式是: `时间 需要执行的任务`
```shell
# 创建一个完整的定时任务,需要确定时间和任务
# 1.时间
.---------------- 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
| | | | |
* * * * * 分别是分 时 日 月 (周的前三个字母)
* * * * * - 每分钟执行一次任务(每隔一分钟)
*/1 * * * * - 每分钟执行一次任务(每隔一分钟)
*/2 * * * * - 每2分钟执行一次任务(每隔2分钟)
* */1 * * * - 每隔1小时
* * */1 * * - 每隔1天
* * * */2 * - 每隔两个月
* * * * fri - 每周五执行任务
* * * 3 fri - 3月的星期五执行任务
8 * * * * - 每次分钟值为8的时候执行任务
30 17 * * fri - 每周五的17点30分执行任务
30 * * * * - 时间点到30分的时候做
0 * * * * - 时间点到整点的时候执行任务
30 2 * * * - 时间到 02:30 的时候执行任务
0 12 28 * * - 每月23号12:00执行任务
0 12 23 * *
0 0 5 2 * - 每年的2月5日执行任务
# 2.任务
写Linux指令, 指令如果有结果,结果看不到
* * * * * sh demo.sh
* * * * * echo aaa >> /home/test.txt - 每隔一分钟往home下面的test.txt中添加一行aaa
* */1 * * * python3 /home/test.py - 每隔1小时运行一次test.py中的python程序
```
实际操作:(定时每分钟打印一个hello)
1. 先写一个python文件, 内容是输出一个 hello
2. 然后运行它, python3 /root/code/phello.py (输出结果)
3. 将这个结果重新定向到reshello.txt: python3 /root/code/phello.py >> /root/code/reshello.txt(这一步可以不要,只是为了检测你的重定向是否成功)
注意:1.所有的路径要写绝对路径,因为在定时操作时候不知道在哪运行,会不显示结果
2.这里重定向是为了将结果放到一个空文件,为了后续定时操作方便观测是否每分钟都会输出一个hello。
4. crontab -u 用户名 -e : crontab -u root -e (e for edit)编辑指定用户的定时任务(会打开一个窗口) 删除为 -r
5. * * * * * python3 /root/code/phello.py >> /root/code/reshello.txt (定时任务具体干的事情)
分析:5个* 分别对应的是 分 、 时、日、月、周(mon、tue、wed), 这里的代码意思是每隔一分钟运行一次phello.py 文件输出一次phello,然后将其重新定向到reshello.txt 中。