Come avviare Cron automaticamente in WSL su Windows 10 e 11
Pubblicato: 2022-01-29Windows ha diversi modi per automatizzare le attività. Lo strumento più comune è l'Utilità di pianificazione di Windows, ma se stai utilizzando il sottosistema Windows per Linux (WSL), c'è anche il demone cron che esegue attività in background per l'installazione di WSL.
Cron non è in esecuzione per impostazione predefinita
Su Windows 10 e Windows 11, cron è incluso in ambienti Linux come Ubuntu. Il problema è che WSL non avvia cron automaticamente, il che significa che le tue attività automatizzate non vengono eseguite per impostazione predefinita.
Per risolvere questo problema, puoi avviare cron manualmente ogni volta che apri la riga di comando, ma l'avvio manuale di uno strumento che dovrebbe automatizzare le attività non è il punto.
Fortunatamente, c'è un modo semplice per risolvere questo problema e richiede l'utilizzo dell'Utilità di pianificazione.
Se non hai mai usato cron in Linux per eseguire attività, dai un'occhiata al nostro tutorial precedente su come pianificare le attività su Linux. Per i nostri scopi qui, daremo per scontato che tu abbia già creato alcuni lavori cron nella tua installazione WSL e che tu abbia bisogno di aiuto per assicurarti che vengano eseguiti invece di fare da babysitter cron tutto il tempo.
Per questo tutorial, utilizzeremo il sudo service
per controllare e avviare cron, che è il modo consigliato per interrompere e avviare i servizi su build moderne di Ubuntu, la distribuzione più popolare per WSL.
Inoltre, tieni presente che questo tutorial presuppone che tu disponga dei diritti di amministratore sulla tua versione di WSL. Se sei l'unico utente del tuo PC e hai abilitato WSL da solo, allora hai i diritti di amministratore.
Suggerimento: funziona anche nel sottosistema Windows per Linux su Windows 11, non solo su Windows 10.
CORRELATI: Come pianificare le attività su Linux: un'introduzione ai file Crontab
Prepara Linux
La prima cosa che dobbiamo fare è consentire al computer di avviare cron senza una password. Quando avvii un servizio come cron, usi il comando sudo service cron start
. Ma quel comando richiede una password, a cui Windows non avrà accesso all'avvio. Il modo per aggirare questo è disattivare il requisito per una password per questo comando.
Per farlo, apri la finestra del tuo terminale WSL e digita sudo visudo
. Premi Invio sulla tastiera, inserisci la tua password Linux e premi di nuovo il tasto Invio. Se stai usando Ubuntu, questo apre il file "sudoers" usando l'editor di testo da riga di comando Nano adatto ai principianti. Sudoers è un file per gli amministratori di sistema che possono modificare i privilegi e i diritti di accesso per gli utenti.
Aggiungi il comando seguente in fondo al file sudoers, quindi premi Ctrl+o per salvare e Ctrl+x per uscire dal file.
%sudo ALL=NOPASSWD: /usr/sbin/service cron start
Questo comando sudoers dice che qualsiasi utente che dispone di privilegi sufficienti per utilizzare il comando sudo (che dovrebbe includerti) non richiede una password per eseguire il comando sudo service cron start
, che avvia il demone cron.
Dopo aver salvato il file, puoi verificare che il comando stia facendo il suo lavoro digitando sudo service cron start
e dovrebbe avviare cron senza chiedere una password. Se ha funzionato, disattiviamo nuovamente cron in modo da poter verificare che l'attività che stiamo creando nel passaggio successivo funzioni correttamente. Per farlo, esegui sudo service cron stop
.
Imposta Cron nell'Utilità di pianificazione di Windows
Questa è la prima fase del nostro viaggio verso l'automazione di cron. Passiamo alla parte 2 con l'Utilità di pianificazione. Tocca il tasto Windows sulla tastiera, quindi cerca "Utilità di pianificazione". Avvia il collegamento "Utilità di pianificazione".
All'avvio, guarda nella sezione "Azioni" e seleziona "Crea attività di base".
Verrà aperta la procedura guidata attività di base. Innanzitutto, ti chiederà di nominare l'attività e di dargli una descrizione. Puoi inserire quello che vuoi qui. Abbiamo chiamato l'attività "cron" e la descrizione è "Un'attività per avviare cron all'avvio del sistema". Ora, premi "Avanti".
Nella sezione seguente, ci mettiamo al lavoro. Innanzitutto, Windows vuole sapere quando vogliamo eseguire l'attività. Scegli il pulsante di opzione "All'avvio del computer" e fai clic su "Avanti".
Nella sezione successiva, vogliamo "Avvia un programma". Questa opzione è selezionata per impostazione predefinita, quindi fai clic su "Avanti".
Ora dobbiamo specificare il programma che vogliamo eseguire, che è WSL. Immettere quanto segue nella casella di immissione di testo "Programma/Script": C:\Windows\System32\wsl.exe
Dobbiamo anche aggiungere alcuni argomenti, dal momento che tutto ciò che abbiamo fatto finora è avviare WSL, ma all'interno di WSL, dobbiamo dire a Ubuntu di avviare cron. Quindi, nella casella "Aggiungi argomenti", aggiungi: sudo /usr/sbin/service cron start
Premi "Avanti" ancora una volta, seleziona la casella "Apri la finestra di dialogo delle proprietà quando faccio clic su Fine", quindi fai clic su "Fine".
L'attività è stata creata, ma dobbiamo fare un'ultima cosa per assicurarci che tutto funzioni. Si aprirà una nuova finestra, che mostra il riepilogo dell'attività che hai creato, ma è impostata per essere eseguita solo quando sei connesso. Dobbiamo selezionare il pulsante di opzione che dice "Esegui se l'utente è connesso o meno", quindi premere "OK".
Ora, testiamo il nostro compito in due modi. Innanzitutto, nella finestra principale dell'Utilità di pianificazione, scorri verso il basso fino a visualizzare il nome dell'attività. Se hai usato il nome "cron", dovrebbe trovarsi all'inizio dell'elenco. Fai clic con il pulsante destro del mouse sull'attività e seleziona "Esegui".
Quindi, torna al tuo terminale WSL e digita sudo service cron status
, e dovrebbe dire che cron è in esecuzione. In caso contrario, ricontrolla di aver inserito tutto correttamente nei passaggi precedenti.
Se tutto ha funzionato correttamente al primo controllo, è il momento del grande test. Riavvia il PC e, quando torni, apri un terminale WSL ed esegui sudo service cron status
, che dovrebbe segnalare che cron è ora in esecuzione.
Congratulazioni! Hai fatto il tuo primo passo in un mondo più ampio e automatizzato. Con cron in esecuzione in background, i cronjob che configuri in WSL verranno eseguiti automaticamente secondo la pianificazione.