2014-09-30 8 views
0


ssh 연결을 종료 한 후에 백그라운드에서 내 파이썬 프로그램을 백그라운드에서 실행해야합니다. 필자는 SQL에 피델 정보를 저장해야하기 때문에 DB
나는 nohup을 사용하여이 작업을 시도하지만 python 프로그램이 실행되지 않은 것 같습니다.

MySql DB를 살펴본 후, 아래에 아무것도 삽입하지 않았으므로 아무 것도 삽입하지 않았습니다.
ssh 종료 후 백그라운드에서 파이썬 프로그램을 계속 실행하는 방법

[email protected] ~/MyProjekt $ sudo nohup python sensorReader.py & 
    [1] 8580 

을 내가 볼 때이 과정은 오순절에 해당하는 경우 :

나는 입력

ps -A| grep 8580 

아무 것도 반환하지 않습니다.
그래서 나 뭐 잘못 됐니?
SSH 연결 종료 후 어떻게 파이썬 프로그램을 실행할 수 있습니까?

답변

1

저는 이것이 프로그램이 실행되고 종료 된 것처럼 보이는 ssh 연결 문제라고 생각하지 않습니다. .py가 무한 루프에서 실행됩니까? 그렇지 않으면 살아 남기를 기대해서는 안됩니다.

그런 다음 상위 프로세스가 종료 된 후 (프로세스의 셸) 프로세스를 유지하는 방법에 대한 nohup이 답입니다. 이는 HUP 신호 (종단 ​​상위 프로세스에서 보낸 신호)를 무시한다는 의미입니다.

'&'은 '백그라운드에서 실행'을 의미합니다.

프로그램에서 주기적으로 수행해야하는 경우 cron 솔루션이 유용하지만 소켓 수신과 같은 일부 이벤트를 기다리는 동안 계속 살아 있어야하는 경우에는 init scritp를 작성하여 프로그램 은 부팅시와 원하는 런레벨에서만 악마로 실행됩니다.

+0

제 Python 프로그램에 루프가 없습니다. 그것은 Phidget 센서 값을 기다리고 있으며이 정보를 같은 라즈베리에있는 MySQL Db에 저장합니다. – feldeOne

+0

Ok,이 경우 cron 작업은 아마도 가장 좋은 (그리고 가장 간단한) 해결책 일 것입니다 (Nonnib 응답을보십시오). 그러나 ps aux가 실행될 때 프로세스 pid를 볼 수 있으면 안됩니다. 그것은 항상 실행되지 않을 것이고, 주기적으로 생성 될 것입니다. – Oberix

+0

화면에서 내 문제를 해결했습니다. -S sessionXX를 사용하여 새 세션을 시작하고 ctr + a => d를 사용하여 세션을 분리하면 SSH 연결을 종료 할 수 있습니다. 그럼에도 불구하고 나는 몇몇 작품에 대해 crontab이 필요하다. Thatswhy thx Marco와 당신을위한 최고의 대답 – feldeOne

2

파이썬 프로그램을 cron 재부팅 작업으로 실행하는 것이 좋습니다.

는 루트 cronjobs가

sudo crontab -e 

를 사용하여 편집하고 줄을 추가

@reboot sudo python full_path/MyProjekt/sensorReader.py 

그런 다음 당신의 파이를 재부팅하려면 :

sudo reboot 

그리고 프로세스가 실행되고 있는지 확인합니다

ps -aux | grep python 
+0

아이디어는 훌륭하지만 실제로 작동하지는 않습니다. 프로세스가 실행중인 것처럼 보이지만 프로그램이 센서 정보를 SQL DB에 쓰지 않습니다. 어떤 아이디어? – feldeOne

+0

콘솔 출력에 액세스 할 수 없기 때문에 파이썬 스크립트에서 로깅을 설정하여 작업 내용을 추적 할 수 있습니다. 2> & 1 >> /tmp/mylogfile.log를 추가하여 stdout과 stderr를 cron 작업의 파일로 파이프 할 수 있습니다. – Nonnib

관련 문제