gpt4 book ai didi

linux - 如何关闭除运行 shell 脚本的窗口之外的所有打开的终端窗口

转载 作者:太空宇宙 更新时间:2023-11-04 05:17:23 27 4
gpt4 key购买 nike

我想要一个能够杀死控制台窗口的脚本,这些窗口要么正在运行,要么没有运行,但同时保持执行该脚本的窗口处于事件状态。

感谢您的帮助

最佳答案

您可以找到父脚本的命令名称(bash、sh、zsh 等),然后终止具有该命令名称的所有进程。这样你就可以杀死除了运行脚本的进程之外的所有 bash 进程。即

C=$(ps -p $(ps -p $$ -o ppid=) o args=)
P=$(ps -p $$ -o pid=)
for p in $(pgrep $C); do
if [ $p -ne $P ]; then
kill $p
fi
done

这非常便携。如果您还想关闭正在运行某些内容的控制台,那么它的可移植性就更差了:

C=$(ps -p $(ps -p $$ -o ppid=) o args=)
P1=$(ps -p $$ -o pid=)
P2=$(ps -p $$ -o ppid=)
echo $(pgrep $C)
for p in $(pgrep $C | tail -n +2); do
[ $p -ne $P1 ] && [ $p -ne $P2 ] && kill -9 $p
done
  • 如果该脚本由另一个脚本启动或在某个脚本中启动,则该脚本将不起作用。另一个 bash session 中的 bash session (例如 root session )
  • 如果桌面环境是,它不会杀死第一个 bash 窗口不是由 bash 启动的(例如,如果您将桌面环境设置为在启动时运行),要解决此问题,您可以删除 | for 循环中的 tail -n +2
  • 除了窗口之外,它还会关闭控制台选项卡

关于linux - 如何关闭除运行 shell 脚本的窗口之外的所有打开的终端窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47281589/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com