Linux进程间通信的六种主要手段

1.管道(Pipe)及有名管道(named pipe)

管道可用于具有亲缘关系进程间的通信,有名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它还允许无亲缘关系进程间的通信;

2.信号(Signal)

信号是比较复杂的通信方式,用于通知接受进程有某种事件生,除了用于进程间通信外,进程还可以发送信号给进程本身;linux除了支持Unix早期 信号语义函数sigal外,还支持语义符合Posix.1标准的信号函数sigaction(实际上, 该函数是基于BSD的,BSD为了实现可靠信号机制,又能够统一对外接口,sigaction函数重新实现了signal函数);

3.报文(Message)队列(消息队列)

消息队列是消息的链接表,包括Posix消息队列system V消息队列。有足够权限的进程可以向队列中添加消息,被赋予读权限的进程则可以读走队列中的消息。消息队列克服了信号承载信息量少,管道只能承载无格式字节流以及缓冲区大小受限等缺点。

阅读更多

用SS5在Linux上搭建Socks5 Proxy代理服务器

SOCKS5 是一个代理协议,通过将前端发来的请求转发给真正的目标服务器, 模拟了一个前端的行为。在这里,前端和SOCKS5之间也是通过TCP/IP协议进行通讯,前端将原本要发送给真正服务器的请求发送给SOCKS5服务器,然后SOCKS5服务器将请求转发给真正的服务器。

下面我们将用SS5在Linux上搭建一个Socks5 Proxy Server,具体过程如下:

首先,编译安装SS5需要先安装一些依赖组件

yum -y install gcc gcc-c++ automake make pam-devel openldap-devel cyrus-sasl-devel

接下来,我们从 http://ss5.sourceforge.net/ 下载SS5最新版本的源代码后,开始编译安装:

tar zxvf ./ss5-3.8.9-8.tar.gz
cd ss5-3.8.9
./configure
make
make install

让SS5随系统一起启动

chmod +x /etc/init.d/ss5
chkconfig --add ss5
chkconfig --level 345 ss5 on

开启用户名密码验证机制

vi /etc/opt/ss5/ss5.conf

在ss5.conf中找到auth和permit两行,按照下面的格式进行修改

auth      0.0.0.0/0       -         u
permit u        0.0.0.0/0       -       0.0.0.0/0       -       -       -       -       -

设置用户名和密码

vi /etc/opt/ss5/ss5.passwd

一行一个账号,用户名和密码之间用空格间隔,例如:

user1 123
user2 234

设置端口

vi /etc/sysconfig/ss5

在/etc/sysconfig/ss5这个文件中,添加下面这一行命令,-b后面的参数代表监听的ip地址和端口号

# Add startup option here
SS5_OPTS=" -u root -b 0.0.0.0:8080"

启动

service ss5 start

阳光部落原创,更多内容请访问 http://www.sunbloger.com/

Linux中编译安装Redis和PHP扩展

Redis

Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。从2010年3月15日起,Redis的开发工作由VMware主持。从2013年5月开始,Redis的开发由Pivotal赞助。

 

下面,我们以Redis 3.0.2为例,对编译安装方法进行说明:

tar zxvf ./redis-3.0.2.tar.gz
cd redis-3.0.2
make
make install //默认情况下会部署到/usr/local/bin目录下

mkdir /etc/redis //用于存放位置文件
mkdir /usr/local/redis //用于存放数据

cd utils
./install_server.sh //运行安装脚本(守护进程、配置文件部署等)

Redis安装好后,接下来我们来为PHP安装Redis扩展:

tar zxvf ./phpredis-2.2.7.tar.gz
cd phpredis-2.2.7
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make
make install

上面的操作完成后,会在/usr/local/php/lib/php/extensions/no-debug-non-zts-20090626目录下生成出一个redis.so文件,下面我们需要把这个so文件加到php.ini中

vi /usr/local/php/etc/php.ini

具体设置如下:

extension_dir="/usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/"
extension=redis.so

阳光部落原创,更多内容请访问 http://www.sunbloger.com/

通过iptables规则让Linux主机屏蔽Ping

我们以CentOS为例,向iptables中添加如下三条规则:

-A RH-Firewall-1-INPUT -s 192.168.0.100 -p icmp -m icmp --icmp-type 0 -j ACCEPT
-A RH-Firewall-1-INPUT -s 192.168.0.100 -p icmp -m icmp --icmp-type 8 -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp -m icmp --icmp-type 8 -j DROP
-A RH-Firewall-1-INPUT -p icmp -m icmp --icmp-type 0 -j DROP

第1、2行定义了允许192.168.0.100这个ip允许向主机发出Ping请求

