提醒:本文最后更新于 2881 天前,文中所描述的信息可能已发生改变,请仔细核实。
作为经费不足的站长。。。一台VPS已经是我的极限了。欢迎赞助我,喵~
所以如果服务器挂了,肯定是没法KeepAlive的。
但如果服务器没挂,而是应用(可能是Varnish、Nginx、MySQL、PHP等)挂了,怎么办?
虽然如此,人生就是为了活的有点逼格。所以就简单利用cron job来循环检测。
主要目的就是,确保应用在线。流程如下:
1.确定应用是否创建了pid文件,如果没有,肯定没启动,启动应用。
2.如果创建pid文件,但通过pid找不到进程信息,说明应用可能已经崩溃,启动应用。
3.如果都正常,说明应用正常运行中,列出各自状态。
这是按照我的VPS的应用写的。实际大家按照需求,参考改动。
把代码放上来,供大家参考:
#!/bin/sh ############### VARNISHPIDFILE=/var/run/varnish.pid if [ ! -r $VARNISHPIDFILE ] ; then /etc/init.d/varnishd start fi NGINXPIDFILE=/var/run/nginx.pid if [ ! -r $NGINXPIDFILE ] ; then /etc/init.d/nginx start fi MYSQLPIDFILE=/var/run/mysql.pid if [ ! -r $MYSQLPIDFILE ] ; then /etc/init.d/mysql start fi PHPPIDFILE=/var/run/php-fpm.pid if [ ! -r $PHPPIDFILE ] ; then /etc/init.d/php-fpm start fi MEMCACHEPIDFILE=/var/run/memcached.pid if [ ! -r $MEMCACHEPIDFILE ] ; then /etc/init.d/memcached start fi REDISPIDFILE=/var/run/redis.pid if [ ! -r $REDISPIDFILE ] ; then /etc/init.d/redisd start fi ############### VARNISHPID=`cat $VARNISHPIDFILE` if ps -p $VARNISHPID | grep -q $VARNISHPID; then /etc/init.d/varnishd status else /etc/init.d/varnishd start fi NGINXPID=`cat $NGINXPIDFILE` if ps -p $NGINXPID | grep -q $NGINXPID; then /etc/init.d/nginx status else /etc/init.d/nginx start fi MYSQLPID=`cat $MYSQLPIDFILE` if ps -p $MYSQLPID | grep -q $MYSQLPID; then /etc/init.d/mysql status else /etc/init.d/mysql start fi PHPPID=`cat $PHPPIDFILE` if ps -p $PHPPID | grep -q $PHPPID; then /etc/init.d/php-fpm status else /etc/init.d/php-fpm start fi MEMCACHEPID=`cat $MEMCACHEPIDFILE` if ps -p $MEMCACHEPID | grep -q $MEMCACHEPID; then /etc/init.d/memcached status else /etc/init.d/memcached start fi REDISPID=`cat $REDISPIDFILE` if ps -p $REDISPID | grep -q $REDISPID; then /etc/init.d/redisd status else /etc/init.d/redisd start fi
将上述代码保存到任意文件即可,我是保存到/home/web_keepalived。
另简单介绍Crontab命令:
基本格式:
* * * * * command
分 时 日 月 周 命令
第1列表示分钟1~59 每分钟用*或者 */1表示
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列表示月份1~12
第5列标识号星期0~6(0表示星期天)
第6列要运行的命令
现在起,我们就可以通过:
crontab -e
输入:
*/1 * * * * /bin/sh /home/web_keepalived >/dev/null 2>&1
来自动执行(每分钟会执行一次脚本),以达到应用一直在线的目的。
>/dev/null 2>&1
的目的是不输出信息,因为在cron下没必要输出。
更多crontab命令帮助,请自行搜索。
本篇文章结束,下篇文章更精彩,明天发布哦。
转载请注明转自:kn007的个人博客的《再说博客服务器的KeepAlive》