免费注册 查看新帖 |

Chinaunix

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

关于程序自动重启 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-02-10 09:22 |只看该作者 |倒序浏览
20可用积分
在我们生产机上,有一个shell,用于在程序退出出自动重启,如下:
#!/bin/sh
. ~/.profile

ps -ef | grep "insdb -s2 -a -p1" |grep -v "grep" |grep -v "run_insdb" | awk '{print $2"\t" $9}'>/tmp/insdb.$$

if [ ! -s /tmp/insdb.$$ ]; then
   cd /home1/psett/bin_newc
   echo "Start processes insdb:"`date +"%C%y%m%d%H%M%S"` >> run_insdb.log
   nohup /home1/psett/bin_newc/insdb -s2 -a -p1>/dev/null&
   rm /tmp/insdb*
else
   cd /home1/psett/bin_newc
   echo "processes insdb are running:"`date +"%C%y%m%d%H%M%S"`>> run_insdb.log
fi

我有点看不懂了,请教各位高手几个问题一下:
1)>/tmp/insdb.$$p这两个$符是什么意思
2)if [ ! -s /tmp/insdb.$$ ]; 这是什么意思,这个是根据什么判断程序是否已经启动的呢?
先谢谢大家!

论坛徽章:
0
2 [报告]
发表于 2009-02-10 09:23 |只看该作者
对了,顺便问一下,开头的. ~/.profile是什么意思啊?
问题有点多,哈哈!

论坛徽章:
23
15-16赛季CBA联赛之吉林
日期:2017-12-21 16:39:27白羊座
日期:2014-10-27 11:14:37申猴
日期:2014-10-23 08:36:23金牛座
日期:2014-09-30 08:26:49午马
日期:2014-09-29 09:40:16射手座
日期:2014-11-25 08:56:112015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:0315-16赛季CBA联赛之山东
日期:2017-12-21 16:39:1915-16赛季CBA联赛之广东
日期:2016-01-19 13:33:372015亚冠之山东鲁能
日期:2015-10-13 09:39:062015亚冠之西悉尼流浪者
日期:2015-09-21 08:27:57
3 [报告]
发表于 2009-02-10 09:24 |只看该作者

回复 #1 huangbt_unix 的帖子

看遍十三问,你的问题基本就没有了。

http://bbs2.chinaunix.net/thread-218853-1-1.html

论坛徽章:
0
4 [报告]
发表于 2009-02-10 09:35 |只看该作者
在我们生产机上,有一个shell,用于在程序退出出自动重启,如下:
#!/bin/sh
. ~/.profile

ps -ef | grep "insdb -s2 -a -p1" |grep -v "grep" |grep -v "run_insdb" | awk '{print $2"\t" $9}'>/tmp/insdb.$$
#这个就是判断程序的进程是否有存在,有存在的话,会把相关信息写入到/tmp/insdb.$$
$$表示父进程的pid


if [ ! -s /tmp/insdb.$$ ]; then
#-s  表示/tmp/insdb.$$文件存在并且文件大小大于0
加了一个!表示相反的意思。就是表示文件大小为0,那么进程不存在,进行重启操作。

   cd /home1/psett/bin_newc
   echo "Start processes insdb:"`date +"%C%y%m%d%H%M%S"` >> run_insdb.log
   nohup /home1/psett/bin_newc/insdb -s2 -a -p1>/dev/null&
   rm /tmp/insdb*
else
   cd /home1/psett/bin_newc
   echo "processes insdb are running:"`date +"%C%y%m%d%H%M%S"`>> run_insdb.log
fi

论坛徽章:
0
5 [报告]
发表于 2009-02-10 09:37 |只看该作者
$$    脚本自身的进程ID.
if [ ! -s /tmp/insdb.$$ ];这个是表示/tmp/insdb.$$文件是否不存在!(-s是表示判断文件是否存在并且文件大小大于0)
至于这个~/.profile,你用cd ~在shell上试下就明白了,呵呵!

[ 本帖最后由 飞鸿无痕 于 2009-2-10 09:43 编辑 ]

论坛徽章:
3
戌狗
日期:2014-09-10 17:07:162015年辞旧岁徽章
日期:2015-03-03 16:54:15wusuopu
日期:2016-06-17 17:43:45
6 [报告]
发表于 2009-02-10 09:38 |只看该作者
原帖由 ly5066113 于 2009-2-10 09:24 发表
看遍十三问,你的问题基本就没有了。

http://bbs2.chinaunix.net/thread-218853-1-1.html

支持楼主系统的学习下

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
7 [报告]
发表于 2009-02-10 09:49 |只看该作者
ps 一次
echo $$ 两次

一看就明白了

论坛徽章:
0
8 [报告]
发表于 2009-02-10 10:12 |只看该作者
原帖由 ly5066113 于 2009-2-10 09:24 发表
看遍十三问,你的问题基本就没有了。

http://bbs2.chinaunix.net/thread-218853-1-1.html

的确,还是先系统的看下要好些

论坛徽章:
0
9 [报告]
发表于 2009-02-10 10:29 |只看该作者
这个问题就值20分了,LZ太大方了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP