
$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
은 동일합니다.$PPID
script.sh
Alert_notifications.sh
원하는 경우 명령을 변경하고 일부 제어 기능을 추가해 보십시오.
ps -fu $USER | grep "Alert_notification.sh" | grep -v "grep\|$$" | awk '{print $2}' | xargs kill 2> /dev/null
2> /dev/null
: 프로세스를 찾을 수 없는 경우 오류 메시지를 생략하기 위해 필요합니다.