Démarrer un processus d'arrière-plan détaché dans PowerShell
J'ai un programme Java qui je voudrais lancer un processus en arrière-plan à partir d'un script PowerShell, semblable à la manière d'un démon s'exécute sur Linux. Le script PowerShell doit faire une ou deux choses:
- Exécuter le programme comme étant un processus détaché dans le fond, le sens de la fenêtre parent peut être fermé et le processus continue de fonctionner.
- Rediriger le programme de la sortie standard et l'erreur standard pour les fichiers.
- Enregistrer le PID du processus d'arrière-plan dans un fichier de sorte qu'il peut être arrêté plus tard par un autre script.
J'ai un script shell sous Linux qui démarre le programme comme suit:
$ java -jar MyProgram.jar >console.out 2>console.err &
Je suis l'espoir de reproduire le même comportement sur Windows à l'aide d'un script PowerShell. J'ai essayé d'utiliser Start-Process
avec différentes combinaisons d'options, ainsi que la création de System.Diagnostics.ProcessStartInfo
et System.Diagnostics.Process
objets, mais jusqu'à présent, je ne suis pas du tout avoir de la chance. PowerShell, le programme démarre comme un processus d'arrière-plan, mais le programme se termine brusquement lorsque la fenêtre DOS qui a commencé la session PowerShell est fermé. Je tiens à commencer en arrière-plan, et être indépendant de la fenêtre de commande qui a commencé.
La redirection de sortie a également été source de problèmes, car il semble que la sortie d'erreur et de flux ne peuvent être redirigé dans le processus est en cours d'exécution dans la même fenêtre (par exemple, à l'aide de -NoNewWindow
).
Est ce genre de chose possible dans PowerShell?
source d'informationauteur Dave | 2014-07-29
Vous devez vous connecter pour publier un commentaire.
Utilisation emplois pour cela:
Une autre option serait
Start-Processus
:Envisager d'utiliser le planificateur de tâches pour cela. Définir une tâche et de le définir sans se déclenche. Qui va vous permettre tout simplement de "Run" (déclenchement manuel) de la tâche.
Vous pouvez mettre en place et/ou de déclencher des tâches planifiées à l'aide de la ScheduledTasks module powershell, ou vous pouvez utiliser l'interface graphique.
C'est un vieux post, mais depuis que j'ai il fonctionne très bien pensé qu'elle pourrait aider à partager. Son appel à "java" au lieu de "javaw dans" qui est probablement votre problème. Il a couru hors de moi-même à l'aide de mon JEdit programme java via powershell pour le lancer.
Que vous pouvez transformer en un peu la fonction, puis un alias pour le rendre facile pour le lancement en Powershell.