You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Linux环境下nohup后台运行tcpdump无法写入文件问题排查

问题根源:错误的重定向写法

你遇到的问题核心在于脚本里的标准输出重定向被重复覆盖了!

看你脚本里的这行:

nohup /usr/sbin/tcpdump -c 10 -tttt > `pwd`/temp.txt > /dev/null 2>&1 &

这里连续用了两个>操作符,第一个> pwd/temp.txt本来是要把tcpdump的标准输出写到temp.txt,但紧接着的第二个> /dev/null直接覆盖了前面的重定向规则,把所有标准输出都丢进了/dev/null——这就导致temp.txt根本接不到任何内容,自然是空的。

而你不用nohup时的命令是正常的,因为只有一次重定向,stdout正确流向了temp.txt。


修正后的脚本

把重复的重定向去掉,只保留一次标准输出定向到temp.txt,同时把错误输出合并到标准输出(方便排查问题),修改后的脚本如下:

#!/bin/bash
#tpd-txt.sh
nohup /usr/sbin/tcpdump -c 10 -tttt > "$(pwd)/temp.txt" 2>&1 &

几点小建议:

  • 用$(pwd)代替反引号`,可读性更好,也能避免一些嵌套场景下的语法问题
  • 如果确实想丢弃错误输出,可以写成> "$(pwd)/temp.txt" 2>/dev/null,但保留错误输出更便于排查tcpdump可能出现的问题
  • 也可以直接用绝对路径指定temp.txt,比如/home/your-user/temp.txt,避免pwd在不同环境下可能出现的路径问题

内容的提问来源于stack exchange,提问作者1885

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 22:54:05