Chi lavora con Windows e ha bisogno di automatizzare operazioni ricorrenti finisce quasi sempre per scontrarsi con l’Utilità di pianificazione di Windows (il famoso Task Scheduler). Funziona, certo, ma non è esattamente un’esperienza piacevole. Esiste però un’alternativa che passa da una strada inaspettata. Usare cron dentro WSL, il sottosistema Windows per Linux, per gestire script e attività automatiche direttamente sul filesystem di Windows. Ed è un approccio che, per chi ci ha preso la mano, risulta più chiaro, più rapido e decisamente meno frustrante.
WSL (Windows Subsystem for Linux) è noto soprattutto perché permette di eseguire applicazioni e comandi Linux senza bisogno di dual boot o macchine virtuali. Ma la vera chicca, quella di cui si parla poco, è la possibilità di sfruttare cron per pianificare attività che agiscono sul sistema Windows. La configurazione è lineare, tutto si gestisce da un unico file di testo e non serve passare ogni volta attraverso un’interfaccia grafica a passaggi multipli. In più, si possono scrivere i propri task in Bash, il che per chi viene dal mondo Linux è praticamente come sentirsi a casa.
Un piccolo passaggio iniziale: far partire cron con Windows
C’è un dettaglio da sistemare subito. WSL (e quindi cron) non si avvia automaticamente con Windows. Per far funzionare le attività pianificate serve che WSL venga lanciato almeno una volta. La soluzione è usare proprio l’Utilità di pianificazione, ma solo per questo singolo scopo: creare un task che avvii WSL al boot del sistema. Basta creare una nuova attività, darle un nome qualsiasi (tipo “Start WSL”), spuntare l’opzione per eseguirla anche senza che l’utente sia loggato, impostare come trigger l’avvio del sistema e come azione l’esecuzione di wsl.exe con gli argomenti per la propria distribuzione (ad esempio Ubuntu 24.04) e il comando sleep infinity. Per scoprire il nome esatto della propria distribuzione basta digitare wsl -l in un terminale PowerShell. Fatto questo, WSL resterà attivo in background senza nessuna finestra visibile e i job di cron partiranno regolarmente a ogni accensione.
Cosa si può fare concretamente con cron su WSL
Usare cron dentro WSL è identico a farlo su una macchina Linux nativa. Si apre il file di configurazione con crontab -e e si aggiungono le righe necessarie. Ad esempio, è possibile eseguire uno script di backup con rsync ogni notte alle 2, oppure svuotare la cartella cache di Windows ogni domenica a mezzanotte. Il filesystem di Windows è accessibile di default sotto /mnt/c, e WSL riconosce anche eventuali unità secondarie o dispositivi esterni collegati.
La cosa interessante è che da cron si possono chiamare anche eseguibili di Windows. Questo apre scenari curiosi. Ad esempio, è possibile usare WinGet per controllare ogni lunedì mattina se ci sono aggiornamenti disponibili per tutti i programmi installati e installarli silenziosamente. Un’operazione del genere, con argomenti lunghi e articolati, risulta molto più leggibile in una riga di cron che dentro una procedura guidata grafica.
C’è da dire che tutto quello che si fa con cron dentro WSL è tecnicamente realizzabile anche con PowerShell e l’Utilità di pianificazione. PowerShell ha una pipeline oggetti più potente di Bash per certi compiti, soprattutto quando si tratta di manipolare dati strutturati. Se qualcuno ha già script PowerShell funzionanti, non ha senso smontarli per portarli su WSL. Il vantaggio di cron emerge soprattutto per chi ha familiarità con Bash e vuole ritrovare lo stesso approccio anche su Windows, con tutto concentrato in un unico file di testo leggibile a colpo d’occhio. L’Utilità di pianificazione diventa scomoda quando un’attività ha argomenti complessi o dipende da altri script: cron gestisce entrambe le situazioni con naturalezza.
WSL viene spesso associato solo allo sviluppo software, ai container Docker e agli ambienti di build Linux. L’aspetto legato all’automazione e alla pianificazione delle attività resta quasi sempre nell’ombra, ed è un peccato. È lo strumento perfetto per chi vuole che il proprio PC Windows faccia tutto da solo durante la notte.
