如何杀死运行的ssh脚本?

时间:2014-10-30 13:25:27

标签: linux bash ssh debian

我在我的服务器上运行此脚本

for i in {1..400000}
do
   echo "loop $i"
   echo 
   numberps=`ps -ef | grep php | wc -l`;
   echo $numberps
   if [ $numberps -lt 110 ]
   then
   php5 script.php &
   sleep 0.25
   else
     echo too much process
    sleep 0.5
fi
done

为目标
./script.sh > /dev/null 2>/dev/null &

它最多可以打开110个php进程。

我可以杀死进程

我可以用killall -9 php5

杀死php5进程

但脚本会再次创建它们:

如何暂停脚本?

kill %1:当我登录SSH时这很有用 如果我退出并重新登录,kill %1jobs -l将无法使用。

2 个答案:

答案 0 :(得分:1)

启动脚本时,shell将打印如下内容:

[1] 1219

括号中的数字是作业编号,第二个数字是 PID 。你可以用以下方法杀死整个工作:

$ kill %1

如果您不记得作业号,可以使用jobs命令获取列表:

$ jobs
[1]+ Running ./script.sh > /dev/null 2>/dev/null &

作业编号再次是括号中的数字。在它前面放%来杀死它。

答案 1 :(得分:1)

试试这个:

echo "To stop, type: kill -USR1 $$"

main_loop=true
catch_sigusr1 () { main_loop=false ;}
trap catch_sigusr1 SIGUSR1

for ((i=1; i<=400000; i++))
do
   $main_loop || { echo "Aborting script."; break ;}
   echo "loop $i"
   echo 
   numberps=`ps -ef | grep php | wc -l`;
   echo $numberps
   if [ $numberps -lt 110 ]
   then
   php5 script.php &
   sleep 0.25
   else
     echo too much process
    sleep 0.5
fi
done