第3、4行定义禁止其他所有地址向主机发出Ping请求,接收到的数据包会被丢弃(DROP)

阳光部落原创,更多内容请访问 http://www.sunbloger.com/

在Linux中部署FFmpeg开源视频压缩环境过程简单笔记

下面是在Linux中部署FFmpeg和相关类库全过程的简单记录,如下:

编译安装yasm

tar zxvf ./yasm-1.3.0.tar.gz
cd yasm-1.3.0
./configure
make
make install

编译安装x264

tar xvfj ./x264.tar.bz2
cd x264
./configure --enable-shared
make
make install

编译安装lame

tar zxvf ./lame-3.99.5.tar.gz
cd lame-3.99.5
./configure --enable-shared
make && make install

编译安装libogg

tar zxvf ./libogg-1.3.2.tar.gz
cd libogg-1.3.2
./configure --enable-shared
make && make install

编译安装libvorbis

tar zxvf ./libvorbis-1.3.4.tar.gz
cd libvorbis-1.3.4
./configure
make && make install

编译安装faac

tar zxvf ./faac-1.28.tar.gz
cd faac-1.28
./configure
make && make install

编译安装ffmpeg

tar xvfj ./ffmpeg-2.5.1.tar.bz2
cd ffmpeg-2.5.1
./configure --prefix=/usr/local/ffmpeg2 --enable-libmp3lame --enable-libvorbis --enable-gpl --enable-version3 --enable-nonfree --enable-pthreads --enable-libfaac --enable-libx264 --enable-postproc --enable-ffserver --enable-ffplay
make && make install

# 继续编译 qt-faststart
./configure
make tools/qt-faststart
cp -a tools/qt-faststart /usr/bin/

将libx264写进ldconfig

locate libx264.so.142 #会显示/usr/local/lib/libx264.so.142
ln -s libx264.so.142 libx264.so
vi /etc/ld.so.conf.d/libx264.conf #写入/usr/local/lib
ldconfig

阳光部落原创,更多内容请访问 http://www.sunbloger.com/

Linux下管理Memcached的Service脚本

Memcached 的编译安装过程请参考本站的《Linux下部署Memcached和PHP的Memcache扩展方法

如 Memcached 已在 Linux 中安装完毕,且被部署到 /usr/local/memcached 这个路径下,接下来我们来开始为其安装用于启动和停止的服务管理脚本。

首先,通过 vi 在 /etc/rc.d/init.d 路径下新建一个名为 memcached 的脚本文件,命令如下:

vi /etc/rc.d/init.d/memcached

然后,向其中写入 Shell 脚本如下:

#!/bin/sh  
#  
# chkconfig: 2345 90 50
# description: Memcached Service Daemon
#
# processname: Memcached
#
# Source function library.
. /etc/rc.d/init.d/functions
. /etc/sysconfig/network
#[ ${NETWORKING} = "no" ] && exit 0
#[ -r /etc/sysconfig/dund ] || exit 0
#. /etc/sysconfig/dund
#[ -z "$DUNDARGS" ] && exit 0

MEMCACHED="/usr/local/memcached/bin/memcached"

start()
{
    echo -n $"Starting Memcached: "
    daemon $MEMCACHED -u daemon -d -m 32 -l 127.0.0.1 -p 11211 -c 256 -P /tmp/memcached.pid
    echo
}
stop()
{
    echo -n $"Shutting down Memcached: "
    killproc memcached
    echo
}

[ -f $MEMCACHED ] || exit 1
# See how we were called.
case "$1" in
    start)
        start
        ;;
    stop)
        stop
        ;;
    restart)
        stop
        sleep 3
        start
        ;;
    *)
        echo $"Usage: $0 {start|stop|restart}"
        exit 1
esac
exit 0

保存退出 vi 后,执行下面的命令来安装这个脚本

chmod 777 /etc/rc.d/init.d/memcached
chkconfig --add memcached
chkconfig --level 235 memcached on

然后可以通过下面的命令来检查是否安装成功

chkconfig --list | grep memcached
service memcached start
service memcached stop
service memcached restart

阳光部落原创,更多内容请访问 http://www.sunbloger.com/

Linux Bash发现重大安全漏洞

北京时间9月25日消息,Linux用户今天又得到了一个“惊喜”!Red Hat安全团队在 Linux 中广泛使用的Bash shell中发现了一个隐晦而危险的安全漏洞。该漏洞被称为“Bash Bug”或“Shellshock”。

当用户正常访问,该漏洞允许攻击者的代码像在Shell中一样执行,这就为各种各样的攻击打开了方便之门。而且,更糟糕的是,该漏洞已经在Linux中存在很长时间了,所以修补某个Linux机器很容易,但是要全部修补,几乎不可能实现。

