我在我的服务器上运行此脚本
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
但脚本会再次创建它们:
如何暂停脚本?
kill %1
:当我登录SSH时这很有用
如果我退出并重新登录,kill %1
或jobs -l
将无法使用。
答案 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