【问题标题】:Terminating multiple background processes in bash?在bash中终止多个后台进程?
【发布时间】:2021-03-06 20:06:13
【问题描述】:
我正在尝试将交易数据从 binance 中转储为多个符号对,例如doge/btc、ada/btc等
我可以背景,因此:
wscat -c wss://stream.binance.com:9443/ws/dogebtc@trade > doge.txt &
wscat -c wss://stream.binance.com:9443/ws/adabtc@trade > ada.txt &
但是如何全部终止呢?
有什么聪明的方法,比如终止父进程?
【问题讨论】:
标签:
bash
process
terminate
【解决方案1】:
我认为正确的答案很大程度上取决于您当前系统的实施/使用方式。
在最基本的脚本级别,您可以简单地对所有wscat 进程运行kill;但这可能过于笼统,具体取决于细节。
稍微好一点,在 BASH 脚本中,在创建这些进程之后,您可以直接以$! 访问它们的 PID。您可以将这些 PID 存储在变量或文件中,然后将它们用于kill 每个单独的进程。
如果您的目标是比这更简单的东西,您可能需要研究以下内容:
SIGCHLD 信号,变成 subreaper (prctl PR_SET_CHILD_SUBREAPER),在 PID 命名空间 (unshare --pid ...) 中作为 PID 1 运行,诸如此类。