linux - 在 bash 中仅杀死管道中的第一个进程

标签 linux bash

如果我有一个长时间运行的命令,会定期输出一些数据,例如我想用 awk (或其他东西)处理的 tail -F :

tail -F service.log | awk '{ ... } END { print ... }'

如何仅终止第一个进程(在本例中为尾部),以便我可以在 awk 中看到 END {} block 的结果?如果我按 Control+C 整个管道就会停止。

我发现有效的一种方法是打开一个单独的选项卡/术语窗口,grep 第一个进程的 PID 并从那里kill它,但它看起来相当笨拙,有吗另一种解决方案?

最佳答案

也许是这样的?

tail -F service.log | (trap '' INT; awk '{ ... } END { print ...}')

关于linux - 在 bash 中仅杀死管道中的第一个进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47693183/

相关文章:

linux - 使用 awk 计算每列的平均值,忽略缺失数据

bash - 检查一个数字是否在 shell 中是偶数

linux - 手动运行 Shell 脚本发送新文件通知邮件

mysql - 使用 awk 或 sed 将 mysql.log 重新格式化为简单格式

Linux 内核初始化在加密文件系统中失败

linux - 根据键对文件进行排序并按数据中心分组

linux - 使用 chroot 运行命令时我的权限被拒绝

linux - do_package : split_and_strip_files (arm-poky-linux-gnueabi-objcopy) fails 时出现问题

linux - 是否有一种方法 lcov 可以忽略报告中的某些目录

linux - 多线程 Bash If 语句