정기적으로 && shutdown -h now
장기 실행 프로세스에 추가하는 것을 잊어버립니다. shutdown -h now
명령어를 추가하는 방법이 있나요?~ 후에첫 번째 명령이 호출되었습니까? 진행 중인 프로세스를 중단하려는 의도는 없습니다. 어쩌면 PID를 보는 것이 가능할까요?
답변1
ps를 반복적으로 실행하여 모든 프로세스를 나열하고 출력을 통해 grep을 실행할 필요가 없습니다. ctrl-Z를 사용하여 프로세스를 배경화한 다음 실행합니다.
bg %1 ; wait %1 ; shutdown -h now
다른 백그라운드 작업이 실행 중인 경우 Ctrl-Z를 누르면 [1] 대신 다른 작업 사양이 제공됩니다. 그렇다면 대신 사용하십시오.
답변2
나는 항상 이것을 한다.
- 프로세스를 시작하십시오.
- 내가 명령을 수행하는 것을 잊어버렸다는 것을 깨달으십시오
&&
. - 프로세스를 일시 중단하고 셸로 돌아가려면 Ctrl+를 누르세요 .Z
- 달려
fg && shutdown -h now
가다:- 방금 일시 중단한 프로세스를 포그라운드하고 재개합니다.
- 그런 다음 완료되면 실행하려는 항목이 실행됩니다.
또는 다음과 같은 다른 답변에서 제안된 대로 설문 조사를 할 수도 있습니다.
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
하면 두 가지가 모두 수행됩니다.