Windows - Exécuter le processus en arrière-plan après la fermeture de cmd
15
J'ai un script Python que je veux exécuter en arrière-plan sur Windows.
Je peux le faire sur Linux avec:
python script.py &
puis déconnectez le processus du terminal avec:
disown
Sous Windows, tout ce que j'ai jusqu'à présent est le suivant:
start /b python script.py
Cependant, si je ferme la fenêtre CMD, le script cesse de s'exécuter. Existe-t-il une commande supplémentaire qui me manque ici pour que le script s'exécute en arrière-plan?
startdevrait déjà être la bonne direction. Cependant, /bil l'attache à la même console. Maintenant, le problème est que lorsqu'une fenêtre de console est fermée, tout processus associé à cette console sera également fermé.
Vous pouvez soit utiliser startsans /b, puis il s'exécutera dans une nouvelle console. Si vous souhaitez l'exécuter en arrière-plan sans fenêtre de console, vous devez utiliser un VBScript ou un outil tiers: exécutez un fichier de commandes de manière complètement masquée
Cependant, dans ce cas, vous ne verriez plus la sortie stdout / stderr. Vous pouvez cependant le rediriger vers un fichier, en l'enveloppant dans un cmd /c your_command > stdout.txt 2> stderr.txtappel et en démarrant celui-ci via l'une des méthodes susmentionnées (VBScript, outil tiers, ...).
Vous pouvez également masquer votre propre fenêtre de console avant de quitter. Je viens d'écrire un petit programme d'une seule ligne qui fait exactement cela (le code source est essentiellement ShowWindow(GetConsoleWindow(), SW_HIDE)): http://share.cherrytree.at/showfile-24286/hide_current_console.exe
De cette façon, vous pouvez utiliser start /bet lorsque vous souhaitez "fermer" votre console (la masquer techniquement), vous exécutez hide_current_console & exitce qui masque la console, puis fermez le processus cmd.exe (pas le processus python) - en une seule ligne, car vous ne pouvez pas taper exitaprès que la console a déjà été masquée.
D'où hide_current_consolevient-il? Ne fonctionne pas sur un PC W10.
Btc Sources
1
Je l'ai testé à nouveau, cela fonctionne toujours. D'où cela vient: Veuillez relire l'article, j'ai montré la seule ligne de code source de ce fichier et lié un fichier hide_current_console.exe compilé à télécharger ...
CherryDT
-2
J'ai trouvé que ce qui suit fonctionnait bien pour moi:
Oh, et sur Linux au lieu de background ( &) et disownje suggère d'utiliser nohup.
nikc
5
Cette commande est entré dans une shell Windows cmd donne l'erreur suivante: 'run' is not recognized as an internal or external command, operable path or batch file..
hide_current_console
vient-il? Ne fonctionne pas sur un PC W10.J'ai trouvé que ce qui suit fonctionnait bien pour moi:
la source
&
) etdisown
je suggère d'utilisernohup
.'run' is not recognized as an internal or external command, operable path or batch file.
.