ansible笔记():常用模块之系统类模块

cron模块
cron模块可以帮助我们管理远程主机中的计划任务,功能相当于crontab命令。 在了解cron模块的参数之前,先写出一些计划任务的示例,示例如下 #示例1
* * * echo test #示例2
*/ * * echo test #示例3
@reboot echo test #示例4
@hourly echo test 上述示例1表示每天的1点5分输出test字符 上述示例2表示每3天执行一次计划任务,于当天的1点1分执行,具体任务为输出test字符 上述示例3表示每次系统启动后需要执行一次计划任务,具体任务为输出test字符 上述示例4表示每小时执行一次计划任务,具体任务 为输出test字符 根据上述示例,可以更好的了解cron模块的参数 cron模块通常使用的参数如下,你可以先大概的了解一下这些参数,然后再结合后面的示例去理解: minute参数:此参数用于设置计划任务中分钟设定位的值,比如,上述示例1中分钟设定位的值为5,即minute=,当不使用此参数时,分钟设定位的值默认为"*" hour参数:此参数用于设置计划任务中小时设定位的值,比如,上述示例1中小时设定位的值为1,即hour=,当不使用此参数时,小时设定位的值默认为"*" day参数:此参数用于设置计划任务中日设定位的值,当不使用此参数时,日设定位的值默认为"*" month参数:此参数用于设置计划任务中月设定位的值,当不使用此参数时,月设定位的值默认为"*" weekday参数:此参数用于设置计划任务中周几设定位的值,当不使用此参数时,周几设定位的值默认为"*" special_time参数:在上述示例3与示例4中,计划任务的时间设定格式为@reboot或者@hourly,@reboot表示重启时执行,@hourly表示每小时执行一次,相当于设置成"0 0 * * *" ,这种@开头的时间设定格式则需要使用special_time参数进行设置,special_time参数的可用值有reboot(重启后)、yearly(每年)、annually(每年,与yearly相同)、monthly(每月)、weekly(每周)、daily(每天)、hourly(每时)。 注意:当上述时间单位设定参数都未指定时,计划任务的时间设定默认会被设定为"* * * * *",这样表示每秒都会执行一次计划任务,所以,在使用cron模块时,我们应该确定对应的时间参数设置正确。 user参数:此参数用于设置当前计划任务属于哪个用户,当不使用此参数时,默认为管理员用户 job参数:此参数用于指定计划的任务中需要实际执行的命令或者脚本,比如上例中的"echo test"命令。 name参数:此参数用于设置计划任务的名称,计划任务的名称会在注释中显示,当不指定计划任务的名称时,ansible会默认为计划任务加入注释,注释的内容为#Ansible: None,假设指定计划任务的名称为test,那么注释的内容为#Ansible: test,在一台机器中,计划任务的名称应该具有唯一性,方便我们以后根据名称修改或删除计划任务。 state参数:当计划任务有名称时,我们可以根据名称修改或删除对应的任务,当删除计划任务时,需要将state的值设置为absent disabled参数:当计划任务有名称时,我们可以根据名称使对应的任务"失效"(注释掉对应的任务),注意,使用此参数时,除了需要指定任务的名称,还需要同时指定任务的job以及任务的时间设定,而且任务的时间设定必须和对应任务完全相同,否则在注释任务的同时,任务的时间设定会被修改,除非你确定这样做,如果你不明白这段话的意思,可以参考下文中的示例。 backup参数:如果此参数的值设置为yes,那么当修改或者删除对应的计划任务时,会先对计划任务进行备份,然后再对计划任务进行修改或者删除,cron模块会在远程主机的/tmp目录下创建备份文件,以crontab开头并且随机加入一些字符,具体的备份文件名称会在返回信息的backup_file字段中看到,推荐将此此参数设置为yes。 cron模块的ad-hoc示例命令如下: 在test70主机上创建计划任务,任务名称为"test crontab",任务于每天1点5分执行,任务内容为输出test字符 [root@node1 data]# ansible test211 -m cron -a "name='test cron' minute=5 hour=1 job='echo crod test'" 执行上述命令后,在test211主机中root用户下会有如下计划任务被创建
#Ansible: test cron
* * * echo crod test 在test211主机上创建计划任务,任务名称为"crontab day test",任务每3天执行一次,于执行当天的1点5分开始执行,任务内容为输出crontab day test字符 [root@node1 data]# ansible test211 -m cron -a "name='crontab day test' minute=5 hour=1 day=*/3 job='echo crontab day test'" 执行上述命令后,在test211主机中root用户下会有如下计划任务被创建 #Ansible: crontab day test
*/ * * echo crontab day test 在test211主机上创建计划任务,任务名称为"test special time",任务将在重启时执行,任务内容为输出reboot now字符 [root@node1 data]# ansible test211 -m cron -a "name='test special time' special_time='reboot' job='echo reboot now'" #Ansible: test special time
@reboot echo reboot now 任务"test special time"已经存在于test70主机中,如果我们想要删除这个计划任务,可以执行如下命令,删除任务的同时可以进行备份。 [root@node1 data]# ansible test211 -m cron -a "name='test special time' state=absent backup=yes" 默认操作root用户的计划任务,如果想要操作远程主机中其他用户的计划任务,可以指定要操作的用户 [root@node1 data]# ansible test211 -m cron -a "user=apache name='test special time' special_time=hourly job='echo speical time test'"
上述命令执行后,可以在远程主机中使用crontab -lu apache查看对应的计划任务。
[root@web01:~]# crontab -u apache -l
#Ansible: test special time
@hourly echo speical time test 之前已经创建了名称为crontab day test的计划任务,如果我们想要暂时注释这个计划任务,可以使用如下命令,但是需要注意,在注释任务时,所有设定需要 跟原设定保持一致,否则计划任务的设置将会发生改变,示例如下 比如,我们想要将crontab day test这个任务注释掉,则需要使用如下命令,注意,最好与backup参数同时使用
建立计划任务的命令
[root@node1 data]# ansible test211 -m cron -a "name='crontab day test' minute=1 hour=1 day=*/3 job='echo test'" 注释计划任务的命令
[root@node1 data]# ansible test211 -m cron -a "name='crontab day test' minute=1 hour=1 day=*/3 job='echo test' disabled=yes backup=yes" 执行上述命令后,对应的计划任务将会被注释,如下 #Ansible: crontab day test
# */ * * echo test 如果你在使用disabled参数时,设置了错误的时间,那么对应任务被注释的同时,时间设定也会发生改变,比如,如果你执行了如下命令 [root@node1 data]# ansible test211 -m cron -a "name='crontab day test' minute=55 job='echo test' disabled=yes backup=yes" 那么对应任务被注释的同时,还会进行如下设置
#Ansible: crontab day test
# * * * * echo test 如果你忘记了任何时间设定,那么在任务被注释时,还会被设置为默认的时间设定,也就是 "* * * * *" 所以,在使用disabled参数时,最后结合backup参数一起使用,万一一时大意,还有回旋的余地。 service模块
service模块可以帮助我们管理远程主机上的服务,比如,启动或停止远程主机中的nginx服务。 注意:假如你想要管理远程主机中的某个服务,那么这个服务必须能被 BSD init, OpenRC, SysV, Solaris SMF, systemd, upstart 中的任意一种所管理,否则service模块也无法管理远程主机的对应服务,这样说可能不容易理解,那么我们换个方式来解释,假设你在使用centos6,那么你的centos6中的nginx则必须能够通过"service nginx start"启动,如果你的nginx无法通过"service nginx start"进行启动,那么它将同样无法通过ansible的service模块启动,假设你在使用centos7,那么你的centos7中的nginx则必须能够通过"systemctl start nginx"启动,如果它无法通过"systemctl start nginx"进行启动,那么它将同样无法通过ansible的service模块进行启动,centos6中默认通过sysv管理服务,centos7中默认通过systemd管理服务,如果你的服务无法通过 BSD init, OpenRC, SysV, Solaris SMF, systemd, upstart 中的任意一种所管理,那么它也无法被ansible的service模块管理。 service模块通常使用的参数如下,你可以先大概的了解一下这些参数,然后再结合后面的示例去理解: name参数:此参数用于指定需要操作的服务名称,比如nginx state参数:此参数用于指定服务的状态,比如,我们想要启动远程主机中的nginx,则可以将state的值设置为started,如果想要停止远程主机中的服务,则可以将state的值设置为stopped,此参数的可用值有started、stopped、restarted、reloaded。 enabled参数:此参数用于指定是否将服务设置为开机 启动项,设置为yes表示将对应服务设置为开机启动,设置为no表示不会开机启动。 service模块的ad-hoc示例命令如下: 将test212中的nginx服务处于启动状态 [root@node1 data]# ansible test211 -m service -a "name=nginx state=started" 将test212中的nginx服务处于停止状态 [root@node1 data]# ansible test212 -m service -a "name=nginx state=stopped" 将test212中的nginx服务处于开机自启动状态 [root@node1 data]# ansible test212 -m service -a "name='nginx' enabled=yes"