Red Hat和Fedora已经发布了针对该漏洞的修补程序。该漏洞也会影响OS X,不过苹果公司尚未发布正式的修补程序。

这个Bash漏洞可能比Heartbleed更危险。

— — Robert Graham (@ErrataRob) 2014 年 9 月 24 日

Red Hat的Robert David Graham比较了该漏洞和Heartbleed,发现前者分布更广泛,有可能对系统安全带来长期影响。Graham在一篇博客文章中写道:“有大量的软件以某种方式与Shell交互,我们没有办法列举出受该漏洞影响的所有软件。”据The Verge报道,Berkeley ICSI的研究员Nicholas Weaver也同意这个说法:“它很隐晦、很可怕,并且会伴随我们多年。”

网络安全公司Rapid7工程部经理Tod Beardsley警告称,Bash漏洞的严重级别为“10”,这意味着它对用户电脑的威胁最大。Bash漏洞的利用复杂度级别为“低”,意味着黑客可以相对轻松地利用它发动攻击。

另外,网络安全公司Trail of Bits的CEO Dan Guido表示,“Heartbleed”漏洞能够允许黑客监控用户电脑,但不会取得控制权。而利用Bash漏洞的方法也更简单——只需要剪切和粘贴一行代码即可。

据称,谷歌安全研究员Tavis Ormandy在Twitter上表示,Linux系统提供商推出的补丁似乎“并不完整”,这引发了几位安全专家的担忧。(责编/单明珠)

本文转载自Linux中国,原文出自The Verge,部分内容有删改。

在Linux中用Shell脚本完成SVN版本库的建立

每次建立一个新的SVN版本库总感觉很繁琐,所以写了段脚本来把这个过程自动化,详细代码如下:

#!/bin/bash
# by www.sunbloger.com

echo -n "Enter SVN name :"
read svn_name
/usr/bin/svnadmin create /svnroot/$svn_name
if [ $? -eq 0 ]; then
    
    # svnserve.conf
    sed -i 's/# anon-access = read/anon-access = none/g' /svnroot/$svn_name/conf/svnserve.conf
    sed -i 's/# auth-access = write/auth-access = write/g' /svnroot/$svn_name/conf/svnserve.conf
    sed -i 's/# password-db = passwd/password-db = \/svnroot\/conf\/passwd/g' /svnroot/$svn_name/conf/svnserve.conf
    sed -i 's/# authz-db = authz/authz-db = authz/g' /svnroot/$svn_name/conf/svnserve.conf
    
    # authz
    cat > /svnroot/$svn_name/conf/authz<<EOF
[groups]
developer = jason
[/]
@developer = rw
EOF

fi

阳光部落原创,更多内容请访问http://www.sunbloger.com/

CentOS 7.0正式发布 新特性汇总

7月8日消息,基于Red Hat红帽免费公开的源代码的CentOS 7最新版正式发布,其基于企业级的Linux发行版本,是目前最受欢迎的Linux系统之一。

CentOS 7首个正式版的版本号为7.0.1406,主要更新内容如下:

— 内核更新至 3.10.0
— 支持 Linux 容器
— Open VMware Tools 及 3D 图像能即装即用
— OpenJDK-7作为缺省 JDK
— 原地升级 6.5 至 7.0
— ext4 及 XFS 的 LVM 快照
— 转用 systemd、firewalld 及GRUB2
— XFS 作为缺省文件系统
— 内核空间内的 iSCSI及FCoE
— 支持PTPv2
— 支持40G乙太网络卡

CentOS官方已经放出CentOS7.0.140 64位的版本下载地址,一如每个主要版本的首个发行本,多数组件都已作出改动及更新至较新版本。最重大的改动有包括内核更新至3.10.0、支持Linux 容器、Open VMware Tools 及 3D 图像能即装即用等。
下载地址:www.centos.org。

在Linux中将目录压缩打包为zip文件 并通过ftp上传的Shell脚本

下面的shell脚本是将/opt下yyyymmdd格式的目录压缩打包为bak_yyyymmdd.zip,并通过ftp上传到192.168.0.2上的bak目录下。

#!/bin/sh
root='/opt'
t=`date +%Y%m%d`
d="$root/$t"
if [ -d "$d" ]; then
    zip -r bak_$t $t/*
fi
ftp -v -n 192.168.0.2 << EOF
user ftpuser pw123
binary
hash
cd /bak
lcd $root
prompt
mput bak_$t.zip
bye
EOF

阳光部落原创,更多内容请访问http://www.sunbloger.com/