Linux任务计划
- crontab -u、-e、-l、-r
- 格式:分 时 日 月 周 user command
- 文件/var/spool/cron/username
- 分范围0-59,时范围0-23,日范围1-31,月范围1-12,周1-7
- 可用格式1-5表示一个范围1到5
- 可用格式1,2,3表示1或者2或者3
- 可用格式*/2表示被2整除的数字,好比小时,那就是每隔2小时
- 要保证服务是启动状态
- systemctl start crond.service
crontab命令
- crontab -e //编辑
- crontab -l //列出 -crontab -r //删除
- crontab -u username -l //指定用户
任务计划
- crontab -e //编辑
- 在linux系统中,系统计划是必不可少的,好比备份数据,重启服务等
- 操做过程,多是一个脚本,有多是一个单独的命令,在特定的时间去执行它,因此任务计划是不可缺乏的
- 在windows中都是使用的我的电脑,因此任务计划不多见,几乎用不到
linux中计划的配置文件
- cat /etc/crontab //查看任务计划的配置文件
- 文件中会定义几个变量
- SHELL=/bin/bash
- PATH环境变量,它命令的路径
- MAILTO发邮件给谁
[root@hanfeng ~]# cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# For details see man 4 crontabs
# 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 //星期,0或7都表示周日,也能够写成英文的简写
# | | | | |
# * * * * * user-name command to be executed //用户,不写用户就是root 最后一列,是你要执行的命令
[root@hanfeng ~]#
- crontab -e 进入到crontab的配置文件中,用法和vim同样
- 按 i 进入编辑模式
- 分钟,小时,日,月,星期,而后后面跟具体的命令
- 凌晨3点去执行,* 表示全部的意思
天天凌晨三点,执行123.sh脚本文件,正确的和错误的日志都输出到123.log文件中
0 3 * * * /bin/bash /usr/local/sbin/123.sh >/tmp/123.log 2>/tmp/123.log
由于是天天三点执行脚本,因此能够写成追加,天天都去记录日志
0 3 * * * /bin/bash /usr/local/sbin/123.sh >>/tmp/123.log 2>>/tmp/123.log
若想1-10号,双月去执行该脚本,后面就不在执行了——>只要 被2 整除,就符合条件
0 3 1-10 */2 * /bin/bash /usr/local/sbin/123.sh >>/tmp/123.log 2>>/tmp/123.log
只要周2和周5执行该文件
0 3 1-10 */2 2,5 /bin/bash /usr/local/sbin/123.sh >>/tmp/123.log 2>>/tmp/123.log
- 为何没有年份?
- 用星期肯定你的惟一性,好比说今年的6月18号和明年的6月18号的星期确定是不一样的,这样就能够肯定某一天的惟一性
启动crond服务
- 若想要这个任务正常使用,还须要去启动crond服务
- systemctl start crond.service //启动crond服务
- 若想检查服务是否成功启动,
- 方法一:可以使用ps aux |grep cron 命令查看
- 方法二:使用systemctl start crond 查看状态
- 如果 绿色 ,则表示该服务已经启动了
- 如果该服务已经停掉了,则不会有颜色
任务计划不执行的缘由分析
- 在写了一个计划,放入到配置文件中,但就是不执行
- 不执行的缘由颇有多是你写的脚本里面,没有使用 绝对路径 的缘由致使不执行
- 由于颇有可能,你在使用的命令不在PATH里面,因此要么将命令写一个绝对路径,要么将命令的路径加入到PATH变量里面去
- 建议:在写一个脚本的时候,都要写追加一个日志,这样能够保证这个任务有据可查,再不执行的时候,查看错误日志便可
任务计划备份
- crontab -l //列出
- crontab文件存在位置/var/spool/cron/username
- 在须要备份的时候,直接把这个文件,或者目录拷贝下便可