터미널 창에서 프로세스를 실행한 다음 해당 창을 숨기려면 어떻게 해야 합니까?

터미널 창에서 프로세스를 실행한 다음 해당 창을 숨기려면 어떻게 해야 합니까?

python ~/program/proxy.py시작할 때 터미널에서 실행하고 싶습니다 . 그런 다음 이 터미널 창을 숨깁니다(단지 에이전트일 뿐이므로 디버그 정보를 보고 싶지 않기 때문). 그러면 어떻게 작동하게 할 수 있나요?

답변1

IMHO 가장 좋은 해결책은 에이전트를 시스템 데몬으로 실행하는 것입니다.

이것소설 튜토리얼핵심 개념을 가르쳐야합니다. 불행하게도 이는 SuSE 중심적이므로 다른 배포판에서는 세부 사항이 약간 다를 수 있습니다. 이것을 출발점으로 사용하십시오.

추신: 문제가 조금 이상합니다. 시작 시 시작된 서비스에 터미널 창이 없습니다. 로그인 시 실행되는 프로그램에는 터미널 창이 있을 수 있습니다. 아마도 자동 로그인이 활성화되어 있어 시작 프로세스와 로그인 프로세스를 혼동하고 있을 수 있습니다.

답변2

더 조잡한 접근 방식은 프로그램을 래핑하고 터미널에서 분리하는 간단한 스크립트를 작성하는 것입니다. 그것은 다음과 같습니다:

#!/bin/bash

nohup python ~/program/proxy.py > ~/.proxy.log 2>&1 &

그런 다음 이를 로그인 자동 시작 시퀀스에 넣을 수 있습니다(이미 수행했을 수도 있음).

답변3

를 사용하면 tmux실제로 "숨겨진" 분리된 프로세스를 시작하고 필요에 따라 연결하여 상태를 확인할 수 있습니다. 터미널에서 실행하면 해당 터미널 세션을 닫은 다음 연결할 수도 있습니다.tmux 파이썬 프로세스다른 터미널에서...

이 예제는 watch실행 명령으로 작동하지만 Python 명령을 바꾸면 분리된 상태에서 tmux 세션이 시작됩니다.

tmux new -d 'watch -n 1 -d date'

"숨겨진"(분리된) 세션의 현재 상태를 보려면 tmux attach터미널 창에 다음을 입력하세요.

사용할 수도 있지만 이 의견에 따르면 screen더 나은 옵션이 될 수 있다고 생각합니다.tmux유닉스 및 리눅스 답변...

답변4

부팅 시 얼마나 일찍 실행하려는지에 따라 cron @reboot를 사용할 수 있습니다.

(환경 변수를 사용해야 할 수도 있습니다.)

그런 다음 개별 터미널에 래핑됩니다.

tmux new -d '/path/to/python /full/path/program/proxy.py'
# or #
screen -d -m '/path/to/python /full/path/program/proxy.py'

실제로 이것들은 모두 컴포지션 터미널의 배경에 맞춰 설정되어 있습니다.

이는 일반적으로 "sinatra" 또는 "minecraft"와 같은 "미키 마우스" 서버 프로세스 또는 헤드리스 "fold at home"에 사용됩니다.

깔끔함/제어를 위해 쉘 스크립트를 사용하여 시작하고 호출할 수 있습니다.저것크론에서.

관련 정보