Shell-Scripting(BASH):切换无法自行结束的脚本“开/关”的最佳方法是什么?

时间:2010-08-13 09:12:08

标签: bash unix process

我希望有一个带有无限循环的脚本,它会在再次执行时杀死此脚本创建的所有进程。

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

bash poll.sh

并且无限运行,再打开另一个终端

bash poll.sh

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

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

我的第二个想法是使用 touch .isrunning 和声明来询问该文件。

你会怎么做?

1 个答案:

答案 0 :(得分: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