확대/축소 프로그램이 실행 중인지 감지하려고 합니다. 또한 dpkg를 사용하여 설치하려면 bash 스크립트에 sudo 권한이 필요합니다.
을 사용하면 pgrep -f "zoom" >/dev/null 2>&1
Zoom이 실행 중이면 echo $?
반환 코드가 0으로 올바르게 설정되고 찾을 수 없으면 1로 올바르게 설정됩니다 .
를 사용하면 sudo
두 개의 추가 프로세스, 즉 첫 번째 프로세스와 첫 번째 프로세스 의 하위 프로세스가 pgrep
얻어집니다 . 이것은 작동하지 않았기 때문에 "해킹 해결 방법"을 사용해야 했습니다. 작동했습니다. 정규식은 프로세스가 결과에 추가되지 않도록 보장했습니다.sudo pgrep etc.
pgrep etc.
sudo
sudo pgrep -f "[z]oom" >/dev/null 2>&1
pgrep
이제 프로세스가 실행 중이 아니면 1로 설정되고 프로세스가 실행 중이면 0으로 설정됩니다 sudo pgrep -f "[z]oom" >/dev/null 2>&1 ;
. echo $?
완벽한.
그러나 이것을 bash 스크립트(로 실행 sudo
)에 추가하면 다음과 같습니다.
if pgrep -f "[z]oom" 2>&1 ; then
echo $?
echo "zoom is running"
이것은 더 이상 작동하지 않으며언제나스케일링 프로세스가 실행 중임을 나타냅니다. 따라서 스케일링이 실행 중이더라도 항상 0을 반환합니다.아니요달리기).
왜 그런 겁니까?
답변1
문제는 -f
.
pgrep -x zoom >/dev/null 2>&1