Bash脚本在崩溃或文件更改时重启进程

时间:2016-06-24 14:02:35

标签: bash process scripting build-automation

我正在对服务器进程进行编码,我想创建一个Bash脚本,它将在以下两个条件之一中重启进程:

  1. 当前进程退出(在这种情况下,在延迟一段时间后重新启动)
  2. 修改可执行文件(在这种情况下,立即重新启动)
  3. 在任何一种情况下,脚本本身都不应退出。

    我可以做这些事情中的任何一个(使用简单的循环,或使用fswatch),但我尝试两者都没有奏效。有没有办法在Bash脚本中同时执行这两种操作?

1 个答案:

答案 0 :(得分:1)

我不熟悉fswatch,但假设你设置了opts和路径,只有当你关心的文件发生变化并且你不担心缓冲时才会写入数据,你可以尝试:

fswatch $opts $path | while read k; do kill $pid; done &
while sleep 1; do  # delay 1 second between restarts
  cmd &
  pid=$!
  wait $pid
done

当可执行文件更改时,不会立即重新启动。要做到这一点,你可以做(​​但我不认为这是值得的):

fswatch $opts $path | while read k; do kill $pid; done &
while : ; do  
  cmd &
  pid=$!
  wait $pid
  test $? -gt 128 || sleep 1
done