【问题标题】:How to replicate CTRL+C in a shell script?如何在 shell 脚本中复制 CTRL+C?
【发布时间】:2011-03-02 05:56:10
【问题描述】:

我正在运行一个脚本,该脚本执行的命令持续时间过长,所以我想中断它。有什么帮助吗?我已经尝试了很多搜索,并且我被指向了 kill 命令。虽然,我无法让它工作。顺便说一句,我使用的是 Mac OS X。谢谢!

【问题讨论】:

  • 更具体。你是在后台运行脚本吗?你在等它完成吗?你的脚本是什么,你想怎么做……不管你想做什么?
  • 好吧,基本上,我正在运行一个 asr 多播流,但不知道如何停止它,所以我正在尝试这样做:asr server --source [source] --config [plist file] --调试 | ( sleep 30 && [CTRL+C] ) 问题是我不知道如何复制 CTRL+C

标签: macos shell scripting copy-paste


【解决方案1】:

假设你有进程的 PID,给它发送一个 SIGINT 信号:

kill -SIGINT PID

如果您没有 PID,您可以尝试 pkillkillall,但它们的安全性稍差; PID 是唯一标识进程的唯一方法。在你生成另一个进程之后,PID 应该在 $! 中,所以你可以保存它

process-that-takes-a-long-time &
pid=$!
# other stuff
kill -SIGINT $pid

【讨论】:

  • 找不到 PID 怎么办?还有其他方法可以复制 CTRL+C 吗?
  • 小心killall。在某些系统上,它类似于halt
【解决方案2】:

timeout10 your_command

【讨论】:

    【解决方案3】:

    要在 Mac OS X 的终端上复制 Linux Ctrl+C,请使用 ctrl+C! 它是相同的击键组合 为我工作(Mac 上的第一步)

    编辑:我没有读到脚本在后台运行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-10
      • 2012-01-09
      • 1970-01-01
      • 2018-09-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多