while 루프 쉘 스크립트 [닫기]

while 루프 쉘 스크립트 [닫기]

나는 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'를 사용하십시오.귀하의 프로세스 번호' 프로세스를 종료합니다.

관련 정보