一个服务程序的启动和关闭

服务程序又被称为daemon程序,运行过程中可能随时fork子进程。
启动的方法,直接运行就可以了。

在程序的运行过程中,可以将当前进程和其fork子进程的PID,写到一个PID文件中。

然后关闭的时候,可以用shell脚本来关闭。

kill -HUP `cat /pid/file/path`

ubuntu搭建vpn服务器

1. 安装pptpd,这是个VPN服务器端软件

sudo apt-get install pptpd

2. 修改文件 /etc/pptpd.conf

sudo vi /etc/pptpd.conf

找到# TAG: localip一行,在后面添加以下2行:
localip 192.168.0.1
remoteip 192.168.0.234-238,192.168.0.245
3. 修改文件 /etc/ppp/pptpd-options

sudo vi /etc/ppp/pptpd-options

找到 #ms-dns这行,去掉前面的#号,修改成google提供的DNS server或其他DNS:
ms-dns 8.8.8.8
4. 修改文件 /etc/ppp/chap-secrets,按一行四列添加账号、服务器名、密码和IP限制。服务器名(默认 写pptpd 即可,务必与 pptpd-options 文件的name一行一样)。如创建一个名为user,密码为userpasswd,不限制登录IP的VPN账号:
user pptpd userpasswd *
5. 修改文件 /etc/sysctl.conf,去掉这一行 #net.ipv4.ip_forward=1 的#号,开启ipv4 forward,然后运行命令:

sudo sysctl –p

运行后会显示 net.ipv4.ip_forward = 1,就表示修改生效了。
6. 使用iptables建立一个NAT

sudo apt-get install iptables
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE

上面的24表示子网掩码,代表24个1.
eth0是网卡名字,可以通过命令 ifconfig 查看

为防止重启服务器后iptables丢失,先运行
iptables-save > tmp
cp tmp /etc/iptables-rules
考虑到直接重定向到/etc/iptables-rules文件没有权限,所以用了一个tmp文件做了中转。

然后修改文件 /etc/network/interfaces ,在eth0/eth1.. 下面加入
pre-up iptables-restore < /etc/iptables-rules
7. 现在应该就搞定了,最后重启 pptpd

sudo /etc/init.d/pptpd restart

注意:请打开 PPTP 对应的 1723 号端口

随时监测你的PHP应用程序

php中有一个叫做tick的东西,可以每隔一段代码行来插入一个用户自定义的回调,来统计一些信息。

用法,如下:

declare(ticks=1);
register_tick_function('memory_tick');

function memory_tick(){
	$str = " echo \"" . 	microtime(true) . "\t ".memory_get_usage()." \" >> /tmp/memory.log";
	system($str);
}

例子中是将当前的时间和当前使用的内存,写入到了/tmp/memory.log中。