免费注册 查看新帖 |

Chinaunix

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

[系统管理] 帮忙看一下这种写法对不对(我想根据特有的字符串获取某个进程的PID) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-07-10 15:56 |只看该作者 |倒序浏览
我想根据特有的字符串获取某个进程的PID,如果PID大于0就杀掉进程,否则跳转到else语句进入启动该应用程序的过程。

  1. !/bin/sh
  2.   2 #Define

  3. ........

  4. 12     getprocess=`ps -ef|grep $ServerName1|grep -v grep|awk '{print $2}'`
  5. 13         if [[ $getprocess -gt 0 ]];then
  6. 14             echo "DATE:`date '+%Y-%m-%d %H:%M:%S'` The server01 is runnning and the pid is $getprocess"
  7. 15             echo "DATE:`date '+%Y-%m-%d %H:%M:%S'` KillING process $getprocess"
  8. 16             kill -9 $getprocess
  9. 17             echo "DATE:`date '+%Y-%m-%d %H:%M:%S'` Sleeping 10 secs..."
  10. 18             sleep 10
  11. 19             echo "DATE:`date '+%Y-%m-%d %H:%M:%S'` Start Server ING"
  12. 20             #Path Change
  13. 21             source /opt/user_projects/domains/gis_domain/start_$ServerNmame1.sh
  14. 22         else
  15. 23             echo "DATE:`date '+%Y-%m-%d %H:%M:%S'` The weblogic server01 is not running"
  16. 24             echo "DATE:`date '+%Y-%m-%d %H:%M:%S'` Start Server ING"
  17. 25             #Path Change
  18. 26             source /opt/user_projects/domains/gis_domain/start_$ServerName1.sh
  19. 27         fi
  20. 28 fi
复制代码
执行时报错。。。。.

