【问题标题】:Ctrl C in shell scriptshell脚本中的Ctrl C
【发布时间】:2013-03-01 11:19:04
【问题描述】:

我有一个带有以下代码的 shell 脚本;

#!/bin/bash
nfcapd -z -w -t30 -p 2055 -l /home/shane/Documents/nfdump

我的问题是,当我执行 shell 脚本时,上面的命令会反复执行(它从路由器捕获网络流量),但我希望它在 30 秒后停止。在终端中我只需按Ctrl+c,有没有办法执行这个命令(Ctrl+c) 一定时间 t 之后?

【问题讨论】:

标签: bash shell


【解决方案1】:

使用timeout

timeout 30 nfcapd -z -w -t30 -p 2055 -l /home/shane/Documents/nfdump

更多信息here

【讨论】:

    【解决方案2】:

    将此语句放在#!/bin/bash之后

    (睡眠 30 ;杀死 -9 $$)&

    看看它是否适用于你的情况。

    【讨论】:

    • 几乎-1:你不能在这里推荐-9。特别是考虑到问题特别提到了 ctrl-C,它发送SIGINT
    【解决方案3】:

    你也可以杀死最后一个工作:

    #! /bin/bash
    nfcapd -z -w -t30 -p 2055 -l /home/shane/Documents/nfdump &
    sleep 30 ; kill %%
    echo "nfcapd terminated"
    exit 0
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-15
      • 2016-03-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多