ansible笔记(7):常用模块之系统类模块的更多相关文章

  1. ansible笔记(8):常用模块之系统类模块(二)

    ansible笔记():常用模块之系统类模块(二) user模块 user模块可以帮助我们管理远程主机上的用户,比如创建用户.修改用户.删除用户.为用户创建密钥对等操作. 此处我们介绍一些user模块 ...

  2. Ansible笔记(7)---常用模块之系统类模块(cron、service)

    一.cron模块 1.1作用: cron 模块可以帮助我们管理远程主机中的计划任务,功能相当于 crontab 命令. 在了解cron模块的参数之前,先写出一些计划任务的示例: # 示例1,每天的1点 ...

  3. Ansible常用模块之系统类模块

    cron模块 管理远程主机上的计划任务 [root@tiandong ansible]# ansible all -m cron -a "name='cron test' minute=5 ...

  4. ansible笔记(6):常用模块之命令类模块

    ansible笔记():常用模块之命令类模块 command模块 command模块可以帮助我们在远程主机上执行命令 注意:使用command模块在远程主机中执行命令时,不会经过远程主机的shell处 ...

  5. python学习之算法、自定义模块、系统标准模块(上)

    算法.自定义模块.系统标准模块(time .datetime .random .OS .sys .hashlib .json和pickle) 一:算法回顾: 冒泡算法,也叫冒泡排序,其特点如下: 1. ...

  6. ansible笔记(5):常用模块之命令类模块

    1.command模块 它的作用是帮助我们在远程主机上执行命令. [注意]使用command模块在远程主机中执行命令时,不会经过远程主机的shell处理,在使用command模块时,如果需要执行的命令 ...

  7. Python 第五篇(上):算法、自定义模块、系统标准模块(time 、datetime 、random 、OS 、sys 、hashlib 、json和pickle)

    一:算法回顾: 冒泡算法,也叫冒泡排序,其特点如下: 1.比较相邻的元素.如果第一个比第二个大,就交换他们两个. 2.对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对.在这一点,最后的元素应 ...

  8. Ansible常用模块之命令类模块

    Command模块 在远程节点上执行命令 [root@tiandong ~]# ansible all -m command -a "ls" 在远程主机上执行ls命令. [root ...

  9. ansible笔记(6):常用模块之系统模块

    1.cron模块 cron命令是计划任务功能,与crontab功能类似. 示例:时间格式--->>>分  时  日  月 星期 10 12 27 * *  tar -cvzf log ...

