fabric优先级,进程管理

时间:2022-08-24 19:25:04

  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. HDU 4006The kth great number(K大数 +小顶堆)

    The kth great number Time Limit:1000MS     Memory Limit:65768KB     64bit IO Format:%I64d & %I64 ...

  2. JavaScript的由来, 浏览器的20年

    在很久以前那时候还没有Yahoo,Google....人们还在用28.8kbit/s的"猫"上网, 用户注册或者登录的时候所有的验证都是在服务器验证的, 如果用户注册的时候用户名或 ...

  3. H2 database的使用

    H2最完整的资料下载地址: http://download.csdn.net/detail/yixiaoping/5956595       H2数据库使用   H2数据库介绍 常用的开源数据库:H2 ...

  4. ROR入门之旅

    mac上为了不在登录画面看到其他账户,我禁用了root账户,而每次用Terminal的时候,先获得sudo账户的权限: sudo -s mac本身就安装有ruby ruby -v 查看当前安装的rub ...

  5. Markdown初使用

    Markdown是一种纯文本格式的标记语言.通过简单的标记语法,它可以使普通文本内容具有一定的格式. 相比WYSIWYG编辑器 优点:1.因为是纯文本,所以只要支持Markdown的地方都能获得一样的 ...

  6. Python3 类和继承和组合

    import random as r class Fish: def __init__(self): self.x = r.randint(0,10) self.y = r.randint(0,10) ...

  7. OSGI target环境配置过程

    新建一个通用工程  新建target环境  新建存放依赖包的目录 新建server目录,用于存放server.target对应的依赖包. 在server目录下,新建plugins目录 新建目录之后的, ...

  8. 爬zol村壁纸篇

    # -*- coding: utf-8 -*- # @Author : Jackzz import requests,os from pyquery import PyQuery as pq def ...

  9. 使用ansible kubectl插件连接kubernetes pod以及实现原理

    ansible kubectl connection plugin ansible是目前业界非常火热的自动化运维工具.ansible可以通过ssh连接到目标机器上,从而完成指定的命令或者操作. 在ku ...

  10. svg合并

    假如页面有多个svg图标要加载,多次加载不利,可将多个svg合并为一个加载 如下有两个svg <svg xmlns="http://www.w3.org/2000/svg" ...