【发布时间】:2020-01-29 12:34:21
【问题描述】:
我厌倦了试图找到这个问题的答案。 我在 crontab -e 命令中有 2 个脚本。
START_TCPDUMP.sh
#!/bin/bash
tcpdump -i any port 3306 -s 65535 -x -nn -q -tttt> /etc/openvpn/logs/tcpdump_3306_"$(date +"%Y_%m_%d_%I_%M_%p")".out
STOP_TCPDUMP.sh
PID=$(/usr/bin/ps -ef | grep tcpdump | grep -v grep | grep -v ".sh" | awk '{print $2}')
/usr/bin/kill -9 $PID
CRONTAB -E
*/1 * * * * /etc/openvpn/script/STOP_TCPDUMP.sh
*/1 * * * * /etc/openvpn/script/START_TCPDUMP.sh
我已经尝试更改并将开始放在第一行,但都是一样的。
我每 1 分钟在目录上的输出:
/etc/openvpn/logs/tcpdump_3306_2020_01_29_12_22_PM.out (empty: 0kb)
问题是文件是空的我已经尝试了很多东西而且它总是空的。 我该如何解决这个问题?
如果我运行:ps -e | grep tcpdump 我得到 0 个结果。 但如果我运行: grep | tcpdump 我看到命令正在运行并向我显示所有跟踪的包..
我只想让它像 3 小时一样运行,然后停止,保存文件,然后开始一个新文件。
每分钟一次的计划仅用于调试。
【问题讨论】:
-
当您有另一份工作几乎立即杀死它时,您如何期望它产生任何输出?无论如何,更好的方法是使用
pkill,您的重新实现中通常会有 5-6 个错误。 -
那应该如何?你能帮我做吗?
-
不清楚你想要完成什么。你为什么要立即杀死这份工作?你没有
pkill实用程序,或者至少没有pgrep? -
我只想让它像运行 3 小时然后停止,保存文件然后开始一个新文件
-
如果你想让它运行一分钟,你可以在前一分钟的文件上使用
fuser -k。如果您有 GNUdate,那么使用-d "1 minute ago"应该很容易获得前一分钟;如果没有,这将更具挑战性(也许可以尝试 Awk、Perl 或 Python)。