2010-08-13 56 views
1

我想要一个带有无限循环的脚本,当它再次执行时,会终止由此脚本创建的所有进程。Shell脚本(BASH):切换无法自行结束的脚本“开启/关闭”的最佳方式是什么?

所以基本上你通过终端启动脚本:

庆典poll.sh

,它的无限运行,打开另一个终端,并再次

庆典poll.sh

并且所有poll.sh进程都将被杀死。

什么是最好的方法来做到这一点?我的第一个想法是设置环境变量,如export POLLRUNNING = true,如果[$ POLLRUNNING = true],poll.sh将实现类似;退出1

我的第二个想法是与touch.isrunning和声明要求该文件。

你会怎么做?

回答

1

pidof(8)支持-x标志来指定脚本;它还支持-o omitpid标志来省略特定的pid。所以:

#!/bin/bash 

PIDS=`pidof -o $$ -x poll.sh` 

if [ x$PIDS != x ] 
    then kill -s SIGTERM $PIDS 
fi 

sleep 10 
+0

这正是我所需要的。谢谢 :) – mherwig 2010-08-13 13:15:08