![Tcpdump 到 USB 驱动器](https://linux22.com/image/147837/Tcpdump%20%E5%88%B0%20USB%20%E9%A9%B1%E5%8A%A8%E5%99%A8.png)
数据包以 750 个数据包/秒的速度生成,我使用 tcpdump 捕获这些数据包并将它们写入存储在 USB 驱动器中的文件。由于写入速度限制,整个抓包->写入文件的过程需要较长的时间。我想知道当我使用 Ctrl+C 终止 tcpdump 进程时会发生什么。它将捕获的数据包写入文件然后退出,还是立即退出而不将剩余的捕获数据包写入文件?谢谢。
答案1
点击Ctrl-C导致信号 SIGINT 被发送到进程。我相信这取决于 shell 之后发生的事情,所以你不应该依赖任何东西。
但是您的脚本可以捕获信号,然后在退出之前执行您定义的任务。编写一个函数来执行您想要执行的任何操作。名字并不重要。这里我称之为清理。然后捕获 SIGINT 并调用该函数。像这样:
trap cleanup SIGINT
cleanup() {
.... # your code here - to be executed after Ctrl+C/SIGINT is received
exit 1 # <--- make sure you exit, otherwise Ctrl+C will not work anymore
}
... your script here...