Debian WSL에서 프로세스를 다시 시작하는 스크립트

Debian WSL에서 프로세스를 다시 시작하는 스크립트

Debian 11 WSL에 amule-daemon이 설치되어 있습니다. 프로세스 amuleweb이 때때로 충돌하므로 다시 시작해야 합니다.

다음 bash 스크립트를 사용하여 이를 자동화하려고 합니다.

#!/bin/bash

if [[ $(pgrep amuleweb) ]]; then
   echo "amuleweb is running..";
else
   echo "amuleweb is not running, restarting now..";
   amuleweb --amule-config-file=/home/debian/.aMule/amule.conf
fi

하지만 amuleweb이 실행 중인지 여부에 관계없이("ps aux | grep amule"로 확인 중입니다) 스크립트는 항상 "amuleweb is running.."을 반환합니다.

아뮬웹이 정지된 예시입니다.

debian@CUSPIDE:~$ ./amuleweb.sh
amuleweb is running..
debian@CUSPIDE:~$ [[ $(pgrep amuleweb) ]]
debian@CUSPIDE:~$ echo $?
1

터미널에서 pgrep 명령을 직접 실행하면 작동하지만 스크립트 내에서는 항상 "0"을 반환합니다.

어떻게 해결하나요? 감사해요

답변1

여기에서 스크립트 이름에 문자열이 포함될 수 있다는 것을 추측해 보세요 amuleweb. 이 경우 pgrep실행 중인 스크립트를 찾는 것입니다. 여기서 가장 좋은 방법은 pgrep -f(또는 -x주석에서 @TomYan이 지적한 대로) 형식을 사용하여 원하는 실행 파일과 일치하는지 확인하는 것입니다.

이러한 유형의 시나리오(실패한 서비스 다시 시작)에 대해 직접 롤링하는 대신 프로세스 관리자 사용자를 고려할 수도 있습니다. 이제 WSL에는 Systemd를 사용할 수 있는 기능이 포함되어 있지만 다른 이유로 이미 활성화하지 않은 이상 여기서는 과잉일 수 있습니다. 보세요감독자실패한 서비스를 다시 시작할 수 있는 매우 가볍고 구성하기 쉬운 프로세스 감독자입니다.

관련 정보