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


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.