나는 while 루프를 사용하고 sleep 명령을 유지하여 60초마다 스크립트를 실행하고 출력을 다른 파일로 리디렉션하는 Linux(bash) 쉘 스크립트를 작성했습니다. 몇 시간 후에 스크립트를 중지했지만 실행이 중지되지 않았습니다. 아직 실행 중인 스크립트를 삭제하고 출력 파일이 60초마다 업데이트되었습니다. Linux에서 실행되는 프로세스에서 sleep 명령을 볼 수 있습니다. kill -9 PID 명령을 사용하여 휴면 PID를 종료해 보았습니다. 쓸모 없는. 내 프로덕션 서버에 있습니다. 누구든지 도와줄 수 있나요? 스크립트 실행을 어떻게 중지해야 합니까?
답변1
이 sleep
명령은 스크립트에 의해 호출됩니다. 명령이 종료 되면 sleep
스크립트는 다음 명령으로 진행됩니다. 예를 들어 명령의 상위 pid(PPID)를 확인해야 합니다 sleep
. ps
그런 다음 해당 상위 PID(PPID)를 찾고 해당 PID에 속한 프로세스를 종료합니다.
ps -ef |(head -1; grep sleep)
UID PID PPID C STIME TTY TIME CMD
lambert 4062 4041 0 08:47 pts/3 00:00:00 sleep 5
ps -p 4041
PID TTY TIME CMD
4041 pts/3 00:00:00 myscript.sh
kill 4041
답변2
백그라운드에서 실행 중일 수 있습니다.
$ jobs
[1]+ Running sleep 100 &
$ kill %1
[1]+ Terminated sleep 100
pkill 및 pgrep을 사용할 수도 있습니다.
모든 인스턴스를 중지하려면 killall을 사용하십시오.
답변3
'ps -ef |당신의 스크립트 이름' 작업의 pid를 찾으세요. 그런 다음 'kill -9'를 사용하십시오.귀하의 프로세스 번호' 프로세스를 종료합니다.