Linux 在bash中,只杀死管道中的第一个进程
如果我有一个长时间运行的命令,定期输出一些数据,例如我想用awk(或其他东西)处理的Linux 在bash中,只杀死管道中的第一个进程,linux,bash,Linux,Bash,如果我有一个长时间运行的命令,定期输出一些数据,例如我想用awk(或其他东西)处理的tail-F: 如何仅终止第一个进程(本例中为tail),以便在awk中看到END{}块的结果?如果我按下Control+C,整个管道将停止 我发现的一种工作方式是打开一个单独的选项卡/术语窗口,第一个进程的grep PID,然后从那里杀死它,但这似乎相当笨拙,有没有其他解决方案?可能是这样的 tail -F service.log | (trap '' INT; awk '{ ... } END { print
tail-F
:
如何仅终止第一个进程(本例中为tail),以便在awk中看到END{}
块的结果?如果我按下Control+C,整个管道将停止
我发现的一种工作方式是打开一个单独的选项卡/术语窗口,第一个进程的grep PID,然后从那里杀死它,但这似乎相当笨拙,有没有其他解决方案?可能是这样的
tail -F service.log | (trap '' INT; awk '{ ... } END { print ...}')
你仍然可以用SIGHUP杀死它,或者在最坏的情况下用SIGKILL杀死它。无论如何,在这个有限的场景中,当它从管道中获得EOF时,它将终止。
tail -F service.log | (trap '' INT; awk '{ ... } END { print ...}')