bash - 在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 &
但是如何终止它们呢?
有没有一些聪明的方法,比如终止父进程?
解决方案
我认为正确的答案很大程度上取决于您当前系统的实施/使用方式。
在最基本的脚本级别,您可以简单地kill
针对所有wscat
进程运行;但这可能过于笼统,具体取决于细节。
稍微好一点的是,在 BASH 脚本中,在创建这些进程之后,您可以直接访问它们的 PID 为$!
. 您可以将这些 PID 存储在变量或文件中,然后将它们用于kill
每个单独的进程。
如果您的目标是比这更光滑的东西,您可能想要研究以下内容:SIGCHLD
信号,成为subreaper
( prctl
PR_SET_CHILD_SUBREAPER
),在 PID 命名空间 ( ) 中作为 PID 1 运行unshare --pid ...
,诸如此类。
推荐阅读
- python-3.x - 'NoneType' 对象在 python3 中不是可迭代的错误
- r - 下标越界,有界随机游走的迭代
- javascript - 将返回值从一个组件传递到另一个组件
- arrays - 从 Spark Scala 中存在的 Dataframe 创建动态查询
- css - Angular 2 中的动画与纯 CSS
- r - gamlss:算法 RS 尚未收敛
- javascript - NextJS 使用 createElement 渲染链接
- firebase - 仅在部署云功能后出现 GCP 权限错误(在本地工作)
- sql-server - 带有时间文本值的 Power BI Bar char
- node.js - tronweb 网络查询(getCurrentBlock)返回承诺待定