• 计划任务crontab


    就像再windows上有计划任务一样,centos7 自然也有计划任务,而且设置更为灵活,好用。再centos7 上可以利用crontab 来执行计划任务, 依赖与 crond 的系统服务,这个服务是系统自带的,可以直接查看状态,启动,停止。

    循环执行

    安装crontabs服务并开机自启

    yum install crontabs

    systemctl start crond

    systemctl status crond

    systemctl enable crond

    设置用户自定义的定时任务

    crontab 选项

    -e   编辑crontab定时任务

    -l    查询crontab定时任务

    -r    删除当前用户所有的crontab任务

    /etc/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 

    即: 
    分钟(0-59) 小时(0-23) 日(1-31) 月(11-12) 星期(0-6,0表示周日) 用户名 要执行的命令

    */30 * * * root /usr/local/mycommand.sh (每天,每30分钟执行一次 mycommand命令)

    * 3 * * * root /usr/local/mycommand.sh (每天凌晨三点,执行命令脚本,PS:这里由于第一个的分钟没有设置,那么就会每天凌晨3点的每分钟都执行一次命令)

    0 3 * * * root /usr/local/mycommand.sh (这样就是每天凌晨三点整执行一次命令脚本)

    */10 11-13 * * * root /usr/local/mycommand.sh (每天11点到13点之间,每10分钟执行一次命令脚本,这一种用法也很常用)

    10-30 * * * * root /usr/local/mycommand.sh (每小时的10-30分钟,每分钟执行一次命令脚本,共执行20次)

    10,30 * * * * * root /usr/local/mycommand.sh (每小时的10,30分钟,分别执行一次命令脚本,共执行2次)

    保存生效

    加载任务,使之生效:crontab /etc/crontab

    查看任务:crontab -l 
    $ crontab -u 用户名 -l (列出用户的定时任务列表)

    PS:特别注意,crond的任务计划, 有并不会调用用户设置的环境变量,它有自己的环境变量,当你用到一些命令时,比如mysqldump等需要环境变量的命令,手工执行脚本时是正常的,但用crond执行的时候就会不行,这时你要么写完整的绝对路径,要么将环境变量添加到 /etc/crontab 中。

    如果计划任务执行的语句如果是多条,则需要用药shell脚本,自己先写一个shell脚本,然后在计划任务中,执行这个脚本即可。

    单次执行

    at的启动

    yum install -y at

    systemctl start atd

    systemctl enable atd

    at运行的方式

    以文本文件的方式写入到/var/spool/at/目录

    可以使用/etc/at.allow/etc/at.deny这两个文件限制用户使用

    • 先寻找/etc/at.allow这个文件,如果用户存在这个文件,可以使用,如果不在,不能使用(即使没有写在at.deny中)
    • 如果/etc/at.allow不存在,就寻找/etc/at.deny这个文件,如果用户存在这个文件,不可使用,如果不在,可以使用
    • 如果两个文件都不存在,那么只有root可使用

    注意:一般默认有空的at.deny,代表所有用户都能使用,一个用户一行

    命令形式:

    at [-mldv] time

    at -c 工作号码

    -m    当at完成工作之后,即使没有输出信息,以email形式通知用户已经运行

    -l      列出目前系统上该用户的at调度

    -d     取消一个at的调度

    -v     可以使用较明显的时间格式列出at调度中任务列表

    -c     可以列出后面接的该项工作实际命令内容

  • 相关阅读:
    《x的奇幻之旅》:有趣的数学科普
    转贴健康资讯:毒蘑菇有多毒
    《用地图看懂世界经济》:形势不错,内容偏旧,更适合出彩色电子版。
    《新定位》:过时的经典
    《开膛史》:台湾心外科医生写的医学史散文集 五星推荐
    [Unit Testing] Set the timeout of a Test in Mocha
    [React Native] Reduce Long Import Statements in React Native with Absolute Imports
    [SCSS] Convert SCSS Variable Arguments to JavaScript
    [Angular] Upgrading to RxJS v6
    [Angular] Advanced DI
  • 原文地址:https://www.cnblogs.com/heijuzi-11/p/10883347.html
Copyright © 2020-2023  润新知