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

发布于 2024-09-14 04:38:34 字数 432 浏览 4 评论 0原文

我想要一个带有无限循环的脚本,当再次执行该脚本时,它会杀死该脚本创建的所有进程。

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

bash poll.sh

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

bash poll.sh

并且所有poll.sh进程都会得到被杀了。

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

我的第二个想法是使用 touch .isrunning 和语句来请求该文件。

你会怎么做?

I would like to have a script with an infinite loop, that kills all processes created by this script when it gets executed again.

So basically you start the script via terminal:

bash poll.sh

and it's running infinitely, you open another terminal and again

bash poll.sh

and all poll.sh processes will get killed.

What would be the best way to do that? My first thought was to set environment variables, something like export POLLRUNNING=true and poll.sh would implement something like if [ $POLLRUNNING = true ]; exit 1

My second idea was to work with touch .isrunning and statement to ask for that file.

How would you do that?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

一曲爱恨情仇 2024-09-21 04:38:34

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

pidof(8) supports an -x flag to specify scripts; it also supports an -o omitpid flag to leave out specific pids. So:

#!/bin/bash

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

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

sleep 10
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文