/weblogic_server01: line 13: [[28746: command not found

百思不得其解,求各位帮忙看看。

论坛徽章:
60
20周年集字徽章-20	
日期:2020-10-28 14:04:3015-16赛季CBA联赛之北京
日期:2016-07-06 15:42:0715-16赛季CBA联赛之同曦
日期:2016-06-12 10:38:0915-16赛季CBA联赛之佛山
日期:2016-05-27 11:54:56黄金圣斗士
日期:2015-12-02 11:44:35白银圣斗士
日期:2015-11-25 14:32:43白银圣斗士
日期:2015-11-23 12:53:352015亚冠之布里斯班狮吼
日期:2015-10-21 16:55:482015亚冠之首尔
日期:2015-09-01 16:46:052015亚冠之德黑兰石油
日期:2015-08-31 11:39:192015亚冠之萨济拖拉机
日期:2015-08-28 21:06:5315-16赛季CBA联赛之广东
日期:2016-07-12 14:58:53
2 [报告]
发表于 2014-07-10 16:10 |只看该作者
目测没看出问题..

bash -x xxx.sh 把结果贴上来看看呗

论坛徽章:
0
3 [报告]
发表于 2014-07-10 16:20 |只看该作者
本帖最后由 jerrymy 于 2014-07-10 16:23 编辑

回复 2# reyleon

奇怪的是,这个脚本用来监控weblogic的管理服务器则没有问题,只是监控这个受管理服务器server01有问题。

后面这些数字怎么回事,我看了下不是系统里的进程。。。

  1.     [root@zqh zqh_domain]# bash -x weblogic_server01
  2. + ServerName1=server01
  3. + /usr/bin/curl -m 5 -G http://IP/console
  4. + echo 'Getting pid of weblogic server01...'
  5. Getting pid of weblogic server01...
  6. ++ ps -ef
  7. ++ grep server01
  8. ++ grep -v grep
  9. ++ awk '{print $2}'
  10. + getprocess='28746
  11. 28801
  12. 30567
  13. 30622
  14. 30651
  15. 30723
  16. 30743
  17. 30745'
  18. + [[ 28746
  19. 28801
  20. 30567
  21. 30622
  22. 30651
  23. 30723
  24. 30743
  25. 30745 -gt 0 ]]
  26. weblogic_server01: line 13: [[: 28746
  27. 28801
  28. 30567
  29. 30622
  30. 30651
  31. 30723
  32. 30743
  33. 30745: syntax error in expression (error token is "28801
  34. 30567
  35. 30622
  36. 30651
  37. 30723
  38. 30743
  39. 30745")
  40. ++ date '+%Y-%m-%d %H:%M:%S'
  41. + echo 'DATE:2014-07-10 04:16:33 The weblogic server01 is not running'
  42. DATE:2014-07-10 04:16:33 The weblogic server01 is not running
  43. ++ date '+%Y-%m-%d %H:%M:%S'
  44. + echo 'DATE:2014-07-10 04:16:33 Start Server ING'
  45. DATE:2014-07-10 04:16:33 Start Server ING
  46. + source /opt/user_projects/domains/gis_domain/start_server01.sh
  47. ++ USER_MEM_ARGS='-Xms1024m -Xmx2048m -XX:MaxPermSize=256m'
  48. ++ export USER_MEM_ARGS
  49. ++ nohup ./bin/startManagedWebLogic.sh server01 IP
复制代码

论坛徽章:
60
20周年集字徽章-20	
日期:2020-10-28 14:04:3015-16赛季CBA联赛之北京
日期:2016-07-06 15:42:0715-16赛季CBA联赛之同曦
日期:2016-06-12 10:38:0915-16赛季CBA联赛之佛山
日期:2016-05-27 11:54:56黄金圣斗士
日期:2015-12-02 11:44:35白银圣斗士
日期:2015-11-25 14:32:43白银圣斗士
日期:2015-11-23 12:53:352015亚冠之布里斯班狮吼
日期:2015-10-21 16:55:482015亚冠之首尔
日期:2015-09-01 16:46:052015亚冠之德黑兰石油
日期:2015-08-31 11:39:192015亚冠之萨济拖拉机
日期:2015-08-28 21:06:5315-16赛季CBA联赛之广东
日期:2016-07-12 14:58:53
4 [报告]
发表于 2014-07-10 16:22 |只看该作者
回复 3# jerrymy


    额额额 你看这个已经很明显了啊.. 你获取到的PID 不止一个,那么多个PID ,你不能这么比较啊 ..

论坛徽章:
0
5 [报告]
发表于 2014-07-10 16:24 |只看该作者
本帖最后由 jerrymy 于 2014-07-10 16:26 编辑

可是系统里没这些个进程

[root@zqh gis_domain]# ps aux|grep 30567
root     30850  0.0  0.0  63420   756 pts/1    S+   04:21   0:00 grep 30567
[root@zqh gis_domain]# ps aux|grep 30622
root     30852  0.0  0.0  63420   760 pts/1    S+   04:22   0:00 grep 30622
[root@zqh gis_domain]# ps -ef|grep 30567
root     30856 26759  0 04:23 pts/1    00:00:00 grep 30567


===========================

kill -9 30622
-bash: kill: (30622) - ûóDÄǸö½ø3ì



回复 4# reyleon


   

论坛徽章:
33
荣誉会员
日期:2011-11-23 16:44:17天秤座
日期:2014-08-26 16:18:20天秤座
日期:2014-08-29 10:12:18丑牛
日期:2014-08-29 16:06:45丑牛
日期:2014-09-03 10:28:58射手座
日期:2014-09-03 16:01:17寅虎
日期:2014-09-11 14:24:21天蝎座
日期:2014-09-17 08:33:55IT运维版块每日发帖之星
日期:2016-04-17 06:23:27操作系统版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-24 06:20:0015-16赛季CBA联赛之天津
日期:2016-05-06 12:46:59
6 [报告]
发表于 2014-07-10 16:24 |只看该作者
jerrymy 发表于 2014-07-10 15:56
/weblogic_server01: line 13: [[28746: command not found


如果这一行是你贴过来的, 说明你 '[[' 后面少了一个空格.

论坛徽章:
0
7 [报告]
发表于 2014-07-10 16:29 |只看该作者
空格是有的回复 6# q1208c


   

论坛徽章:
0
8 [报告]
发表于 2014-07-10 16:38 |只看该作者
这是另外一个一模一样功能的脚本,不同的只是监控的服务器名,这个脚本执行没有问题

回复 4# reyleon

  1. #!/bin/sh
  2. #Define

  3. ServerName1=AdminServer

  4. if /usr/bin/curl -m 5 -G http://IP/console>/dev/null 2>&1
  5. then
  6.     status=1
  7.     echo "DATE:`date '+%Y-%m-%d %H:%M:%S'` The server is running well."
  8. else
  9.     echo "Getting pid of weblogic AdminServer..."
  10.     getprocess=`ps -ef|grep $ServerName1|grep -v grep|awk '{print $2}'`
  11.         if [[ $getprocess -gt 0 ]];then
  12.             echo "DATE:`date '+%Y-%m-%d %H:%M:%S'` The AdminServer is runnning and the pid of AdminServer is $getprocess"
  13.             echo "DATE:`date '+%Y-%m-%d %H:%M:%S'` KillING process $getprocess"
  14.             kill -9 $getprocess
  15.             echo "DATE:`date '+%Y-%m-%d %H:%M:%S'` Sleeping 10 secs..."
  16.             sleep 10
  17.             echo "DATE:`date '+%Y-%m-%d %H:%M:%S'` Start Server ING"
  18.             #Path Change
  19.             source /opt/user_projects/domains/gis_domain/startWebLogic.sh
  20.         else
  21.             echo "DATE:`date '+%Y-%m-%d %H:%M:%S'` The weblogic AdminServer is not running"
  22.             echo "DATE:`date '+%Y-%m-%d %H:%M:%S'` Start Server ING"
  23.             #Path Change
  24.             source /opt/user_projects/domains/gis_domain/startWebLogic.sh
  25.         fi
  26. fi

复制代码

论坛徽章:
60
20周年集字徽章-20	
日期:2020-10-28 14:04:3015-16赛季CBA联赛之北京
日期:2016-07-06 15:42:0715-16赛季CBA联赛之同曦
日期:2016-06-12 10:38:0915-16赛季CBA联赛之佛山
日期:2016-05-27 11:54:56黄金圣斗士
日期:2015-12-02 11:44:35白银圣斗士
日期:2015-11-25 14:32:43白银圣斗士
日期:2015-11-23 12:53:352015亚冠之布里斯班狮吼
日期:2015-10-21 16:55:482015亚冠之首尔
日期:2015-09-01 16:46:052015亚冠之德黑兰石油
日期:2015-08-31 11:39:192015亚冠之萨济拖拉机
日期:2015-08-28 21:06:5315-16赛季CBA联赛之广东
日期:2016-07-12 14:58:53
9 [报告]
发表于 2014-07-10 16:51 |只看该作者
回复 8# jerrymy


你的脚本名是: weblogic_server01

你又根据"server01"这个字符串去获取相关进程.

你执行脚本的时候会生成一个存在"server01" 字符串的进程,或许你还有其他以"server01"为关键字的进程. 获取的时候肯定有多个进程啦.


1. 要么你把脚本的名字改下
2. 要么你在过滤进程获取PID的时候更严谨一下.

论坛徽章:
0
10 [报告]
发表于 2014-07-10 16:55 |只看该作者
低级错误。。。。你太细心了。高手就是高手!没问题了。

啊!!!我想自残!就TMD这个原因!

回复 9# reyleon


   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP