Windows ha diversi modi per automatizzare le attività. Lo strumento più comune è lo scheduler di Windows Task, ma se stai usando il Sottosistema di Windows per Linux (WSL) , c'è anche il daemon cron che esegue attività sullo sfondo per la tua installazione WSL.
Cron non funziona per impostazione predefinita
Su Windows 10 e Windows 11, Cron è incluso in ambienti Linux come Ubuntu. Il problema è che WSL non avvia automaticamente Cron, il che significa che le tue attività automatizzate non vengono eseguite per impostazione predefinita.
Per risolvere questo problema, è possibile avviare manualmente Cron ogni volta che apri la riga di comando, ma avviando manualmente uno strumento che dovrebbe automatizzare le attività è un po 'mancante del punto.
Fortunatamente, c'è un modo semplice per risolvere questo problema e richiede l'utilizzo dello scheduler di attività.
Se non hai mai usato Cron in Linux per eseguire attività, dai un'occhiata al nostro precedente tutorial Come pianificare le attività su Linux . Per i nostri scopi qui, supponiamo che tu abbia già creato alcuni lavori di Cron nella tua installazione WSL e che hai bisogno di aiuto per assicurarti di funzionare invece di babysitting cron per tutto il tempo.
Per questo tutorial, dovremmo usare
Sudo Service.
Per controllare e avviare Cron, il che è il modo consigliato per fermare e avviare servizi su costruzioni moderne di Ubuntu, la distribuzione più popolare per WSL.
Inoltre, notare che questo tutorial presuppone che tu abbia diritti di amministratore sulla versione di WSL. Se sei l'unico utente del tuo PC e hai abilitato WSL da solo, allora hai diritti di amministratore.
Consiglio: Questo funziona nel Sottosistema di Windows per Linux su Windows 11 , Anche non solo su Windows 10.
IMPARENTATO: Come pianificare le attività su Linux: un'introduzione ai file crontab
Preparare Linux.
La prima cosa che dobbiamo fare è consentire al computer di avviare Cron senza una password. Quando inizi un servizio come Cron, usi il comando
Inizio del servizio di sudo
. Ma quel comando richiede una password, che Windows non avrà accesso a quando si avvia. Il modo in cui questo è quello di disattivare il requisito per una password per questo comando.
Per farlo, apri la finestra del terminale WSL e digita
sudo visudo.
. Premi Invio sulla tastiera, immettere la password Linux e premi di nuovo il tasto Invio. Se stai usando Ubuntu, questo apre il file "sudoers" usando il principiante-friendly
Editor di testo della riga di comando nano
.
Sudoers.
È un file per gli amministratori di sistema in grado di modificare i privilegi e i diritti di accesso per gli utenti.
Aggiungi il seguente comando alla parte inferiore del file dei sudoers, quindi premere Ctrl + O per salvare e Ctrl + X per uscire dal file.
% sudo tutto = NOPAssWD: / usr / sbin / servizio cron iniziale
Questo comando sudoers dice che qualsiasi utente che ha abbastanza privilegi per utilizzare il comando sudo (che dovrebbe includere) non richiede una password per eseguire il comando
Inizio del servizio di sudo
, che inizia il daemon cron.
Dopo aver salvato il file, puoi verificare che il comando stia facendo il suo lavoro digitando
Inizio del servizio di sudo
, e dovrebbe avviare Cron senza chiedere una password. Se funzionasse, diventiamo di nuovo a cron in modo da poter testare che l'attività che stiamo creando nel prossimo passo funziona correttamente. Per farlo, per favore correre
Sudo Service Cron Stop
.
Configurare Cron in Scheduler di attività di Windows
Questa è la fase del nostro viaggio verso Cron Automation. Passiamo alla parte 2 con lo scheduler di attività. Tocca il tasto Windows sulla tastiera, quindi cercare "Scheduler attività". Avvia il collegamento "Task Scheduler".
Quando si avvia, guarda sotto la sezione "Azioni" e selezionare "Crea attività di base".
Questo apre la guidata attività di base. In primo luogo, sta andando a chiedere di nominare il compito e dare una descrizione. È possibile inserire quello che vuoi qui. Abbiamo chiamato il compito “cron”, e la descrizione è: “Un compito per iniziare cron all'avvio del sistema.” Ora, clicca su “Avanti”.
Nella sezione seguente, ci si mettono al lavoro. In primo luogo, Windows vuole sapere quando si vuole eseguire l'attività. Scegliere il pulsante “Quando il computer viene avviato” radio e fare clic su “Avanti”.
Nella sezione successiva, che vogliamo “avviare un programma.” Che opzione è selezionata per impostazione predefinita, quindi fare clic su “Avanti”.
Ora, dobbiamo specificare il programma che si vuole eseguire, che è WSL. Inserisci quanto segue nella casella di testo “Programma / Script”:
C: \ Windows \ System32 \ wsl.exe
Abbiamo anche bisogno di aggiungere alcuni argomenti, dal momento che tutto quello che abbiamo fatto finora è avviare WSL, ma WSL dentro, abbiamo bisogno di dire Ubuntu per iniziare cron. Così, nella casella “Aggiungi argomenti”, aggiungere:
sudo / usr / sbin / service inizio cron
Hit “Avanti” ancora una volta, selezionare la casella che dice “Apri la finestra delle proprietà quando faccio clic su Fine” e quindi fare clic su “Fine”.
Viene creato il compito, ma dobbiamo fare un'ultima cosa per assicurarsi che tutto funzioni. Si aprirà una nuova finestra, che mostra la sintesi del compito che si è creato, ma è impostato solo per eseguire quando si è registrato su. Abbiamo bisogno di selezionare il pulsante di opzione che dice “Esegui Sia utente è connesso o no”, quindi premere “OK”.
Ora, cerchiamo di testare il nostro compito in due modi. In primo luogo, nella finestra principale del Task Scheduler, scorrere verso il basso fino a visualizzare il nome dell'attività. Se è stato utilizzato il nome “cron,” dovrebbe essere trovata verso la parte superiore della lista. Fare clic con il compito e selezionare “Esegui”.
Poi, tornare al vostro terminale e digitare WSL
sudo stato del servizio cron
, E si dovrebbe dire che cron è in esecuzione. Se non lo è, controllare due volte che sono stati immessi correttamente nei passaggi precedenti.
Se tutto ha funzionato correttamente nel primo controllo, è il momento per la grande prova. Riavviare il PC, e quando si torna, aprire un terminale ed eseguire WSL
sudo stato del servizio cron
, Che dovrebbe riferire che cron è ora in esecuzione.
Congratulazioni! Hai compiuto il primo passo verso un mondo più grande, automatizzato. Con cron in esecuzione in background, le cronjobs che si configurano in WSL saranno automaticamente eseguito nei tempi previsti.