Windows - cmd kapatıldıktan sonra işlemi arka planda çalıştır


15

Windows'ta arka plan işlemi olarak çalıştırmak istediğim bir Python komut dosyası var.

Bunu Linux'ta şu şekilde yapabilirim:

python script.py &

ve daha sonra işlemi terminalden ayırın:

disown

Windows'da, şu ana kadar sahip olduğum tek şey:

start /b python script.py

Ancak, CMD penceresini kapatırsam, komut dosyası çalışmayı durdurur. Komut dosyasının arka planda çalışmasını sağlamak için burada eksik olduğum ekstra bir komut var mı?

Yanıtlar:


6

startzaten doğru yönde olmalı. Ancak, /baynı konsola bağlar. Şimdi sorun, bir konsol penceresi kapatıldığında, bu konsolla ilişkili tüm işlemlerin de kapatılacağıdır.

Ya startolmadan kullanabilirsiniz /b, o zaman yeni bir konsolda çalışır. Yine de konsol penceresi olmadan arka planda çalıştırmak istiyorsanız, bir VBScript veya üçüncü taraf aracı kullanmanız gerekir: Toplu iş dosyasını tamamen gizli bir şekilde çalıştırın

Ancak, bu durumda artık stdout / stderr çıktısını göremezsiniz. Bir cmd /c your_command > stdout.txt 2> stderr.txtçağrıya sarıp bunu yukarıda belirtilen yöntemlerden (VBScript, üçüncü taraf aracı ...) başlatarak bir dosyaya yeniden yönlendirebilirsiniz .

Alternatif olarak, çıkmadan önce kendi konsol pencerenizi de gizleyebilirsiniz. Ben sadece (kaynak kodu temelde ShowWindow(GetConsoleWindow(), SW_HIDE)) tam olarak yapan küçük bir tek satırlık program yazdım : http://share.cherrytree.at/showfile-24286/hide_current_console.exe

Bu şekilde, start /bkonsolunuzu "teknik olarak gizlemek" için kullanabilirsiniz ve konsolu gizlemek istediğinizde çalıştıracak hide_current_console & exitve ardından cmd.exe işlemini (python işlemini değil) çalıştıracaksınız - bir satırda, çünkü exitkonsol zaten gizlendikten sonra yazamazsınız.


Nereden hide_current_consolegeliyor? W10 bilgisayarlarda çalışmaz.
Btc Sources

1
Tekrar test ettim, hala çalışıyor. Nereden geliyor: Lütfen yazıyı tekrar okuyun, bu dosyanın sahip olduğu kaynak kodun bir satırını gösterdim ve indirmek için derlenmiş bir hide_current_console.exe dosyasını bağladım ...
CherryDT

-2

Aşağıdakilerin benim için iyi çalıştığını gördüm:

run python script.py

1
Oh, ve Linux üzerinde background ( &) yerine ve disownkullanmanızı öneririm nohup.
nikc

5
Bir Windows'un girmiş Yani komut kabuğu aşağıdaki hatayı veriyor cmd: 'run' is not recognized as an internal or external command, operable path or batch file..
markshep
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.