cron으로 프로세스를 종료하고 다시 시작하십시오.


1

원격 컴퓨터에서 Python 스크립트를 실행하고 있으며 주기적으로 응답을 중지하여 ssh in, 기존 프로세스를 종료 한 다음 다시 시작합니다. 일주일에 여러 번이 작업을 수행해야하며 주변에 있지 않을 때 오랜 시간 동안 중단 시간이 발생합니다. cron으로 매시간마다 다시 시작하고 싶지만 프로세스를 먼저 종료하지 않으면 다시 시작해도 작동하지 않습니다. cron으로 프로세스를 종료하는 방법은 무엇입니까? 또는 더 효율적인 솔루션이있을 것입니다.


2
가장 좋은 해결책은 스크립트가 처음에 멈추는 원인을 수정하는 것입니다.
Der Hochstapler

사용하여 몇 가지 조사를하십시오 man cron그리고 man kill당신은 당신이 원하는 일을하는 쉘 스크립트를 작성하실 수있을 것입니다. 어떤 부분이 당신에게 효과가 없는지 알려주세요 ... :)
Tamara Wijsman


나는 이것을하기 위해 설계된 감독 자라는 것이 있다는 것을 기억합니다.
Sirex

답변:


1

효율적인 입력 방법은 스크립트가 모든 입력 스트림, 소켓 등을 닫은 다음 다시 열 때 (전체 재시작과 같이) 스크립트를 변경하는 것입니다.

그러나 귀하의 방법은 여기에서도 좋습니다. man killall


그주의 killall상담, 어디에서나 동일하게 구현되지 man killal리터럴 죽이 모든 문제를 방지하려면 사용하기 전에. 그러나 실제로, 그 sugesstion도 작동합니다 ...
Tamara Wijsman

1
"killall python"은 퍼즐에서 빠진 부분입니다. 감사합니다!
Joe

물론 @Joe는 원하는 스크립트뿐만 아니라 모든 파이썬 스크립트를 죽일 것입니다. 스크립트를 시작할 때 스크립트의 pid를 파일에 기록하고 나중에 다시 시작할 때 해당 pid 만 죽이는 것이 좋습니다.
psusi

2
물론, 당신은 모범 사례 관점에서 옳았으며, 그것은 확실히 장기적인 사용입니다. 그러나 killall python을 작동시키는 것은 내가 필요한 시작이었습니다.
Joe

4

프로세스를 종료하고 다시 시작하는 간단한 방법은 killall -9 $name_of_binary명령입니다.

보다 복잡한 방법은 프로세스 PID로 파일을 만드는 것입니다. 예를 들어 다음과 같이 시작할 수 있습니다.

$name_of_binary &
echo $! > $pidfile

그런 다음 프로세스를 다음과 같이 종료 할 수 있습니다.

kill -9 $(cat $pidfile) && rm $pidfile

$pidfile프로세스를 시작하기 전에 존재하지 않는 검사를 통합 할 수도 있습니다 . & c.


grawity : 궁금해서 왜 pidfile에 LF가 있어야합니까?
Eroen
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.