실행중인 프로세스 확인

실행중인 프로세스 확인

익숙하지 않은 프로세스를 확인하고 종료하라는 메시지가 나옵니다. 그래서 lsbin 폴더 아래에 여러 프로세스가 표시됩니다 .sh. 하지만 어떤 프로세스가 어떤 Tomcat 프로세스와 연관되어 있는지 알고 싶습니다.

그것을 쉽게 알 수 있는 방법이 있나요?

startmyprocess1.sh, 하지만 그렇게 하면 ps -ef | grep startmyprocess1실행 중인 프로세스가 반환되지 않습니다.

하지만 실제로 실행 중인 Tomcat 프로세스 이름은 myprocess이므로 을 수행하면 ps -ef | grep myprocess실행 중인 프로세스를 볼 수 있습니다. 그걸 알기 위해서는 책임자에게 물어봐야 해요.

그래서 이름이 다릅니다. 그렇다면 그에게 여러 번 물어봐야 해요. 이것을 알아낼 수 있는 더 좋은 방법이 있나요?

답변1

이것을 시도해 보세요..(테스트되지 않음)

ps -aux | grep "yourprocess"

예를 들어,

ps -aux | grep "httpd"

답변2

startmyprocess.sh 내에서 myprocess를 시작하면~ 아니다기본 쉘 스크립트 뒤에 프로세스 이름을 지정하면 ps -ef | grep startmyprocess1결과가 반환되지 않습니다.

이는 또한 많은 프로세스, 특히 데몬이 해당 프로세스를 쉽게 참조할 수 있도록 해당 PID를 파일에 기록하는 이유이기도 합니다. 이 작업은 다음을 통해 수행할 수 있습니다.

#!/bin/sh
pid=`myprocess`
echo $pid > /tmp/myprocess.pid

또는 $!마지막 PID가 포함된 쿼리를 수행할 수 있습니다.

#!/bin/sh
myprocess
echo $! > /tmp/myprocess.pid

pid로 프로세스를 쿼리/나열합니다.

ps --pid $PID

답변3

나는 "top"과 같은 소프트웨어가 훌륭한 작업을 수행할 것이라고 생각합니다.

유형:

top

또는

htop

답변4

@invert의 답변은 많은 것을 설명했으며, 쉘 스크립트는 그 안에서 명령을 실행하기만 합니다. 즉, top또는 의 출력에서 ​​셸 스크립트 이름을 얻지 못하고 htop셸 스크립트 내 각 루틴의 /proc/$PID/cmdline만 인쇄한다는 의미입니다.

after 명령을 사용하여 echo $!원하는 PID를 얻으십시오. 필요할 때 명령을 사용하고 싶습니다 pgrep(또는 종료하고 싶다면 pkill).

pgrep, pkill - 이름 및 기타 속성을 기반으로 프로세스를 조회하거나 신호를 보냅니다.

pgrep은 단순히 /proc/*/cmdline을 통해 인수를 grep하고 일치하는 PID를 출력합니다. pkill은 kill과 호환되므로 cmdline을 사용하여 모든 루틴을 쉽게 pkill할 수 있습니다.

관련 정보