在bash中终止多个后台进程?



我试图将交易数据从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 &

但是如何终止它们呢?

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

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

在最基本的脚本级别,您可以简单地对所有wscat进程运行kill;但根据具体情况,这可能太笼统了。

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

如果你的目标是比这更圆滑的东西,你可能会想看看这样的东西:SIGCHLD信号,变成subreaper(prctlPR_SET_CHILD_SUBREAPER),在PID命名空间(unshare --pid ...)中作为PID 1运行,诸如此类。

最新更新