프로세스 제어

프로세스 제어
$ps -fu $USER
UID PID PPID C STIME TTY 시간 CMD
kanoujip 22471 21858 0 Sep16 pts/3 00:00:00 /bin/sh ./Alert_notification.sh
카누 지프 27450 27390 0 9월 16일? 00:00:00 sshd: kanoujip@pts/9

다시 실행하고 싶기 ./Alert_notification.sh때문에 내 사용자 ID에서 이전 실행을 모두 제거하고 싶습니다.

어떻게 해야 하나요?

ps -fu $user | grep Alert_notification.sh |grep -vE 'grep|"$PPID"' | awk '{print $2}' | xargs kill `ps -o pid= -NT`;

모든 내 사용자 세션 종료

답변1

$PPID귀하의 요청을 잘 이해한다면 마지막으로 호출된 스크립트의 실행에 사용될 수도 있는 변수를 grep할 필요 없이 마지막으로 호출된 script: 의 PID를 검색할 필요가 있습니다 $$.

script.sh동일한 호출을 사용하는 경우 스크립트의 다른 모든 실행 (또는 귀하의 경우) bash은 동일합니다.$PPIDscript.shAlert_notifications.sh

원하는 경우 명령을 변경하고 일부 제어 기능을 추가해 보십시오.

ps -fu $USER | grep  "Alert_notification.sh" | grep -v "grep\|$$" | awk '{print $2}' | xargs kill 2> /dev/null  
  • 2> /dev/null: 프로세스를 찾을 수 없는 경우 오류 메시지를 생략하기 위해 필요합니다.

관련 정보