Normalerweise verwende ich das Linux-Subsystem, wenn ich etwas unter Windows 10 programmiere, sodass alle meine Pfade relativ zu sind ~
. Ich habe ein Python-Skript, das für immer im Hintergrund ausgeführt wird, bis ich den Prozess beende. Wie würde ich das unter Windows 10 ohne offenes Terminal machen?
Dinge, die ich versucht habe:
bash -c "python3 script.py
von Run.nohup python3 -u script.py
dann das Terminal schließen.setsid python3 script.py
dann das Terminal schließen.
Nichts davon hat funktioniert. Gibt es eine Möglichkeit, dies zu tun? Gibt es alternativ eine Möglichkeit, die Pfade so zu ändern, dass sie funktionieren, wenn ich das Skript von W10 AND Bash aus starte, ohne sie jedes Mal wechseln zu müssen?
jobs
) als auch ein Prozess (ps aux
). Ich kann es verwendenfg
, um es in den Vordergrund zu bringen. Aber nachdem ich das letzte Bash-Fenster geschlossen und ein neues Bash-Fenster geöffnet habe, ist der Job weg, der Prozess läuft noch und ich kann den Prozess nicht in den Vordergrund verschieben. Entschuldigung, wenn meine Terminologie nicht stimmt.tmux
oderscreen
zur Unterstützung erneutes Anschließen an ein anderes Terminal. Linux-Computer (und andere * nix-Computer), die nativ ausgeführt werden, haben dieselbe Einschränkung.Ja, es ist im Moment "unmöglich".
Aber es ist möglich, dass es wie ein Hintergrundprozess mit einigen Tricks "erscheint". Ich wollte diese Funktionalität selbst ziemlich schlecht, also fand ich nach ein paar Stunden eine beschissene, aber funktionierende Lösung.
Der Hauptpunkt besteht darin, eine unsichtbare Shell zu erstellen, zu der Sie WSL Bash mit VBScript starten. Sie können dieses Skript dann beim Start ausführen lassen. Die richtige Aufgabenplanung hat aus irgendeinem Grund nicht funktioniert.
Linux-Seite, um Daemons zu aktivieren, können Sie Ihr eigenes rudimentäres Startsystem haben, das zum Beispiel .bashrc missbraucht.
Der Prozess wird hier in diesem Dokument beschrieben, das ich unter https://emil.fi/bashwin geschrieben habe . Ich habe keine Aufgabenüberwachung implementiert, aber es sollte ziemlich einfach zu erweitern sein.
quelle
Haben Sie diese Lösung ausprobiert ?
Es verwendet einen WSH-Helfer, um versteckte Anwendungen zu starten.
Anschließend können Sie in Tak Scheduler einfach eine neue Aufgabe erstellen, um den Befehl beim Anmelden zu starten. Etwas wie
wscript <path to runHidden.vbs> bash.exe -c "python script.py"
quelle
Es hat ewig gedauert, aber ich habe einen dumm komplizierten Weg gefunden (aus einer Batch-Datei):
start bash -c "DISPLAY=:0 [command] & (sleep 0.5 && kill -n 9 $$)"
Hier ist eine Aufschlüsselung dessen, was es tut und warum:
quelle
Ich weiß nicht, wie gut Windows Service Manager (SrvMan) von http://tools.sysprogs.org/srvman/ für Sie funktionieren würde, aber es hat für mich für andere Programme funktioniert. Tatsächlich habe ich versucht, die "bash.exe" als Dienst auszuführen, um zu sehen, ob sie funktionieren würde, und ich schätze, ich muss ein bisschen mehr basteln, damit LAMP tatsächlich im Hintergrund funktioniert.
quelle