PXE分发安装CentOS 6.5
通过ssh用rsync无密码传输文件
在linux平台上常用rsync协议来同步文件和目录,’rsync’也是各种linux发行版标配的命令。当我们基于linux平台开发应用程序时,常常需要从Java或者Python代码中调用rsync命令来实现文件的传输。
例如,假设我们要按照如下需求来传输文件:
- 有两台机器:localhost和remotehost
- Java程序deploy在localhost上,通过rsync将本机文件传送到remotehost,或者从remotehost pull文件到localhost
- rsync通过ssh连接remotehost
- 在remotehost有个叫test的帐户,专门用来rsync传输文件,只能用密钥文件登陆
- 最重要的是,在rsync连接过程中不需要输入test的帐户密码,否则密码输入界面会block住Java程序的运行
要实现rsync的无密码传输,基本思路是用一对公私钥来代替帐户密码,实现ssh连接时的认证。
继续阅读 »
记录一次AWS EC2硬盘扩容的经历
在申请aws ec2时,按照向导,在选择存储的时候默认硬盘大小是 8 G,这时候可以根据自己的需要输入一个合适的数字,例如100。完成向导并启动ec2 instance 后登陆机器。使用命令:
1 |
df -hT |
发现硬盘的大小不是自己的设定的值,而还是 8 G,使用fdisk、mkfs来分区和格式化后,还是无法增大其空间。反复折腾多次,包括重启机器,问题依旧,后来发现其实很简单,只需要使用一条命令resize2fs就可以搞定。
1 |
resize2fs /dev/xvde |
注意:“/dev/xvde” 根据自己的实际情况可能会不一样。使用fdisk或df命令都可以获知具体的设备号。 如果执行上述命令收到 The filesystem is already 2096896 blocks long. Nothing to do! 的错误,那么需要先做如下操作
继续阅读 »
CentOS7 下 Zabbix3.4 源码安装
zabbix系统基于PHP环境运行,所以前提是系统上有PHP的运行环境,lnmp或者lamp环境
lnmp环境安装:http://www.cnblogs.com/rnckty/p/7642034.html
lamp环境安装:http://www.cnblogs.com/rnckty/p/4094272.html
1、下载源码包
1 |
# wget -O zabbix-3.4.2.tar.gz http://sourceforge.net/projects/zabbix/files/ZABBIX%20Latest%20Stable/3.4.2/zabbix-3.4.2.tar.gz/download |
2、安装依赖库
1 |
# yum -y install net-snmp-devel libxml2-devel libcurl-deve libevent libevent-devel |
3、解压并编译
1 2 3 |
# tar -zxf zabbix-3.4.2.tar.gz # cd zabbix-3.4.2 # ./configure --prefix=/usr/local/zabbix --enable-server --enable-agent --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2 |
一键安装最新内核并开启 BBR 脚本
最近,Google 开源了其 TCP BBR 拥塞控制算法,并提交到了 Linux 内核,最新的 4.11 版内核已经用上了该算法。根据以往的传统,Google 总是先在自家的生产环境上线运用后,才会将代码开源,此次也不例外。
根据实地测试,在部署了最新版内核并开启了 TCP BBR 的机器上,网速甚至可以提升好几个数量级。
于是我根据目前三大发行版的最新内核,开发了一键安装最新内核并开启 TCP BBR 脚本。
本脚本适用环境
系统支持:CentOS 6+,Debian 7+,Ubuntu 12+
虚拟技术:OpenVZ 以外的,比如 KVM、Xen、VMware 等
内存要求:≥128M
日期 :2017 年 05 月 15 日
关于本脚本
1、本脚本已在Vultr上的 VPS 全部测试通过。
2、当脚本检测到 VPS 的虚拟方式为 OpenVZ 时,会提示错误,并自动退出安装。
3、脚本运行完重启发现开不了机的,打开 VPS 后台控制面板的 VNC, 开机卡在 grub 引导, 手动选择内核即可。
4、由于是使用最新版系统内核,最好请勿在生产环境安装,以免产生不可预测之后果。
继续阅读 »
centos7和centos6的区别
ar 打包库到另外一个库中
ar语法:
1 |
ar [-] [必要参数] [可选参数] [成员文件] |
ar 命令:将多个文件打包到一个文件中,也可以从打包的文件中提取文件,且打包的文件保留原来的属性
必要参数
1 2 3 4 5 6 7 |
-d 删除打包文件中的成员文件 -m 变更成员文件在打包文件中的次序 -p 显示打包文件中的成员文件内容 -q 将问家附加在打包文件末端 -r 将文件插入打包文件中 -t 显示打包文件中所包含的文件 -x 从打包文件中提取文件 |
选择参数
1 2 3 4 5 6 7 8 9 10 11 |
a<成员文件> 将文件插入打包文件中指定的成员文件之后 b<成员文件> 将文件插入打包文件中指定的成员文件之前 c 建立打包文件 f 保持其他系统ar命令兼容,截掉过长的文件名 i<成员文件> 与“b” 参数作用相同 o 保留打包文件的文件信息 s 创建档案文件的符号表 S 不创建档案文件的符号表 u 与“r”一起使用,替换打包文件中已经修改的文件 v 显示详细的处理信息。 V 显示版本信息 |
在Linux下实现COM组件
COM组件是一种编程规范,它规定了软件编程的一般方法,虽然它由Microsoft公司制定和提出,但是它的规则也可以在Linux下使用,下面是在Linux下实现COM组件的方法。
—-参考《COM技术内幕》一书。
COM实现的技术,主要是C++的虚函数、多继承以及动态链接库(DLL)技术。
继续阅读 »
C++“隐藏实现,开放接口”的实现方案
为什么要有接口?
接口就是一个程序与其它程序交流的窗口。就比如有一个电视机,我并不需要知道它是怎样工作的,我只要知道按电源键就可以开启电视,按节目加(+)减(-)可以切换电视频道就可以了。
Java程序员都知道Java中有interface可以实现对外的接口,但C++并没有接口这样的语法,那它要好怎样实现对外提供接口呢?我们可以通过纯虚函数定义一个抽象类,专门用来声明一个类的功能。
继续阅读 »
近期评论