次のようなZsh関数を作成したいと思います。
smartwatch [WATCH_FILE] [COMMAND_TO_RUN] [COMMAND_ARGS]
後WATCH_FILE
に保存されると、それCOMMAND_TO_RUN
が実行smartwatch
され、ファイルが再度保存されるのを待ちます。これは、このシナリオで私に役立ちます。
smartwatch server.py python server.py
したがって、サーバーファイルを変更するたびに、サーバーが再起動されます。inotify-toolsが役立つかもしれないと聞いたので、私はを使用してinotifywait
いますが、誰かがより良いツールを知っている場合は、私に知らせてください。これが私がこれまでに持っているものです:
smartwatch() {
WATCH=$1
CMD=$2
ARGS=$*[3,-1]
$CMD $ARGS &!
PID=$!
inotifywait -qq $WATCH
kill $PID
exec smartwatch $WATCH $CMD $ARGS
}
このソリューションはかなり遅く、あまりエレガントではありません。これをより効率的にする方法、または少なくともよりクリーンにする方法を知っている人はいますか?