zoukankan      html  css  js  c++  java
  • Linux Crontab及使用salt进行管理

    一、引言:

      最近无意之间看到salt有一个cron的模块,今天就在这里介绍linux crontab以及通过salt的cron对crontab的管理。

    二、Linux crontab的介绍:

      crontab是用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放在"crontab"文件中,以供之后读取和执行。crontab存储的指令被守护进程激活,crond常常在后台运行,每一分钟检查是否有预定的作业需要执行。

    2.1、crond的启动与关闭:

    复制代码
    #查看crond的状态
    [root@A01-R07-I165-88 ~]# service crond status
    #关闭crond
    [root@A01-R07-I165-88 ~]# service crond stop
    #启动crond
    [root@A01-R07-I165-88 ~]# service crond start
    #重启crond
    [root@A01-R07-I165-88 ~]# service crond restart
    #重新加载crond
    [root@A01-R07-I165-88 ~]# service crond reload
    复制代码

    2.2、全部配置文件

      crontab在/etc目录下面存在cron.hourly,cron.daily,cron.weekly,cron.monthly,cron.d五个目录和crontab,cron.deny二个文件。

      cron.daily是每天执行一次的Job;

      cron.weekly是每个星期执行一次的Job;

      cron.monthly是每个月执行一次的Job;

      cron.hourly是每个小时执行一次的Job;

      cron.d是系统自动定期需要做的任务,但是又不是按小时,按天,按星期,按月来执行的。

      /etc/crontab的内容如下:

    复制代码
    [root@A01-R07-I165-88 ~]# 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
    # |  |  |  |  |
    # *  *  *  *  * user-name  command to be executed
    复制代码

      /etc/cron.deny文件就是用于控制不让哪些用户使用crontab的功能。

    2.3、用户配置文件:

      每个用户都有自己得的cron配置文件,通过crontab -e就可以编辑,一般情况下我们编辑完用户的cron配置文件保存退出后,系统会自动就存放于/var/spool/cron/目录中,文件以用户名命名。

      linux的cron服务是每隔一分钟去读取一次/var/spool/cron/,/etc/crontab,/etc/cron.d下面的所有内容。

    2.4、cron命令格式:

    crontab [ -u user ] 文件 
    crontab [ -u user ] { -l | -r | -e }
    -u:指定某一用户
    -e:执行文字编辑器来设定用户(当前用户或指定用户)时程表,内定的文字编辑器是vi.
    -r:删除用户时程表.
    -l:列出用户时程表.

    2.5、cron文件格式:

    复制代码
    *  *  *  *  *  command
    分 时 日 月 周   命令
    第1列表示分钟1~59, 每分钟用*或者 */1表示
    第2列表示小时1~23(0表示0点)
    第3列表示日期1~31
    第4列表示月份1~12
    第5列标识号星期0~6(0表示星期天)
    第6列要运行的命令
    复制代码

    2.6、特殊用户:

    [root@A01-R07-I165-88 cron]# crontab -l
    # Lines below here are managed by Salt, do not edit
    @reboot /root/cgroup_mkdir.sh

      @reboot是指在开机后运行,且只运行一次,效果跟设置在/etc/rc.local中一样。

    另外还有:

    复制代码
    string            meaning 
    ------           ------- 
    @reboot        Run once, at startup. 
    @yearly         Run once a year, "0 0 1 1 *". 
    @annually      (same as @yearly) 
    @monthly       Run once a month, "0 0 1 * *". 
    @weekly        Run once a week, "0 0 * * 0". 
    @daily           Run once a day, "0 0 * * *". 
    @midnight      (same as @daily) 
    @hourly         Run once an hour, "0 * * * *".
    复制代码

    2.7、每10秒运行一次:

    三、通过salt来管理crontab:

    复制代码
    新增一条记录:
    salt -L '*' cron.set_job yarn '10' '9' '1' '*' '*' 'source /home/yarn/.bashrc;find /sys/fs/cgroup/cpu/hadoop-yarn -mtime +15 -name "container_*" -exec rm -rf {} ;' "rm the container files"
    查看记录:
    salt '*' cron.raw_cron yarn
    删除记录:
    salt '*' cron.rm_job yarn 'source /home/yarn/.bashrc;find /sys/fs/cgroup/cpu/hadoop-yarn -mtime +15 -name "container_*" -exec rm -rf {} ;' minute='10'

    搞自http://www.cnblogs.com/Richardzhu/p/6617190.html
  • 相关阅读:
    How to build Linux system from kernel to UI layer
    Writing USB driver for Android
    Xposed Framework for Android 8.x Oreo is released (in beta)
    Linux Smartphone Operating Systems You Can Install Today
    Librem 5 Leads New Wave of Open Source Mobile Linux Contenders
    GUADEC: porting GNOME to Android
    Librem 5 – A Security and Privacy Focused Phone
    GNOME and KDE Join Librem 5 Linux Smartphone Party
    Purism计划推出安全开源的Linux Librem 5智能手机
    国产系统之殇:你知道的这些系统都是国外的
  • 原文地址:https://www.cnblogs.com/smallfa/p/8464075.html
Copyright © 2011-2022 走看看