首页 > 解决方案 > 在bash中终止多个后台进程?

问题描述

我正在尝试为多个符号对(例如 doge/btc、ada/btc 等)从 binance 中转储交易数据。

我可以背景,因此:

wscat -c wss://stream.binance.com:9443/ws/dogebtc@trade > doge.txt &
wscat -c wss://stream.binance.com:9443/ws/adabtc@trade > ada.txt &

但是如何终止它们呢?

有没有一些聪明的方法,比如终止父进程?

标签: bashprocessterminate

解决方案


我认为正确的答案很大程度上取决于您当前系统的实施/使用方式。

在最基本的脚本级别,您可以简单地kill针对所有wscat进程运行;但这可能过于笼统,具体取决于细节。

稍微好一点的是,在 BASH 脚本中,在创建这些进程之后,您可以直接访问它们的 PID 为$!. 您可以将这些 PID 存储在变量或文件中,然后将它们用于kill每个单独的进程。

如果您的目标是比这更光滑的东西,您可能想要研究以下内容:SIGCHLD信号,成为subreaper( prctl PR_SET_CHILD_SUBREAPER),在 PID 命名空间 ( ) 中作为 PID 1 运行unshare --pid ...,诸如此类。


推荐阅读