![macOS에서 bash 스크립트를 어떻게 pgrep합니까(또는 백그라운드에서 실행 중인 스크립트를 프로그래밍 방식으로 종료합니까)?](https://linux55.com/image/182162/macOS%EC%97%90%EC%84%9C%20bash%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EB%A5%BC%20%EC%96%B4%EB%96%BB%EA%B2%8C%20pgrep%ED%95%A9%EB%8B%88%EA%B9%8C(%EB%98%90%EB%8A%94%20%EB%B0%B1%EA%B7%B8%EB%9D%BC%EC%9A%B4%EB%93%9C%EC%97%90%EC%84%9C%20%EC%8B%A4%ED%96%89%20%EC%A4%91%EC%9D%B8%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EB%A5%BC%20%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D%20%EB%B0%A9%EC%8B%9D%EC%9C%BC%EB%A1%9C%20%EC%A2%85%EB%A3%8C%ED%95%A9%EB%8B%88%EA%B9%8C)%3F.png)
macOS에서 백그라운드 프로세스로 실행 중인 bash 스크립트를 프로그래밍 방식으로 종료하려고 합니다. 지금 결정한 접근 방식은 pgrep
스크립트 이름을 지정한 다음 PID 값을 kill
함수에 전달하는 것입니다.
참고: 이 작업을 수행하는 방법에 대한 더 나은 제안이 있는 경우 언제든지 알려주시기 바랍니다.
내가 겪고 있는 문제는 macOS에서 프로세스 이름이 단지 스크립트 이름 이 아니라 /bin/bash /Users/...../[scriptname]
. 나에게 여러 결과가 있습니다.pgrep [scriptname]
pgrep bash
누구든지 i) pgrep
이 스크립트를 올바르게 사용할 수 있는 방법 kill
또는 ii) 이 작업을 수행하는 더 명확하고 깔끔한 방법이 있습니까?
/bin/bash
참고: Lubuntu에서 동일한 스크립트를 실행하면 이름의 일부로 전체 디렉터리가 없지만 [scriptname]
. 라고만 지정되므로 pgrep [scriptname]
예상대로 작동합니다.
답변1
예 - macOS는 이 점에 있어서 매우 혼란스럽습니다. 하지만 저는 pgrep
이것이 pkill
이 문제를 해결하는 좋은 방법이라고 생각합니다.
% pgrep -U 502 -f sleepforever.sh
43894
설명이 필요할 수 있습니다.
-U 502
내 것이 되어라실제 사용자 ID에서 얻은id
sleepforever.sh
이것을 테스트하기 위해 만든 스크립트는 다음과 같습니다.#!/bin/bash while : do sleep 10 done
그러나 pgrep
실제로 수행할 수 있는 pid
작업은 find 작업을 완료하는 것뿐입니다. pkill
이는 다음과 많은 매개변수를 공유합니다 pgrep
.
% pkill -U 502 -f sleepforever.sh
%