zoukankan      html  css  js  c++  java
  • centos7 定时任务

    在centos上最常用的定时任务应该就是crontab了,在经过各种度娘之后有三种方式实现定时任务的方法,但是所用到的场景有所不同

    at    适合仅执行一次就结束的调度命令,需要启动一个后端的atd服务。
    crontab 需要启动一个服务crond才行,crond服务通过crontab命令实现
    anacron 无法周期性执行,只能以天为周期,但有个特点,在关机状态下未>执行的任务,下次开机时可以补上执行
    

    这里也直讲最常用的crontab,主要其他两种我也没看也没测试

    关于crontab和crond

    用到crontab那么就一定要知道crond,crond和crontab是不可分割的,crond我的理解是一个守护进程,或者说这才是我们定时任务的核心,crontab是一个编辑或者说是管理定时任务的工具
    crontab我的理解就是crond服务处于启动状态,这个服务会默认每分钟去检测是否有需要执行的定时任务,所以crond不能守护秒级定时任务。而这个任务的具体内容是通过crontab来管理的,至于具体管理方式后面继续讲

    关于crond和crondtab常用命令

    crond常用命令

    systemctl start   crond         启动服务
    systemctl stop    crond         停止服务
    systemctl restart crond         重启服务
    systemctl reload  crond         重载配置文件
    systemctl status  crond         查看状态
    

    crontab常用命令

    crontab -u 		设定某个用户的cron服务
    crontab -l		显示crontab文件(显示已设置的定时任务)
    crontab -e		编辑crontab文件(编辑定时任务)
    crontab -r		删除crontab文件(删除定时任务)
    crontab -i		删除crontab文件提醒用户(删除定时任务)

    当前有两种方式设置

    /etc/crontab和crontab -e,两种的区别

    1、格式不同

    前者

    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
    # |  |  |  |  |
    # *  *  *  *  * user-name  command to be executed

    如增加

    0 2 * * * root /root/mysqlbak/mysqlBackup.sh >> /root/mysqlbak/aa.txt

    表示每天2点执行,并把执行的输出到指定的文件

    后者

    #50 1 * * *  command

    2、使用范围
    修改/etc/crontab这种方法只有root用户能用,这种方法更加方便与直接直接给其他用户设置计划任务,而且还可以指定执行shell等等,
    crontab -e这种所有用户都可以使用,普通用户也只能为自己设置计划任务。然后自动写入/var/spool/cron/usename
    3.服务重启
    1. /etc/init.d/crond restart
    2. service crond restart

    1、crontab 会进行语法检查,vi 不会
    2、听说有些 os 的 crond 不会重读配置,所以用 service 重启

    crontab -e是某个用户的周期计划任务;/etc/crontab是系统的周期任务

    1. crontab -e 与 /etc/crontab 修改语法格式不一样,后者多一个 user 指定

    2. 不管用 crontab -e or 改 /etc/crontab 都不需要重新启动 crond 服务

    01 22 * * * /sbin/shutdown -h now
    执行的结果都是一样, 一般LINUX 都用shutdown -h now 也可以init 0
    init 0在UNIX用得比较多,

    关机需要root的身份在可以执行,
    lz可以选取方法操作

    方法1

    换到root 的身份
    su - root
    crontab -e (按a增加下)
    01 22 * * * /sbin/shutdown -h now   (或01 22 * * * /sbin/init 0)
    保存退出即可以

    方法2

    vi /etc/crontab 在里面插入
    01 22 * * * root   /sbin/shutdown -h now
    或 01 22 * * * root   /sbin/init 0

    2、如果要执行,还需要修改shell脚本属性,赋予执行权限

    chmod 600 /opt/mysqlBackup.sh
    chmod +x /opt/mysqlBackup.sh
     
    查看任务执行情况

    1. linux

    看 /var/log/cron.log这个文件就可以,可以用tail -f /var/log/cron.log观察

    2. unix

    在 /var/spool/cron/tmp文件中,有croutXXX001864的tmp文件,tail 这些文件就可以看到正在执行的任务了。

    3. mail任务

    在 /var/spool/mail/root 文件中,有crontab执行日志的记录,用tail -f /var/spool/mail/root 即可查看最近的crontab执行情况。

    参考:

    https://www.cnblogs.com/xd502djj/p/4292781.html

    https://www.cnblogs.com/SunArmy/p/13096861.html

    https://www.shuzhiduo.com/A/LPdolVbOz3/

  • 相关阅读:
    洛谷P1083 借教室
    洛谷 P1311 【选择客栈】
    一些加快 程序运行速度的方法
    【CYH-02】noip2018数论模拟赛:赛后题解
    【CYH-02】noip2018数论模拟赛:比赛通知栏
    洛谷P2888 [USACO07NOV]牛栏Cow Hurdles
    洛谷P2299 Mzc和体委的争夺战 题解
    洛谷P1113 杂务
    洛谷 P1635 跳跃
    LightOJ1119 Pimp My Ride(状压DP)
  • 原文地址:https://www.cnblogs.com/grasp/p/15194056.html
Copyright © 2011-2022 走看看