2016-08-24 4 views
0

Comme le titre résume déjà:Windows Linux Sous-système: démarrage Bash application en tant que service

Comment puis-je démarrer automatiquement un script bash, lorsque l'ordinateur démarre - idéalement sans qu'il soit nécessaire de se connecter à Windows - en utilisant la Sous-système Microsoft pour Linux Bash.

+0

Bash est juste un exécutable, n'est-ce pas, vous n'avez rien de spécial à faire pour le lancer? [nssm] (http://nssm.cc/) devrait fonctionner. Ou vous pouvez utiliser srvany de Microsoft. Il existe probablement d'autres solutions tierces. –

+0

ok, comment ça marche exactement? J'ai un script situé dans '/ mnt/c/Users//repos/server/start.sh' à l'intérieur de ce script, je fais un' cd/mnt/c/Users//repos/server; echo "Démarré"> somefile.txt; python myserver.py' Le serveur ouvre un port tcp 8080 pour http. le pare-feu Windows est désactivé. Je n'ai pas de connexion et pas de fichier 'somefile.txt' --- J'ai aussi essayé avec nssm et avec le planificateur de tâches Windows – Tobi

+0

* Théoriquement, * si je comprends comment tout cela fonctionne, si une commande' bash.exe' fonctionne à la ligne de commande Windows, il devrait également fonctionner lorsqu'il est exécuté à partir d'un service. Évidemment, vous ne pouvez pas invoquer directement un script bash, vous devrez appeler 'bash.exe' avec les options de ligne de commande appropriées. La meilleure façon de résoudre les problèmes consiste probablement à utiliser 'psexec' (disponible sur le site Web de MS) pour exécuter votre ligne de commande, de cette façon vous verrez le message d'erreur (le cas échéant). –

Répondre

4

Pour le moment, cela n'est pas pris en charge car le service du gestionnaire de sessions WSL se ferme après la fermeture de la dernière instance de l'encapsuleur bash.exe. Il y a quelques options, mais la plus simple en ce moment est d'utiliser le run utility du développeur Xming et d'ajouter simplement un raccourci vers votre dossier de démarrage (dans le menu Démarrer) pointant vers

run.exe bash.exe -c "/home/user/daemoninit.sh ; /bin/bash". Malheureusement, si l'initialisation de votre démon nécessite un accès root, par exemple quelque chose comme sshd, vous devrez ajouter une exception à sudoers qui permet à n'importe qui d'exécuter le démon avec les privilèges root.

En outre, il existe des problèmes pour l'exécuter en tant que véritable service système Windows, car chaque installation lxss est spécifique à l'utilisateur. Certaines personnes l'ont démarré au démarrage du système, mais il se lance dans une session Windows distincte pour cet utilisateur et le fait que vous ne pouvez pas lancer bash.exe dans votre session utilisateur actuelle.

+0

Eh bien, le ne pas pouvoir ouvrir une autre fenêtre bash sonne pas si mal si vous pouvez utiliser du mastic pour le client ssh et vous avez terminé, je pense –