3

我将在20:00until期间每 5 分钟运行一次 snoop 命令23:00,但我不知道如何在最后 5 分钟(22:55until 23:00)杀死。请您在这方面帮助我。

窥探命令:

FILE=vitrin_`date +%Y%m%d%H%M`.cap
kill -9 `pgrep snoop`
snoop -x0 -d e1000g0 -o /export/home/vitrin/$FILE

crontab:

0,5,10,15,20,25,30,35,40,45,50,55 20,21,22 * * * /export/home/snoop.sh
4

2 回答 2

3

与其snoop在下一次 cron 运行中杀死你的(可能还有其他一些不相关的),你可以在诸如timeoutfrom coreutils之类的工具的监督下从一开始就运行它。至少在 linux 下你几乎肯定已经拥有它,除非你的 coreutils 已经很老了。

timeout 5m snoop ...
status=$?
[ $status -eq 124 ] && exit 0
exit $status

如果你真的需要SIGKILL timeout有一个--signal选择。

如果正在运行的命令被超时终止,则退出状态设置为 124。在您的情况下,您似乎想忽略它,例如。就像上面的例子一样。

于 2012-07-16T09:38:47.680 回答
1

这样的事情可能会有所帮助:

kill -9 $(pgrep snoop) && \
  test $(date '+%s') -lt $(date -d "23:00" '+%s') && \
  snoop -x0 -d e1000g0 -o /export/home/vitrin/$FILE

或者在 crontab 中像这样:

*/5 20-23 * * * /export/home/snoop.sh
于 2012-07-16T07:14:49.697 回答