So starten Sie Cron automatisch in WSL unter Windows 10 und 11
Veröffentlicht: 2022-01-29Windows bietet mehrere Möglichkeiten, Aufgaben zu automatisieren. Das gebräuchlichste Tool ist der Windows-Taskplaner, aber wenn Sie das Windows-Subsystem für Linux (WSL) verwenden, gibt es auch den Cron-Daemon, der Aufgaben für Ihre WSL-Installation im Hintergrund ausführt.
Cron wird standardmäßig nicht ausgeführt
Unter Windows 10 und Windows 11 ist Cron in Linux-Umgebungen wie Ubuntu enthalten. Das Problem ist, dass WSL Cron nicht automatisch startet, was bedeutet, dass Ihre automatisierten Aufgaben nicht standardmäßig ausgeführt werden.
Um dies zu beheben, könnten Sie cron jedes Mal manuell starten, wenn Sie die Befehlszeile öffnen, aber das manuelle Starten eines Tools, das Aufgaben automatisieren soll, verfehlt den Punkt.
Glücklicherweise gibt es eine einfache Möglichkeit, dies zu beheben, und es erfordert die Verwendung des Taskplaners.
Wenn Sie Cron in Linux noch nie zum Ausführen von Aufgaben verwendet haben, sehen Sie sich unser vorheriges Tutorial zum Planen von Aufgaben unter Linux an. Für unsere Zwecke hier gehen wir davon aus, dass Sie bereits einige Cron-Jobs in Ihrer WSL-Installation erstellt haben und dass Sie Hilfe benötigen, um sicherzustellen, dass sie ausgeführt werden, anstatt Cron ständig zu babysitten.
Für dieses Tutorial verwenden wir den sudo service
, um cron zu überprüfen und zu starten. Dies ist die empfohlene Methode zum Stoppen und Starten von Diensten in modernen Builds von Ubuntu – der beliebtesten Distribution für WSL.
Beachten Sie außerdem, dass in diesem Tutorial davon ausgegangen wird, dass Sie über Administratorrechte für Ihre Version von WSL verfügen. Wenn Sie der einzige Benutzer Ihres PCs sind und WSL selbst aktiviert haben, verfügen Sie über Administratorrechte.
Tipp: Dies funktioniert im Windows-Subsystem für Linux auch unter Windows 11 – nicht nur unter Windows 10.
RELATED: So planen Sie Aufgaben unter Linux: Eine Einführung in Crontab-Dateien
Linux vorbereiten
Als erstes müssen wir dem Computer erlauben, Cron ohne Passwort zu starten. Wenn Sie einen Dienst wie cron starten, verwenden Sie den Befehl sudo service cron start
. Dieser Befehl erfordert jedoch ein Kennwort, auf das Windows beim Start keinen Zugriff hat. Der Weg, dies zu umgehen, besteht darin, die Anforderung eines Kennworts für diesen Befehl zu deaktivieren.
Öffnen Sie dazu Ihr WSL-Terminalfenster und sudo visudo
. Drücken Sie die Eingabetaste auf Ihrer Tastatur, geben Sie Ihr Linux-Passwort ein und drücken Sie erneut die Eingabetaste. Wenn Sie Ubuntu verwenden, öffnet dies die „sudoers“-Datei mit dem anfängerfreundlichen Nano-Befehlszeilen-Texteditor. Sudoers ist eine Datei für Systemadministratoren, die Privilegien und Zugriffsrechte für Benutzer ändern kann.
Fügen Sie den folgenden Befehl am Ende der sudoers-Datei hinzu und drücken Sie dann Strg+o zum Speichern und Strg+x zum Verlassen der Datei.
%sudo ALL=NOPASSWD: /usr/sbin/service cron start
Dieser sudoers-Befehl besagt, dass jeder Benutzer, der über ausreichende Berechtigungen zur Verwendung des sudo-Befehls verfügt (dazu sollten Sie gehören), kein Passwort benötigt, um den Befehl sudo service cron start
auszuführen, der den Cron-Daemon startet.
Nachdem Sie die Datei gespeichert haben, können Sie überprüfen, ob der Befehl seine Aufgabe erfüllt, indem Sie sudo service cron start
eingeben, und er sollte cron starten, ohne nach einem Passwort zu fragen. Wenn das funktioniert hat, schalten wir cron wieder aus, damit wir testen können, ob die Aufgabe, die wir im nächsten Schritt erstellen, ordnungsgemäß funktioniert. Führen Sie dazu bitte sudo service cron stop
.
Richten Sie Cron im Windows-Taskplaner ein
Das ist die erste Phase unserer Reise zur Cron-Automatisierung. Kommen wir zu Teil 2 mit dem Taskplaner. Tippen Sie auf die Windows-Taste auf der Tastatur und suchen Sie dann nach „Aufgabenplanung“. Starten Sie die Verknüpfung „Aufgabenplanung“.
Wenn es gestartet wird, schauen Sie unter dem Abschnitt "Aktionen" nach und wählen Sie "Basisaufgabe erstellen".
Dadurch wird der Assistent für grundlegende Aufgaben geöffnet. Zuerst werden Sie aufgefordert, die Aufgabe zu benennen und ihr eine Beschreibung zu geben. Sie können hier eingeben, was Sie wollen. Wir haben die Aufgabe „cron“ genannt und die Beschreibung lautet „Eine Aufgabe zum Starten von Cron beim Systemstart“. Klicken Sie jetzt auf „Weiter“.
Im folgenden Abschnitt kommen wir zur Sache. Zuerst möchte Windows wissen, wann wir die Aufgabe ausführen möchten. Wählen Sie das Optionsfeld „Wenn der Computer startet“ und klicken Sie auf „Weiter“.
Im nächsten Abschnitt möchten wir „Programm starten“. Diese Option ist standardmäßig ausgewählt, also klicken Sie auf „Weiter“.
Jetzt müssen wir das Programm angeben, das wir ausführen möchten, nämlich WSL. Geben Sie in das Texteingabefeld „Programm/Skript“ Folgendes ein: C:\Windows\System32\wsl.exe
Wir müssen auch einige Argumente hinzufügen, da wir bisher nur WSL gestartet haben, aber innerhalb von WSL müssen wir Ubuntu anweisen, cron zu starten. Fügen Sie also im Feld „Argumente hinzufügen“ Folgendes hinzu: sudo /usr/sbin/service cron start
Klicken Sie noch einmal auf „Weiter“, aktivieren Sie das Kontrollkästchen „Öffnen Sie den Eigenschaftendialog, wenn ich auf „Fertig stellen“ klicke“ und klicken Sie dann auf „Fertig stellen“.
Die Aufgabe ist erstellt, aber wir müssen noch eine letzte Sache tun, um sicherzustellen, dass alles funktioniert. Ein neues Fenster wird geöffnet, das die Zusammenfassung der von Ihnen erstellten Aufgabe anzeigt, aber nur ausgeführt wird, wenn Sie angemeldet sind. Wir müssen das Optionsfeld „Ausführen, ob Benutzer angemeldet ist oder nicht“ auswählen und dann „OK“ drücken.
Lassen Sie uns nun unsere Aufgabe auf zwei Arten testen. Scrollen Sie zunächst im Hauptfenster des Taskplaners nach unten, bis Sie Ihren Tasknamen sehen. Wenn Sie den Namen „cron“ verwendet haben, sollte er ganz oben in der Liste zu finden sein. Klicken Sie mit der rechten Maustaste auf die Aufgabe und wählen Sie „Ausführen“.
Gehen Sie dann zurück zu Ihrem WSL-Terminal und geben Sie sudo service cron status
, und es sollte sagen, dass cron läuft. Wenn dies nicht der Fall ist, überprüfen Sie, ob Sie in den vorherigen Schritten alles richtig eingegeben haben.
Hat beim ersten Check alles funktioniert, ist es Zeit für den großen Test. Starten Sie Ihren PC neu, und wenn Sie zurückkommen, öffnen Sie ein WSL-Terminal und führen Sie sudo service cron status
aus, was melden sollte, dass cron jetzt ausgeführt wird.
Herzliche Glückwünsche! Sie haben Ihren ersten Schritt in eine größere, automatisierte Welt gemacht. Wenn Cron im Hintergrund ausgeführt wird, werden die Cronjobs, die Sie in WSL konfigurieren, automatisch nach Zeitplan ausgeführt.