免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1737 | 回复: 6
打印 上一主题 下一主题

[系统管理] 又得不到pid了,上次的问题还是没搞定 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-03-14 10:09 |只看该作者 |倒序浏览
我有个重启memcached的脚本,奇怪的很,有的机器上能得到pid,有的机器不行。
上次的提问:http://bbs.chinaunix.net/thread-4067693-1-1.html
大家看看我的脚本执行结果:
  1. root@MJ-GS1:/opt/tools# sh -x ./mem_restart.sh  /var/www/html/
  2. + path=/var/www/html/
  3. + exec_log_file=/opt/tools/mem_restart.log
  4. + cat /var/www/html//config.php
  5. + grep Memport
  6. + awk {print $3}
  7. + sed s/\;//
  8. + mem_port=11211
  9. + ps -eaf
  10. + grep memcache
  11. + grep -v grep
  12. + grep 11211
  13. + awk {print $2}
  14. + mem_pid=
  15. + ifconfig
  16. + grep inet addr:
  17. + grep -v 127.0.0.1
  18. + cut -d: -f2
  19. + awk { print $1}
  20. + ipaddr=192.168.105.153
  21. + echo 192.168.105.153
  22. + cut -d. -f1
  23. + ipaddr_fr=192
  24. + cat /dev/null
  25. + [ ! -f /var/www/html//config.php ]
  26. + [  !=  ]
  27. + [ 192 -ne 10 ]
  28. -u nobody -l 127.0.0.1 -d24 -p 11211
  29. + mem_cmd=
  30. + kill -9
  31. kill: 1: Usage: kill [-s sigspec | -signum | -sigspec] [pid | job]... or
  32. kill -l [exitstatus]
  33. + sleep 1
  34. + echo old_mem_pid =
  35. + exec
  36. + ps -ef
  37. + grep memcache
  38. + grep -v grep
  39. + grep 11211
  40. + awk {print $2}
  41. + echo new_mem_pid =
  42. + [ 192 -ne 10 ]
  43. + echo restart
  44. restart
  45. + nohup /usr/sbin/service php5-fpm restart
  46. + ps_list fpm
  47. + ps -ef
  48. + grep fpm
  49. + grep -v grep
  50. + wc -l
  51. + [ 2 -lt 1 ]
  52. + exit
复制代码
下面是这个重启mem & fpm的脚本
  1. #!/bin/bash
  2. path=$1
  3. exec_log_file=/opt/tools/mem_restart.log
  4. mem_port=`cat ${path}/config.php |grep Memport |awk '{print $3}'|sed "s/\;//"`
  5. mem_pid=`ps -eaf |grep memcache|grep -v grep |grep $mem_port|awk '{print $2}'`
  6. #mem_pid=`netstat -tpln|awk '$4~/'${mem_port}'$/&&$NF~/memcached$/{gsub(/\/sshd/,"");print $NF}'|cut -d\/ -f1`

  7. #mem_cmd=`ps -ef |grep mem|grep -v grep |awk 'NR==1 {S="";for(i=8;i<=NF;i++) S=S" "$i;print S}'`
  8. #process_deamon=`ps -ef |grep process_deamon |grep -v grep |wc -l`
  9. ipaddr=`ifconfig  | grep 'inet addr:'| grep -v '127.0.0.1' |cut -d: -f2 | awk '{ print $1}'`
  10. ipaddr_fr=`echo $ipaddr |cut -d. -f1 `
  11. ps_list() {
  12. ps -ef |grep $1|grep -v grep|wc -l
  13. }

  14. cat /dev/null > $exec_log_file
  15. if [ ! -f ${path}/config.php ] ; then
  16. echo "${path}/config.php does not exist !" > $exec_log_file
  17. exit
  18. fi

  19. if [ "$mem_pid" != "" ]; then
  20.         mem_cmd=`ps -ef |grep mem|grep $mem_port|grep -v grep |awk 'NR==1 {S="";for(i=8;i<=NF;i++) S=S" "$i;print S}'`
  21. elif [ $ipaddr_fr -ne 10 ] ; then
  22.         mem_cmd=`/usr/bin/memcached -m 1024 -p $mem_port -u nobody -l 127.0.0.1 -d`
  23. elif [ $ipaddr_fr -eq 10 ] ; then
  24.         mem_cmd=`/usr/local/app/lnmp/memcached/bin/memcached -m 1024 -p $mem_port -u nobody -l 127.0.0.1 -d`
  25. fi

  26.         kill -9 $mem_pid
  27.         sleep 1
  28.         exec $mem_cmd >/dev/null 2>&1 &
  29.         echo "old_mem_pid = $mem_pid" >> $exec_log_file
  30.         echo "new_mem_pid = `ps -ef |grep memcache|grep -v grep |grep $mem_port|awk '{print $2}'`" >> $exec_log_file

  31. if [ $ipaddr_fr -ne 10 ] ; then
  32.         echo "restart"
  33.         nohup /usr/sbin/service php5-fpm restart >>$exec_log_file 2>&1 &
  34.         while [ `ps_list "fpm"` -lt 1 ] ; do
  35.                 nohup /usr/sbin/service php5-fpm restart >>$exec_log_file 2>&1 &
  36.                 sleep 1
  37.         done
  38. else
  39.         pkill php-fpm
  40.         tsh /usr/local/app/lnmp/PHP/sbin/php-fpm
  41. fi
  42. exit
复制代码

论坛徽章:
15
2015年辞旧岁徽章
日期:2015-03-03 16:54:15双鱼座
日期:2015-01-15 17:29:44午马
日期:2015-01-06 17:06:51子鼠
日期:2014-11-24 10:11:13寅虎
日期:2014-08-18 07:10:55酉鸡
日期:2014-04-02 12:24:51双子座
日期:2014-04-02 12:19:44天秤座
日期:2014-03-17 11:43:36亥猪
日期:2014-03-13 08:13:51未羊
日期:2014-03-11 12:42:03白羊座
日期:2013-11-20 10:15:18CU大牛徽章
日期:2013-04-17 11:48:45
2 [报告]
发表于 2013-03-14 11:02 |只看该作者
至少给个“ps -ef |grep mem“ 的实际例子。

论坛徽章:
0
3 [报告]
发表于 2013-03-14 11:04 |只看该作者
把可以得到pid的机器的ps -ef |grep mem,
与不可以得到pid的机器的ps -ef |grep mem,
的结果都贴出来

论坛徽章:
0
4 [报告]
发表于 2013-03-14 11:20 |只看该作者
命令行下都能得到啊
  1. root@MJ-GS1:/opt/tools# ps -ef |grep memcache|grep -v grep |grep 11211|awk '{print $2}'
  2. 27169
复制代码

论坛徽章:
8
摩羯座
日期:2014-11-26 18:59:452015亚冠之浦和红钻
日期:2015-06-23 19:10:532015亚冠之西悉尼流浪者
日期:2015-08-21 08:40:5815-16赛季CBA联赛之山东
日期:2016-01-31 18:25:0515-16赛季CBA联赛之四川
日期:2016-02-16 16:08:30程序设计版块每日发帖之星
日期:2016-06-29 06:20:002017金鸡报晓
日期:2017-01-10 15:19:5615-16赛季CBA联赛之佛山
日期:2017-02-27 20:41:19
5 [报告]
发表于 2013-03-14 11:30 |只看该作者
ps -eaf 还是 ps -ef  ?
ps a 和ps -a 的含义相同吗?

论坛徽章:
8
摩羯座
日期:2014-11-26 18:59:452015亚冠之浦和红钻
日期:2015-06-23 19:10:532015亚冠之西悉尼流浪者
日期:2015-08-21 08:40:5815-16赛季CBA联赛之山东
日期:2016-01-31 18:25:0515-16赛季CBA联赛之四川
日期:2016-02-16 16:08:30程序设计版块每日发帖之星
日期:2016-06-29 06:20:002017金鸡报晓
日期:2017-01-10 15:19:5615-16赛季CBA联赛之佛山
日期:2017-02-27 20:41:19
6 [报告]
发表于 2013-03-14 11:33 |只看该作者
另外建议观察一下 init.d中的诸多脚本,有哪一个是用ps找pid的?启动的时候记录一个吧,

论坛徽章:
0
7 [报告]
发表于 2013-03-14 11:53 |只看该作者
无论是-eaf还是-ef,我在命令行下都能得到pid,为什么脚本里面不行呢
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP