이미 실행 중인 프로세스에 추가 '종료' 명령을 추가하려면 어떻게 해야 합니까?

이미 실행 중인 프로세스에 추가 '종료' 명령을 추가하려면 어떻게 해야 합니까?

정기적으로 && shutdown -h now장기 실행 프로세스에 추가하는 것을 잊어버립니다. shutdown -h now명령어를 추가하는 방법이 있나요?~ 후에첫 번째 명령이 호출되었습니까? 진행 중인 프로세스를 중단하려는 의도는 없습니다. 어쩌면 PID를 보는 것이 가능할까요?

답변1

ps를 반복적으로 실행하여 모든 프로세스를 나열하고 출력을 통해 grep을 실행할 필요가 없습니다. ctrl-Z를 사용하여 프로세스를 배경화한 다음 실행합니다.

bg %1 ; wait %1 ; shutdown -h now

다른 백그라운드 작업이 실행 중인 경우 Ctrl-Z를 누르면 [1] 대신 다른 작업 사양이 제공됩니다. 그렇다면 대신 사용하십시오.

답변2

나는 항상 이것을 한다.

  1. 프로세스를 시작하십시오.
  2. 내가 명령을 수행하는 것을 잊어버렸다는 것을 깨달으십시오 &&.
  3. 프로세스를 일시 중단하고 셸로 돌아가려면 Ctrl+를 누르세요 .Z
  4. 달려 fg && shutdown -h now가다:
    1. 방금 일시 중단한 프로세스를 포그라운드하고 재개합니다.
    2. 그런 다음 완료되면 실행하려는 항목이 실행됩니다.

또는 다음과 같은 다른 답변에서 제안된 대로 설문 조사를 할 수도 있습니다.

while ps -p $PID ; do sleep 5 ; done ; shutdown -h now

답변3

다음과 같이 프로세스가 5초마다 실행 중인지 확인하고 적절한 조치를 취할 수 있습니다.

while true; do
  if ps -ef | grep -q '[l]ong-running-process'; then
    sleep 5
  else
    sudo poweroff
  fi
done

표현식의 대괄호에 유의하세요 grep. 이는 grep프로세스가 목록에 있는 경우 일치하지 않도록 하기 위한 것입니다 ps. 단일 문자를 대괄호로 묶으면 충분합니다.

답변4

두 프로세스를 모두 실행하는 쉘 스크립트를 작성하십시오.

MyShellScript.txt:

#!/bin/sh
MyProcessIdLikeToStart -o options && shutdown -h now

주어진 프로세스를 시작한 디렉토리에 이것을 저장한 후 다음을 수행하십시오.

chmod +x MyShellScript.txt

그런 다음 명령을 실행하고 싶을 때 입력하기만 ./MyShellScript.txt하면 두 가지가 모두 수행됩니다.

관련 정보