在 CentOS 上让 Sniffer(抓包工具)后台运行,常见方式取决于你用的是 tcpdump、tshark、自己写的程序 还是 第三方 Sniffer。下面按最常见场景说明。
tcpdump 后台运行(最常见)nohup + &(推荐)nohup tcpdump -i eth0 -w /data/sniff.pcap > /dev/null 2>&1 &
-i eth0:指定网卡-w:保存抓包文件nohup:防止终端退出后进程被杀&:后台运行查看进程:
ps -ef | grep tcpdump
停止:
kill -9 PID
screen(可随时切回查看)yum install -y screen
screen -S sniffer
tcpdump -i eth0 -w /data/sniff.pcap
Ctrl + A → D 离开(不中断)screen -r sniffer
systemd(服务器长期运行,推荐生产环境)创建服务文件:
vim /etc/systemd/system/sniffer.service
内容示例:
[Unit]
Description=Network Sniffer
After=network.target
[Service]
Type=simple
ExecStart=/usr/sbin/tcpdump -i eth0 -w /data/sniff.pcap
Restart=always
[Install]
WantedBy=multi-user.target
启动:
systemctl daemon-reload
systemctl start sniffer
systemctl enable sniffer
查看状态:
systemctl status sniffer
tshark(Wireshark 命令行)nohup tshark -i eth0 -w /data/sniff.pcap > /dev/null 2>&1 &
或使用 screen / systemd(同上)
nohup python3 sniffer.py > sniffer.log 2>&1 &
或使用 systemd 管理(更稳定)
抓包通常需要 root:
sudo tcpdump ...
或使用:
setcap cap_net_raw,cap_net_admin=eip /usr/sbin/tcpdump
长期后台抓包 一定要限制大小 或轮转:
tcpdump -i eth0 -w /data/sniff.pcap -C 100 -W 10
-C 100:每个文件 100MB-W 10:最多 10 个文件(循环覆盖)| 场景 | 推荐方式 |
|---|---|
| 临时后台抓包 | nohup + & |
| 可交互查看 | screen |
| 长期稳定运行 | systemd |
| 生产环境 | systemd + 文件轮转 |
如果你能告诉我:
我可以给你一套 完全适合你环境的命令或 systemd 配置。