10.23 linux任务计划cron

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
  • 在须要备份的时候,直接把这个文件,或者目录拷贝下便可
相关文章
相关标签/搜索