프로그램을 서비스로 실행하는 방법 (자동)?


23

터미널에서 시작하는 파이썬 기반 서버가 있습니다. 그러면 터미널의이 특정 인스턴스가 프로그램에 제어권을 부여하고 프로그램은 닫힐 때까지이를 일종의 로깅 창으로 사용합니다. 이것이 정상입니까, 아니면 어떻게 든 단순히 활성 프로세스로 표시되는 다른 방법으로 프로그램을 시작하려고합니까? 프로그램을 시작한 터미널을 닫으면 프로그램이 종료됩니다.

고맙습니다


이 답변에는 PHP가 언급되었지만 Python에도 적용됩니다. askubuntu.com/questions/26555/running-php-cli-server/…

답변:


9

오래된 bash조차도 백그라운드로 프로세스를 보내는 데 &를 사용하고 있지만 다른 방법도 거의 없습니다 .. 그러나 기본 두 가지는 다음과 같습니다.

1.)$~ your_command > outputfile_for_stdout &
        # runs your command in background, giving you only PID so you can exit that process by `kill -9 PID_of_process`
        # & goes at the end of row      


2.)$~ your_command > outputfile_for_stdout 
        # this will run your program normally
        # press  Ctrl + Z then program will pause
   $~ bg
        # now your program is running in background
   $~ fg
        # now your program came back to foreground
3.)you can run terminal window under screen command so it will live until you either kill it or you reboot your machine
   $~ screen
   $~ run_all_your_commands
       # Ctrl + A + D will then detach this screen
   $~ screen -r will reattach it

다른 유용한 명령들 :

   $~ jobs
        # will show you all processes running right now, but without PID
   $~ ps
        # will show you all processes for actual terminal window

흠, 나는 지금까지 프로세스를보기 위해 'top'명령을 사용하고 있었다
U2ros

훌륭한 솔루션. pid가 파일에 저장되도록 1. 옵션을 수정하는 방법이 있습니까? 따라서 로그 파일과 pid 파일이 생성됩니다.
Oguz Bilgic

27

데몬으로 전환하십시오 (서비스)
daemon --name="yourservicename" --output=log.txt sh yourscript.sh


7
$ servicename &

를 사용 &하면 프로그램이 종료 될 때까지 쉘을 차단하는 대신 프로그램이 백그라운드에서 실행됩니다.


아닙니다. 예 : dixon@dixon-vaio:~$ nautilus & [1] 11835. 프로세스 ID를 반환하고 새 쉘 프롬프트가 표시됩니다. http://unix.stackexchange.com/questions/3886/difference-between-nohup-disown-and 도 확인하십시오 .
dixoncx

1
나는 정정되었다. 다운 투표가 제거되었습니다.
Scott Severance


0

터미널에서을 사용하여 screen명령을 실행 하거나 추적 할 수도 있습니다 &. 지속적인 프로세스를 실행하는 쉬운 방법.


&이 경우에 프로세스를 배경으로 사용 하는 것은 제 생각에는 거의 없습니다. OP는 그의 서버가 stdout에 로그하므로 &터미널을 사용하면 출력이 복잡해집니다. 또한 OP는 터미널 닫기를 언급하므로 OP는 프로세스를 다시 포 그라운드 할 수 없으며 모든 로그 출력이 손실됩니다. 최소한 로그 파일로 리디렉션하거나 screen설정 을 유지하는 것이 좋습니다. 그러나 screenOP 의 기본 사항 (분리 / 부착 등)을 설명해주세요.
Robert Riedl
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.