码迷,mamicode.com
首页 > 其他好文 > 详细

SaltStack使用教程(三):定时任务管理

时间:2015-10-01 01:44:23      阅读:311      评论:0      收藏:0      [点我收藏+]

标签:saltstack使用教程 saltstack管理定时任务 saltstack管理文件

先举个添加任务例子:

注释:这里虽然可以创建删除,但是作者不推荐这么用,管理复杂,推荐最下面的文件管理定时任务方法

/usr/sbin/ntpdate pool.ntp.org >>/dev/null 2>&1:
  cron.present:
    - user: root
    - minute: 10
[root@saltstack-node1 base]# salt ‘saltstack-node2.example.com‘ state.highstate
saltstack-node2.example.com:
----------
          ID: /usr/sbin/ntpdate pool.ntp.org >>/dev/null 2>&1
    Function: cron.present
      Result: True
     Comment: Cron /usr/sbin/ntpdate pool.ntp.org >>/dev/null 2>&1 added to root‘s crontab
     Started: 13:15:35.375887
    Duration: 68.023 ms
     Changes:  
              ----------
              root:
                  /usr/sbin/ntpdate pool.ntp.org >>/dev/null 2>&1
Summary
------------
Succeeded: 1 (changed=1)
Failed:    0
------------
Total states run:     1

 

注解:

minute      #分钟
hour        #小时
daymonth    #日
month       #月
dayweek     #0~6是周一到周六,周日是7

   默认执行用户“root”,时间不填写默认是“*,周期执行“*/2,随机执行“random”,identifier    是任务标识符,类似于任务ID,更改任务时指定“标识符”可方便修改。

 

现在就可以用salt查看定时任务

[root@saltstack-node1 ~]# salt ‘saltstack-node2.example.com‘ cron.raw_cron root

saltstack-node2.example.com:
    # Lines below here are managed by Salt, do not edit
    # SALT_CRON_IDENTIFIER:sync_time
    */10 * * * * /usr/sbin/ntpdate pool.ntp.org >>/dev/null 2>&1

 

 

删除定时任务

 

假如你要添加一个“echo "test"”的定时任务,结果发现添加错了

[root@saltstack-node1 ~]#  salt ‘*‘ cron.set_job root ‘1‘ ‘*‘ ‘*‘ ‘*‘ ‘*‘ echo "test"

saltstack-node2.example.com:
    new
saltstack-node1.example.com:
    new
You have new mail in /var/spool/mail/root

[root@saltstack-node1 ~]# salt ‘*‘ cron.raw_cron root

saltstack-node1.example.com:
    * * * * *  /usr/sbin/ntpdate pool.ntp.org
    # Lines below here are managed by Salt, do not edit
    # test
    1 * * * * echo
saltstack-node2.example.com:
    # Lines below here are managed by Salt, do not edit
    # SALT_CRON_IDENTIFIER:sync_time
    */10 * * * * /usr/sbin/ntpdate pool.ntp.org >>/dev/null 2>&1
    # test
    1 * * * * echo

 

 

需要这样写                       

salt      ‘target‘ cron.rm_job user  ${my_cron}  ${exec_crondtion}

[root@saltstack-node1 ~]# salt ‘saltstack-node2.example.com‘ cron.rm_job root echo minute=‘1‘

saltstack-node2.example.com:

    removed

[root@saltstack-node1 ~]# salt ‘*‘ cron.raw_cron root

saltstack-node1.example.com:
    # Lines below here are managed by Salt, do not edit
    # test
    1 * * * * echo
saltstack-node2.example.com:
    # Lines below here are managed by Salt, do not edit
    # SALT_CRON_IDENTIFIER:sync_time
    */10 * * * * /usr/sbin/ntpdate pool.ntp.org >>/dev/null 2>&1
    
注释:这里虽然可以删除,但是作者不推荐这么用,推荐下面的文件管理定时任务方法


小窍门文件管理定时任务:

    在linux里面一切皆文件,centos下是 /var/spool/cron/下的对应文件名就是用户的定时任务

你可以通过管理这些文件来实现任务的管理,但是一定要注意文件权限和属主。


警告:由于是直接通过文件管理的任务,所以salt管理会完全覆盖原来配置的所有内容,所以请谨慎使用。

查看定时任务存在的形式:
[root@saltstack-node2 ~]# cd /var/spool/cron/
[root@saltstack-node2 cron]# ls
bai  root
[root@saltstack-node2 cron]# ll
total 8
-rw------- 1 bai  bai   22 Sep 30 15:17 bai    #这是bai这个用户的定时任务文件,600权限
-rw------- 1 root root 146 Sep 30 14:56 root
 
下面编写状态文件
[root@saltstack-node1 crontab]# vim test.sls
/var/spool/cron/bai:
  file.managed:
    - source: salt://crontab/files/saltstack-node2.example.com.bai
    - mode: 600
    - user: bai
    - group: bai 
    
执行状态
[root@saltstack-node1 crontab]# salt ‘saltstack-node2.example.com‘ state.highstate
saltstack-node2.example.com:
----------
          ID: /var/spool/cron/bai
    Function: file.managed
      Result: True
     Comment: File /var/spool/cron/bai updated
     Started: 15:40:33.193250
    Duration: 57.914 ms
     Changes:  
              ----------
              diff:
                  --- 
                  +++ 
                  @@ -1,0 +1,1 @@
                  +* * * * * echo "hello world"
 
Summary
------------
Succeeded: 1 (changed=1)
Failed:    0
------------
Total states run:     1

查看定时任务已创建
[root@saltstack-node1 crontab]# salt ‘saltstack-node2.example.com‘ cron.raw_cron bai
saltstack-node2.example.com:
    * * * * * echo "hello world"
You have new mail in /var/spool/mail/root


本文出自 “nginxs小白” 博客,请务必保留此出处http://nginxs.blog.51cto.com/4676810/1699698

SaltStack使用教程(三):定时任务管理

标签:saltstack使用教程 saltstack管理定时任务 saltstack管理文件

原文地址:http://nginxs.blog.51cto.com/4676810/1699698

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!