SaltStack设置PATH环境变量遇到的坑
あぁ、絶望の目つき
今天用Salt更改minion的PATH环境变量发现了一个坑,首先,salt命令行获取minion的PATH,如下图
随后,ssh去到其中一台minion查看PATH,如下图
嗯,这很不对。根据上篇提到的distccd启动问题,立马去看了下salt-minion启动脚本,估计是里面定义了额外的PATH。
果然,如下图 阅读全文
あぁ、絶望の目つき
今天用Salt更改minion的PATH环境变量发现了一个坑,首先,salt命令行获取minion的PATH,如下图
随后,ssh去到其中一台minion查看PATH,如下图
嗯,这很不对。根据上篇提到的distccd启动问题,立马去看了下salt-minion启动脚本,估计是里面定义了额外的PATH。
果然,如下图 阅读全文
PS: distcc3.1+之后的pump模式足可以取代dmucs,因此,此文几乎没有什么作用,看看就好 ^_^(20170322)
因公司内部服务器环境发生变化,需进行迁移工作,重新配置开发编译环境。发觉了distcc+ccache这个分布式编译的东东,研究了一阵子,并参考网上资料,加入了dmucs,使得整体编译效率会有所提高,以下为例子演示:
参考链接:
1 2 3 4 5 6 |
http://www.ibm.com/developerworks/cn/linux/l-ccache.html http://manpages.ubuntu.com/manpages/xenial/man1/distcc.1.html https://code.google.com/archive/p/distcc/ http://blog.csdn.net/douhuasinandu/article/details/8640176 http://www.yebangyu.org/blog/2015/11/30/build-distributed-compilation-env/ http://dmucs.sourceforge.net/ |
Distcc的工作原理为:
GCC 编译C/C++构建一个execualble分为四个阶段:
1,cpp(C预处理器):.c 到.i, 由cc完成汇编
2,ccl(C编译器):.i到.s ,由cc完成 由cc完成编译
3,as(汇编器):.s到.o,由as完成
4,链接:.o 到可执行文件,由collect2完成
其中第三阶段是效率瓶颈
因此,distcc此时作为编译器驱动器,负责把gcc -c预处理输出分布到指定的服务器进行处理,
对应的服务器的distccd进程接收到任务,交给本地的distcc进而编译,最终把.o文件返回给客户端
客户端再链接成可执行文件,完成编译过程
阅读全文
在工作中,经常要在screen里面跑环境,所有在这里就介绍下怎样在screen里面运行脚本,思路:创建一个挂起的screen----->往挂起的screen里面发送指令,命令如下:
1 2 |
screen -L -md test1 screen -S test1 -p0 -X stuff "$(printf '%b' 'date\015')" ---------------\015在screen是Enter的意思,具体参数解释可man screen |
那么问题来了,能否在tmux中实现相同的功能?答案是可以的,按照同样的思路即可完成 阅读全文
以往,我们可能有过这样的经历,ssh到一台服务器上面,经常要打开多个终端窗口来完成不同的事情。例如,编译nginx的时候,窗口就会被占据,只能重新打开一个窗口干别的事。更重要的是当ssh突然断线了,窗口中运行的进程就会中断掉,这是很杯具的事情。那么,我们可以用Screen解决这种问题。
简单的说下,Screen是一个可以在多个进程之间多路复用一个物理终端的窗口管理器。Screen中有会话的概念,我们可以开启一个会话,可以在会话中创建多个窗口,在不同的窗口中完成不同的操作,每个窗口互不影响。更重要的是,会话可以挂起,挂起,挂起!就是说,即使我们的ssh断线了,会话中的进程依旧会正常运行。
Screen的用法就不一一介绍了,自行度娘或者man screen,这里简单只说下基本用法。
安装:
自行百度。。。
个人推荐下最新的源码编译安装,太旧的版本是不支持分割窗口的,下载链接:http://ftp.gnu.org/gnu/screen/
下载后解压------->./configure--------->make && make install----即可
阅读全文
第一次遇到在linux中执行shell脚本遇到"/bin/bash^M: bad interpreter: No such file or directory",一开始还以为是脚本头部哪个字母写错了,结果并不是,经过度娘搜索,找到原因:
不同系统的编码格式不同,在Windows下编写的shell脚本换行方式与Unix是不一样的。
解决方法:
vim filename.sh 阅读全文