召唤大神,求一段可以重启程序crashed的程序的脚本

sh/bash/dash/ksh/zsh等Shell脚本
回复
头像
Lavande
论坛版主
帖子: 5352
注册时间: 2008-12-21 15:27
来自: TARDIS

召唤大神,求一段可以重启程序crashed的程序的脚本

#1

帖子 Lavande » 2010-02-05 22:56

用了amule-dlp,不是很稳定,可能会程序自动退出
想开了一夜不关机,要是crash了就浪费电了……
所以想有个脚本在后台跑着,发现amule进程没了就再启动它
恳请高手写一段这样的脚本 :em42 :em42
上次由 Lavande 在 2010-02-06 22:42,总共编辑 1 次。
cosechy
帖子: 82
注册时间: 2008-03-06 4:56

Re: 求一段可以重启程序crashed的程序的脚本

#2

帖子 cosechy » 2010-02-06 18:51

until 命令; do :; done
头像
Lavande
论坛版主
帖子: 5352
注册时间: 2008-12-21 15:27
来自: TARDIS

Re: 求一段可以重启程序crashed的程序的脚本

#3

帖子 Lavande » 2010-02-06 18:58

cosechy 写了:until 命令; do :; done
不懂,不会判别进程是不是存在啊 :em20
delectate
帖子: 18311
注册时间: 2008-01-09 22:41

Re: 召唤大神,求一段可以重启程序crashed的程序的脚本

#5

帖子 delectate » 2010-02-06 22:48

应该是ps,然后找amule,没有则启动,有则继续守护amule

不会写shellcode :em06


c,可以吗?
头像
Lavande
论坛版主
帖子: 5352
注册时间: 2008-12-21 15:27
来自: TARDIS

Re: 召唤大神,求一段可以重启程序crashed的程序的脚本

#6

帖子 Lavande » 2010-02-06 22:59

delectate 写了:应该是ps,然后找amule,没有则启动,有则继续守护amule

不会写shellcode :em06


c,可以吗?
可以啊,正好我研究一下代码,现在就在打酱油式地学C语言 :em06
delectate
帖子: 18311
注册时间: 2008-01-09 22:41

Re: 召唤大神,求一段可以重启程序crashed的程序的脚本

#7

帖子 delectate » 2010-02-07 10:39

还是拿shellcode写的,方法用的是最笨的 :em06

代码: 全选

#/bin/bash

min=1
process='amule'                                            #修改需要监护的进程
until [ $min -eq 2 ]
    do
 ps -e | grep $process >processexist            
  s=`du -b processexist |awk '{print $1}'`       #不用理会,我也是淘来的awk    :) 

if [ $s -eq 0 ]
then
nohup  $process &                                          #fixme
#这个有问题,主要表现是关闭终端,则次终端启动的进程一并消失,即使使用nohup和&都无济于事,暂时不知道如何fix
fi 

sleep 5
done
firefoxmmx
帖子: 407
注册时间: 2006-07-28 8:51

Re: 召唤大神,求一段可以重启程序crashed的程序的脚本

#8

帖子 firefoxmmx » 2010-02-07 11:35

你可能要稍微该该¥AMULE那个位置

代码: 全选

#!/bin/bash                         

OPT=$(getopt -o t: -- "$@")
SLEEP_TIME="10"            

if [ $? != 0 ]; then
    echo >&2 "usage: $0 <option1> ..."
    exit 1                            
fi                                    

eval set -- "$OPT"
echo BEFORE:"$@"  
for i; do         
    case $i in    
        --) break;;
        -t) SLEEP_TIME="$2"; shift;;
    esac                            
    shift
done

while true; do
    AMULE=$(ps aux|grep -v grep|grep amuled$)
    echo "$AMULE"
    if [ -z "$AMULE" ];then
        amuled
    fi

    sleep "$SLEEP_TIME"
done
firefoxmmx
帖子: 407
注册时间: 2006-07-28 8:51

Re: 召唤大神,求一段可以重启程序crashed的程序的脚本

#9

帖子 firefoxmmx » 2010-02-07 11:38

其实AMULE主要CRASHED的原因是他的wxgtk有问题。。一般用上amuled后这个问题就很少出现了(打开它的GUI后这个问题会再次出现,我懒得去该代码,就这样先顶着)。
头像
Lavande
论坛版主
帖子: 5352
注册时间: 2008-12-21 15:27
来自: TARDIS

Re: 召唤大神,求一段可以重启程序crashed的程序的脚本

#10

帖子 Lavande » 2010-02-07 12:20

多谢大家,我来研究一下 :em11
头像
xzap
帖子: 256
注册时间: 2006-08-24 21:25

Re: 召唤大神,求一段可以重启程序crashed的程序的脚本

#11

帖子 xzap » 2010-02-07 13:34

代码: 全选

while :;do  ps -A|grep amule||amule &;sleep 10;done
头像
Lavande
论坛版主
帖子: 5352
注册时间: 2008-12-21 15:27
来自: TARDIS

Re: 召唤大神,求一段可以重启程序crashed的程序的脚本

#12

帖子 Lavande » 2010-02-07 14:15

代码: 全选

$ while :;do  ps -A|grep amule||amule &;sleep 10;done
bash: syntax error near unexpected token `;'
:em20
delectate
帖子: 18311
注册时间: 2008-01-09 22:41

Re: 召唤大神,求一段可以重启程序crashed的程序的脚本

#13

帖子 delectate » 2010-02-09 13:46

代码: 全选

 while :; do  ps -A|grep amule | amule ;sleep 10  ;done
这个可以 :em06
头像
Lavande
论坛版主
帖子: 5352
注册时间: 2008-12-21 15:27
来自: TARDIS

Re: 召唤大神,求一段可以重启程序crashed的程序的脚本

#14

帖子 Lavande » 2010-02-09 14:00

delectate 写了:

代码: 全选

 while :; do  ps -A|grep amule | amule ;sleep 10  ;done
这个可以 :em06
果然有效,多谢 :em11
cosechy
帖子: 82
注册时间: 2008-03-06 4:56

Re: 召唤大神,求一段可以重启程序crashed的程序的脚本

#15

帖子 cosechy » 2010-02-10 10:06

关掉amule然后 until amule; do :; done
回复