Windows-cmd를 닫은 후 백그라운드에서 프로세스 실행


15

Windows에서 백그라운드 프로세스로 실행하려는 Python 스크립트가 있습니다.

Linux에서 다음과 같이 할 수 있습니다.

python script.py &

다음을 사용하여 프로세스를 터미널에서 분리하십시오.

disown

Windows에서 지금까지 내가 가진 것은 다음과 같습니다.

start /b python script.py

그러나 CMD 창을 닫으면 스크립트 실행이 중지됩니다. 스크립트를 백그라운드에서 계속 실행하기 위해 여기에 누락 된 추가 명령이 있습니까?

답변:


6

start이미 올바른 방향이어야합니다. 그러나 /b동일한 콘솔에 연결합니다. 이제 콘솔 창을 닫으면이 콘솔과 관련된 모든 프로세스도 닫힙니다.

start없이 사용할 수 있으며 /b새 콘솔에서 실행됩니다. 콘솔 창없이 백그라운드에서 실행하려면 VBScript 또는 타사 도구를 사용해야합니다 . 배치 파일을 완전히 숨겨진 방식으로 실행하십시오.

그러나이 경우 stdout / stderr 출력이 더 이상 표시되지 않습니다. 그러나 파일을 cmd /c your_command > stdout.txt 2> stderr.txt호출 로 래핑 하고 앞에서 언급 한 방법 중 하나 (VBScript, 타사 도구 등)를 통해 시작 하여 파일로 리디렉션 할 수 있습니다.

또는 종료하기 전에 자신의 콘솔 창을 숨길 수도 있습니다. 방금 작은 것을 한 줄로 작성했습니다 (소스 코드는 기본적으로 ShowWindow(GetConsoleWindow(), SW_HIDE)) : http://share.cherrytree.at/showfile-24286/hide_current_console.exe

이 방법으로을 사용할 수 있으며 start /b콘솔을 "닫기"(기술적으로 숨기려면) hide_current_console & exit콘솔을 숨기고 cmd.exe 프로세스 (python 프로세스가 아닌)를 한 줄에 실행하십시오. exit콘솔이 이미 숨겨진 후에는 입력 할 수 없으므로


어디 hide_current_console에서 왔습니까? W10 PC에서는 작동하지 않습니다.
Btc 출처

1
다시 테스트했는데 여전히 작동합니다. 출처 : 다시 게시물을 읽으십시오.이 파일에있는 소스 코드 한 줄을 보여주고 컴파일 된 hide_current_console.exe 파일을 다운로드하여 연결했습니다 ...
CherryDT

-2

나는 다음이 나를 위해 잘 작동한다는 것을 알았다.

run python script.py

1
아, 그리고 배경 ( &) 대신 Linux disown에서을 사용하는 것이 좋습니다 nohup.
nikc

5
Windows cmd 쉘에 입력 한 명령은 다음 오류를 제공합니다 'run' is not recognized as an internal or external command, operable path or batch file...
markshep
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.