关闭bash终端时如何杀死进程?

时间:2020-05-31 20:28:53

标签: bash terminal process kill-process

在bash终端关闭后,我发现了许多方法可以使进程在后台运行。但是,我该怎么做相反呢?关闭终端后如何杀死后台进程?

当前,当我关闭终端时,我收到“进程正在会话中运行...仍然关闭吗?”如果我单击“确定”,则终端关闭,但进程不会被杀死并徘徊。我可以将对这些进程的抑制与终端进程的“死亡”挂钩吗?

简单的例子:运行ssh-agent bash,然后尝试关闭终端。

1 个答案:

答案 0 :(得分:0)

将其放入您的 text.connect("row-activated", self.row_activated)

.bashrc

此命令将使shell在退出时杀死其所有子进程。


说明:


trap 'kill $(ps -o pid= --ppid $$) 2>/dev/null' exit 命令可捕获信号和其他事件,并让您执行在捕获信号或事件发生时运行的命令。

trap

ARG是外壳程序收到信号SIGNAL_SPEC时要读取并执行的命令。如果SIGNAL_SPEC为EXIT,则从外壳退出时将执行ARG。


trap [-lp] [[arg] signal_spec ...] 命令将信号发送到作为参数提供的PID的作业。

kill

如果既没有SIGSPEC也没有SIGNUM,则假定使用SIGTERM(终止信号)。


kill [-s sigspec | -n signum | -sigspec] pid ... 命令显示有关进程的信息。

ps

最后,外壳程序中的-o format User defined format of output. --ppid pidlist Select which processes to show by PID of their parent process. Selects processes that are children of those listed in PIDLIST. 扩展为外壳程序的进程ID。在$$子外壳中,它扩展为当前外壳的进程ID,而不是子外壳。

$(...)用于丢弃kill命令的潜在错误输出,该错误输出可能是由执行kill命令时不再存在但执行ps命令时存在的进程引起的-通常是子外壳2>/dev/null