免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12345
最近访问板块 发新帖
楼主: jerrymy
打印 上一主题 下一主题

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

论坛徽章:
0
41 [报告]
发表于 2014-07-22 14:59 |只看该作者
本帖最后由 jerrymy 于 2014-07-22 15:00 编辑

我如何获取前一个指令执行状态值给某个变量然后再做数值比较呢?

比如这个语句蓝色部分的执行状态值与0做比较,现在的写法肯定不对的。

until [[ /usr/bin/curl  -m 5 -G http://10.111.58.90/console>/dev/null 2>&1 -ne 0 ]]
    do
        /bin/echo "DATE:`date '+%Y-%m-%d %H:%M:%S'` The AdminServer is startting,wait a moment please."
    done

回复 31# reyleon


   

论坛徽章:
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
42 [报告]
发表于 2014-07-22 15:06 |只看该作者
回复 41# jerrymy


    干嘛还要与0 做比较呢?

你直接使用
  1. until [[ $(/usr/bin/curl  -m 5 -G http://10.111.58.90/console>/dev/null 2>&1) ]];do
  2.     ....
  3. done
复制代码
如果你硬是要做比较的话.
  1. /usr/bin/curl  -m 5 -G http://10.111.58.90/console>/dev/null 2>&1
  2. status=$?
  3. until [[ $status -eq 0 ]];do
  4.     ....
  5. done
复制代码

论坛徽章:
0
43 [报告]
发表于 2014-07-22 19:19 |只看该作者
本帖最后由 jerrymy 于 2014-07-22 19:19 编辑

谢了,上面一个逻辑符合期望。

不过我已经用这种方式了:

  1. /usr/bin/curl  -m 5 -G http://ip/console>/dev/null 2>&1(在我的服务器上这一句一定不会成功执行,循环检测这句执行成功就退出循环,有点繁琐了,但能用)
  2.     while [[ $? -ne 0 ]]
  3.     do
  4.         /bin/echo "DATE:`date '+%Y-%m-%d %H:%M:%S'` Sleep 5 secs..."
  5.         /bin/sleep 5
  6.         /bin/echo "DATE:`date '+%Y-%m-%d %H:%M:%S'` The AdminServer is startting,wait a moment please."
  7.         /usr/bin/curl  -m 5 -G http://ip/console>/dev/null 2>&1
  8.     done

  9. [b]回复 [url=forum.php?mod=redirect&goto=findpost&pid=&ptid=4145437]42#[/url] [color=Olive]reyleon[/color] [/b]

复制代码

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

现在是这个样子的,用bash -x执行能成功,放到crontab里只能执行部分。箭头所指的语句不会执行。。。头大了。

  1. #!/bin/sh
  2. #Define
  3. PATH=/usr/jrockit-jdk1.6.0_45-R28.2.7-4.1.0/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/jrockit-jdk1.6.0_45-R28.2.7-4.1.0/bin:/root/jrockit-jdk1.6.0_45-R28.2.7-4.1.0/bin:/usr/jrockit-jdk1.6.0_45-R28.2.7-4.1.0/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/jrockit-jdk1.6.0_45-R28.2.7-4.1.0/bin:HOME/bin:/bin
  4. export PATH=$PATH
  5. ServerName1=server01
  6. if /usr/bin/curl -m 5 -G http://IP:70/gmap>/dev/null 2>&1
  7. then
  8.     status=1
  9.     /bin/echo "DATE:`date '+%Y-%m-%d %H:%M:%S'` The server is running well."
  10. else
  11.     /bin/echo "DATE:`date '+%Y-%m-%d %H:%M:%S'` Kill the AdminServer."
  12.     /bin/ps -ef | grep AdminServer | grep -v grep | awk '{print $2}' |xargs kill -9
  13.     /bin/echo "DATE:`date '+%Y-%m-%d %H:%M:%S'` Start the AdminServer first."
  14.     /usr/bin/nohup /opt/user_projects/domains/gis_domain/startWebLogic.sh >> /opt/user_projects/domains/gis_domain/logs/Admin.log &
  15.     /usr/bin/curl  -m 5 -G http://ip/console>/dev/null 2>&1
  16.     while [[ $? -ne 0 ]]
  17.     do
  18.         /bin/echo "DATE:`date '+%Y-%m-%d %H:%M:%S'` Sleep 5 secs..."
  19.         /bin/sleep 5
  20.         /bin/echo "DATE:`date '+%Y-%m-%d %H:%M:%S'` The AdminServer is startting,wait a moment please."
  21.         /usr/bin/curl  -m 5 -G http://ip/console>/dev/null 2>&1
  22.     done
  23.     /bin/echo "DATE:`date '+%Y-%m-%d %H:%M:%S'` Getting pid of weblogic server01 and kill all of them..."
  24.     /bin/ps -ef | grep server01 | grep -v grep | awk '{print $2}' |xargs kill -9
  25.     if [[ $? -eq 0 ]]
  26.     then
  27.         /bin/echo "DATE:`date '+%Y-%m-%d %H:%M:%S'` ALL processes are killed!"
  28.         /bin/echo "DATE:`date '+%Y-%m-%d %H:%M:%S'` Sleep 5 secs..."
  29.         /bin/sleep 5
  30.         /bin/echo "DATE:`date '+%Y-%m-%d %H:%M:%S'` Starting server01..."
  31.        /usr/bin/nohup /opt/user_projects/domains/gis_domain/start_$ServerName1.sh  &<<==========这里
  32.     else
  33.         /bin/echo "There are  no processes match the pattern,please check out!"
  34.         /bin/sleep 5
  35.         /bin/echo "DATE:`date '+%Y-%m-%d %H:%M:%S'` Starting server01..."
  36.         #Path Change
  37.        /usr/bin/nohup /opt/user_projects/domains/gis_domain/start_$ServerName1.sh &<<==========这里
  38.    fi

  39. fi
复制代码
回复 42# reyleon


   

论坛徽章:
0
45 [报告]
发表于 2014-07-24 11:11 |只看该作者
大神帮忙看看

start_server01.sh的内容如下:

USER_MEM_ARGS="-Xms1024m -Xmx2048m -XX:MaxPermSize=256m"
export USER_MEM_ARGS
nohup ./bin/startManagedWebLogic.sh server01 http://IP >> logs/server01.log &

回复 32# Shell_HAT


   

论坛徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年纪念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役纪念章
日期:2022-04-24 14:33:24
46 [报告]
发表于 2014-07-24 11:37 |只看该作者
回复 45# jerrymy


start_server01.sh 里面用的是相对路径

你用
echo $PWD
/usr/bin/nohup /opt/user_projects/domains/gis_domain/start_$ServerName1.sh
看看路径是不是错了

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

我把server01启动脚本改成这样好像生效了:
USER_MEM_ARGS="-Xms1024m -Xmx2048m -XX:MaxPermSize=256m"
export USER_MEM_ARGS
nohup /opt/user_projects/domains/gis_domain/bin/startManagedWebLogic.sh server01 http://IP >> /opt/user_projects/domains/gis_domain/bin/logs/server01.log &
回复 46# Shell_HAT


   

论坛徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年纪念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役纪念章
日期:2022-04-24 14:33:24
48 [报告]
发表于 2014-07-24 14:29 |只看该作者
本帖最后由 Shell_HAT 于 2014-07-24 14:30 编辑

回复 47# jerrymy


server01里面已经有nohup了,先把你自己的脚本里面的nohup去掉,直接这样:
/opt/user_projects/domains/gis_domain/start_$ServerName1.sh

然后在crontab里面:
* * * * * /var/tmp/test.sh > /var/tmp/test.log 2>&1
把 test.log 的内容发出来看看

论坛徽章:
0
49 [报告]
发表于 2014-07-24 14:46 |只看该作者
本帖最后由 jerrymy 于 2014-07-24 14:47 编辑

起效了,刚才是日志目录不存在,多了点东西,就是改为绝对路径就好了,待我放生成服务器试运行!

太感谢你了!

我以后写脚本一定都用绝对路径,不再坑人!

/opt/user_projects/domains/gis_domain/bin/logs/server01.log蓝色的要去掉。
回复 48# Shell_HAT


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

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP