fabric在执行一些命令或者脚本的时候,会执行了操作,但是,进程启动失败,google,发现fabric在执行脚本或者进程的时候,加入set -m参数,就可以正常运行了,解释是:"set -m" turns on job control, you can run processes in a separate process group,理解为:新开一个作业控制,让这个进程运行在独立的进程组。

  比如: run('/scripts/tomcat.sh start') 这个步骤修改为 run('set -m;/scripts/tomcat.sh start')

  同时,对于fabric处理进程脚本之类的,不建议采用restart操作,而是reload,因为nginx之类的退出机制关系,restart的话,会处理剩下的业务数据,而fabric的session可能在执行完restart命令之后就关闭了,导致restart失败,此处,新增等待时间都不一定能够restart成功,因为不清楚nginx最后释放资源所需的时间。

  即: run('/etc/init.d/nginx restart') 或者run('/etc/init.d/nginx stop && sleep 5 && /etc/init.d/nginx start')这个步骤修改为 run('/etc/init.d/nginx reload')

  fabric定义主机的优先级为:

  1.每个任务中,命令行主机装饰覆盖一切 Per-task, command-line host lists (fab mytask:host=host1) override absolutely everything else.

  2.每个任务中,fabfile中定义的装饰器主机列表覆盖env变量 Per-task, decorator-specified host lists (@hosts('host1')) override the env variables.

  3.在fabfile中定义的env.hosts   Globally specified host lists set in the fabfile (env.hosts = ['host1']) can override such lists set on the command-line, but only if you’re not careful (or want them to.)

  4.Globally specified host lists set on the command-line (--hosts=host1) will initialize the envvariables, but that’s it.

  实例:

当你想在 APP 组里面排除host1这台服务器的时候,你可以使用 env.exclude_hosts或者是 -x这个命令行参数来排除

env.exclude_hosts=['host1']

fab -R APP -x host1 common

这样执行的时候就会把 host1 这台服务器给排除在外了。

使用-x的方法排除的话,不能在任务上面使用装饰器声明。

@roles('APP')
def nginxrd():
    run('/etc/init.d/nginx reload')

就不能用-x 排除指定服务器

fabric优先级,进程管理的更多相关文章

  1. Linux进程管理及while循环

    目录 进程的相关概念 进程查看及管理工具的使用 Linux系统作业控制 调整进程优先级 网络客户端工具 bash之while循环 20.1.进程类型 守护进程 daemon,在系统引导过程中启动的进程 ...

  2. 进程管理三大扩展工具htop

    三大进程管理监控工具 HTOP 介绍: Htop是一款运行于Linux系统监控与进程管理软件,htop提供所有进程的列表,并且使用彩色标识出处理器.swap和内存状态.用户一般可以在top无法提供详尽 ...

  3. Linux下取代top的进程管理工具 htop

    一.htop 简介 This is htop, an interactive process viewer for Linux. It is a text-mode application (for ...

  4. Linux进程管理

    一.进程管理简介 进程是正在执行的程序或命令,每一个进程都是一个运行实体,都有自己的地址空间,并占用一定的系统资源. 进程管理的作用: 1.判断服务器的健康状态 2.查看系统中的所有进程 3.杀死进程 ...

  5. 12个Linux进程管理命令介绍(转)

    12个Linux进程管理命令介绍 [日期:2015-06-02] 来源:Linux中国  作者:Linux [字体:大 中 小]   执行中的程序在称作进程.当程序以可执行文件存放在存储中,并且运行的 ...

  6. Android内存进程管理机制

    参考文章: http://www.apkbus.com/android-104940-1-1.htmlhttp://blog.sina.com.cn/s/blog_3e3fcadd0100yjo2.h ...

  7. CentOS进程管理

    Linux系统中的基本运行单位是进程,通过对系统系统中的进程的管理能够对系统的实时运行状态进行了解和调度.Linux中提供了用于查看.调整和停止进程的命令.本文仍然以RHEL6说明Linux系统的进程 ...

  8. RHEL7进程管理

    进程概念 名称 说明 程序 一组指令的集合 进程 程序的执行就是进程也可以把进程看成一个独立的程序在内存中有其对应的代码空间和数据空间,一个进程所拥有的数据和代码只属于自己进程是资源分配的基本单位,也 ...

  9. Linux进程管理工具——supervisor

    介绍 Supervisord是用Python实现的一款非常实用的进程管理工具 安装 这里用源码 supervisor-.tar.gz .tar.gz cd supervisor- sudo pytho ...

随机推荐

  1. mybatis的拦截器及分页机制

    https://blog.csdn.net/ssuperlg/article/details/79847889

  2. null的比较问题

    select count(*) from table_a WHERE  status=1 and end_time<now(); 写这个sql的时候有点纠结,万一end_time是null怎么办 ...

  3. WCF配置心得

    根据蒋金楠老师的博文所说的, WCF的终结点有三个要素组成,分别是地址(Address).绑定(Binding)和契约(Contract),简记可写成Endpoint = ABC. 地址:地址决定了服 ...

  4. 计算机网络 --万维网www

    万维网是一个分布式的超媒体系统,客户程序向服务器程序发出请求,服务器程序向客户程序送回客户所需要的万维网文档.万维网必须解决的几个问题:1.怎样标志分布在整个因特网上的万维网文档?答:万维网使用统一的 ...

  5. cmake默认变量

    1 CMAKE_GENERATOR 用来生成工程构建文件的工具的名字,比如visual studio 12,2013,比如xcode,不同的平台使用不同的生成工具. 2 MATCHES if (var ...

  6. php总结3——基本函数、流程控制中的循环

    3.1 php基本函数(数学.日期.字符串) 数学函数:max         mixed max(number $arg1,number $arg2,……)  求一组数据中的最大值        m ...

  7. 爬虫-Selenium -抱错ElementNotVisibleException: Message: element not visible

    1.当使用Selenium IDE 完成了脚本的录制和回放通过后,想要将脚本转换为其他语言如java.Python等,首次使用时打开Options->Format发现没有可以转换的语言,如下: ...

  8. ME01 创建货源清单function

    CALL FUNCTION 'ME_DIRECT_INPUT_SOURCE_LIST' Function module IDOC_INPUT_SRCLST FUNCTION IDOC_INPUT_SR ...

  9. Halcon下载、安装

    下载地址: 官网:http://www.halcon.com/halcon/download/ Halcon学习网:http://www.ihalcon.com/read.php?tid=56 { 最 ...

  10. SpringBoot学习笔记(1):配置Mybatis

    SpringBoot学习笔记(1):配置Mybatis 反思:如果自己写的笔记自己都看不懂,那就不要拿出来丢人现眼! IDEA插件 Free MyBatis Plugin插件可以让我们的MyBatis ...