随机推荐

  1. THE DEFINITIVE GUIDE TO DEBUGGING JAVASCRIPT

    FIGURING OUT WHERE THE ERROR COULD BE READ THE CODE USING THE CONSOLE THE CHROME DEV TOOLS THE DEBUG ...

  2. jQuery使用(三):DOM操作之val()方法操作表单元素value值

    操作表单元素属性value的值 <form action="./" method='GET'> <h3 >选择你喜欢的明星</h3> <s ...

  3. JQ和Js获取span标签的内容

    JQ和Js获取span标签的内容 html: 1 <span id="content">‘我是span标签的内容’</span> javascript获取: ...

  4. 02-Unity深入浅出(二)

    一. Unity声明周期 Unity容器为我们提供了6种生命周期,便于我们根据项目需求来选择使用. (1). 瞬时.默认省略即为瞬时,无论单线程还是多线程,每次都重新创建对象.new Transien ...

  5. 微信调试工具测试时有时候复制URL没有corpid解决

    可以直接去微信企业后台查询corpid,复制到粘贴到自己的url后面.

  6. lombok注解介绍

    lombok注解介绍 lombok注解文档lombok官网下载 lombok是一个可以帮助我们简化java代码编写的工具类,尤其是简化javabean的编写,即通过采用注解的方式,消除代码中的构造方法 ...

  7. ASP.NET Web API 2 过滤器

    Ø  前言 我们知道 ASP.NET Web API 过滤器,也是属于消息处理机制中的一部分.正因如此,我们经常使用它来完成对请求的授权验证.参数验证,以及请求的 Log 记录,程序异常捕获等. 1. ...

  8. 解决XP系统桌面图标蓝底

    方法1:在桌面上点击右键,在"排列图标"里去掉"锁定桌面的web项目"的勾. 方法2:右键点击 的电脑 -- 属性 -- 高级 -- 点击"性能&qu ...

  9. GCC编译器原理(二)------编译原理一:目标文件

    一.目标文件 在 UNIX® 和 Linux® 中,任何事物都是文件.UNIX 和 Linux 编程实际上是编写处理各种文件的代码.系统由许多类型的文件组成,但目标文件具有一种特殊的设计,提供了灵活和 ...

  10. mssql 创建函数简单实例

    CREATE FUNCTION [dbo].[f_DailyIncome] ( @userId int, @date date ) ,) AS BEGIN ,); ) from Channel_Use ...