【问题标题】:Check if a proccess is running every 20 seconds and kill him on OSX检查一个进程是否每 20 秒运行一次并在 OSX 上杀死他
【发布时间】:2017-03-02 11:06:08
【问题描述】:

目前,我在使用 Xcode 时遇到了一些问题,并且每次编辑 Storyboard 时,IBDesignablesAgentCocoaTouch 都会冻结 Xcode。

所以,我想用 bash 或 python 脚本通过每 x 秒检查一次该进程是否正在运行来终止该进程。

我想我可以使用这个脚本,但是如何使用计时器(每 x 秒检查一次?)

pid=$(ps -fe | grep 'IBDesignablesAgentCocoaTouch' | awk '{print $2}')
if [[ -n $pid ]]; then
    kill $pid
else
    echo "Does not exist"
fi

【问题讨论】:

    标签: python bash macos storyboard xcode8


    【解决方案1】:

    只需使用一个while循环,

    while sleep 20; do
        pid=$(ps -fe | grep 'IBDesignablesAgentCocoaTouch' | awk '{print $2}')
        if [[ -n $pid ]]; then
            kill $pid
        else
            echo "Does not exist"
        fi
    done
    

    while sleep 20; do <code> 的语法类似于 cmets while true; do sleep 20 <code> 中显示的语法,除了节省了一些击键。

    【讨论】:

    • 像魅力一样工作!谢谢
    【解决方案2】:

    你试过让它休眠 20 秒吗?

    sleep 20
    

    【讨论】:

      【解决方案3】:

      使用这个如果进程被命名为 IBDesignablesAgentCocoaTouch

      kill $(pgrep -x IBDesignablesAgentCocoaTouch)
      

      如果进程存在,它将被杀死,如果不存在,则不会发生任何事情。

      pgrep 将为您获取 PID。

      #!/bin/bash
      while sleep 20; do
          kill $(pgrep IBDesignablesAgentCocoaTouch)
      done
      

      如果不想使用睡眠,可以使用cron

      【讨论】:

      • 从题中看不出IBDesignablesAgentCocoaTouch是程序名还是程序的参数,所以不能用pgrep
      • @arco444 proccess IBDesignablesAgentCocoaTouch 难以理解?
      • @Inian 有趣的是我们有一个答案说使用睡眠,我得到了反对票:D 笑着 irl。
      • arco444建议的点是有效的,与你使用sleep的方式无关
      猜你喜欢
      • 2016-04-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-28
      • 2018-03-22
      • 2020-10-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多