파일을 자동으로 다시 실행하는 zsh 함수 작성 파일 저장
-
11-12-2019 - |
문제
다음과 같은 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
}
.
이 해결책은 오히려 느리고 매우 우아하지 않습니다.누구 든지이 방법을보다 효율적으로 만들거나 최소한 청결하게 만들 수있는 방법을 알고 있습니까?
해결책
일부 fiddling 이후, 내가 끝난 일은 다음과 같습니다.
onsave() {
while true
do
eval "$1 &!"
trap "kill $! &> /dev/null; return;" SIGINT SIGTERM
inotifywait -e modify -qq $2
kill $! &> /dev/null
done
}
.
onsave "python server.py" server.py
를 실행할 수 있어야합니다.
제휴하지 않습니다 StackOverflow