Übergeben Sie den Befehl an WSL Ubuntu 16.04, wenn Sie WSL Ubuntu öffnen / starten

529
a.t.

Nach dem Einrichten eines Cron-Jobs versuche ich Folgendes: Den Cron-Dienst automatisch zu aktivieren, wenn ich die Windows Subsystem für Linux Ubuntu 16.04-App aus dem Windows App Store öffne.

Derzeit versuche ich dieses Ziel zu erreichen, indem ich simuliere:

  1. Öffnen Sie die WSL Ubuntu
  2. eingeben sudo service cron start
  3. <enter>

Um das zu tun, habe ich die ubuntu1604.exe gefunden, mich selbst zum Besitzer gemacht und mir die Erlaubnis erteilt, die ubuntu1604.exe zu lesen und zu öffnen.

Als Nächstes habe ich cmdim Administratormodus geöffnet, habe nach: gesucht und Folgendes C:\Program Files\WindowsApps\CanonicalGroupLimited.Ubuntu16.04onWindows_1604.2018.510.0_x64__79rhkp1fndgsceingegeben: Um ubuntu1604.exezu bestätigen, dass ich WSL ubuntu von cmd aus öffnen konnte, ohne etwas dazu aufgefordert zu bekommen. Ich war, da es gerade Ubuntu im selben cmdFenster geöffnet hat (sichtbar dank grün im <user>@<pcname>:~$eingeblendeten cmd).

Als Nächstes versuchte ich, ein Argument an die WSL Ubuntu zu übergeben, während ich es mit folgendem Befehl öffnete:

  1. ubuntu1604.exe run echo "hello world"
  2. ubuntu1604.exe echo "hello world"
  3. ubuntu1604.exe -c echo "hello world"
  4. ubuntu1604.exe -c

Jedoch:

  1. Gibt hello worldWSL ubuntu zurück, öffnet jedoch nicht.
  2. Gibt eine Form der Dokumentation zum Starten einer Linux-Distribution zurück (im Bild unten).
  3. Gibt hello worldWSL ubuntu zurück, öffnet jedoch nicht.
  4. Öffnet Ubuntu am Ort des aktuellen cmd-Pfads, führt es jedoch nicht aus

Documentation received in command 2.

Also habe ich versucht, es aus einem Batch-Skript oder einem Powershell-Skript zu öffnen:

  1. Batch-Skript test1.bat:

start /d "C:\Program Files\WindowsApps\CanonicalGroupLimited.Ubuntu16.04onWindows_1604.2018.510.0_x64__79rhkp1fndgsc" ubuntu1604.exe echo "hello world"

  1. Batch-Skript: test2.bat

    Process.Start("C:\Program Files\WindowsApps\CanonicalGroupLimited.Ubuntu16.04onWindows_1604.2018.510.0_x64__79rhkp1fndgsc\ubuntu1604.exe", "echo "hello world"");

  2. Powershell-Skript: test3.ps1

Process.Start("C:\Program Files\WindowsApps\CanonicalGroupLimited.Ubuntu16.04onWindows_1604.2018.510.0_x64__79rhkp1fndgsc\ubuntu1604.exe", "echo "hello world"");

  1. Powershell-Skript: test4.ps1 Process.Start ("C: \ Programme \ WindowsApps \ CanonicalGroupLimited.Ubuntu16.04onWindows_1604.2018.510.0_x64__79rhkp1fndgsc \ ubuntu1604.exe", echo "hello world"); `

Obwohl:

  1. Öffnet einen großen schwarzen Bildschirm und schließt sich in einem Flimmern.
  2. Process.Start wird nicht als interner oder externer Befehl erkannt
  3. Ist nicht in Powershell-Sprache
  4. Ist nicht in Powershell-Sprache.

Jetzt ist mir bekannt, dass möglicherweise die Option zum Übergeben von Argumenten, die einen Befehl ohne Benutzerinteraktion ausführen können, beim Starten der WSL ubuntu1604 deaktiviert werden kann, da es sich um eine App des App Store (oder aus einem anderen Grund) handelt.

Daher:

  1. Wenn jemand weiß, ob meine Syntax korrekt ist, aber meine Absicht
    auf diese Weise nicht möglich ist, lass es mich wissen.
  2. Wenn es möglich ist, aber ich mache es falsch, würde ich mich über Feedback freuen, was ich falsch mache oder eine Lösung, die es richtig macht.
0
Mögliches Duplikat von [WSL-Dienste beim Start ausführen] (https://superuser.com/questions/1343558/how-to-make-wsl-run-services-at-startup) a.t. vor 6 Jahren 5

1 Antwort auf die Frage

0
a.t.

Ich denke, dass Cronjobs hauptsächlich periodisch laufen sollen.

Um einen Befehl automatisch beim Start von WSL Ubuntu 16.04 auszuführen, können Sie:

  1. CD zu /home/<your ubuntu user name>
  2. sudo nano .bashrc
  3. Der Texteditor nano erstellt / öffnet dann eine Datei .bashrc
  4. In dieser Datei können bereits viele Beispiele gezeigt werden. Um Ihren Befehl beim Start von WSL ubuntu 16.04 auszuführen, schreiben Sie Ihren Befehl in die erste Zeile der .bashrc-Datei.
  5. Zum Beispiel: echo "hello world"wie im Bild unten gezeigt.
  6. Schließen Sie den Editor mit: ctrl+x
  7. Speichern Sie die Datei mit Y
  8. Beenden Sie Ubuntu
  9. Starten Sie ubuntu neu und überprüfen Sie, ob die Hallo-Welt vor Ihrem Benutzernamen gedruckt wird.

! [Ein Beispielbefehl in .bashrc, der beim Booten von WSL Ubuntu ausgeführt wird.] 1

Sie können den hello worldBefehl durch ersetzen sudo service cron start, um den Cronjob-Dienst zu aktivieren. Dann müssen Sie Ihr Passwort jedoch noch manuell eingeben. Um dies zu lösen, verwenden Sie Folgendes : https://askubuntu.com/questions/147241/execute-sudo-without-password

  1. WSL ubuntu 16.04 (Terminal) öffnen
  2. sudo visudo
  3. Fügen Sie am Ende der Datei eine Zeile hinzu: `ALL = (ALL) NOPASSWD: ALL
  4. Mit dem Benutzernamen zq würden Sie beispielsweise die folgende Zeile am Ende der Datei einfügen:
  5. zq ALL=(ALL) NOPASSWD: ALL
  6. Strg + x zum Beenden
  7. ygefolgt von <enter>zum Speichern.
  8. Dann wieder schließen Sie Ubuntu und öffnen Sie es erneut und überprüfen Sie
  9. Der Cron-Dienst wird automatisch ausgeführt, wenn Sie WSL ubuntu 16.04 starten / öffnen, ohne das Kennwort einzugeben.
  10. (Sie können mit dem Befehl überprüfen:. sudo service cron status)