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.