web-dev-qa-db-fra.com

Crontab ne fonctionne pas avec Bash sous Ubuntu sous Windows

J'essaie de planifier l'exécution d'un script bash avec Bash sous Ubuntu sous Windows sous Windows 10. Chaque fois que j'écris le cron, le message d'erreur suivant s'affiche dans le terminal:

crontab: installing new crontab
/var/spool/cron/: mkstemp: Permission denied
crontab: edits left in /tmp/crontab.4q0z3i/crontab

Voici à quoi ressemble l'entrée crontab:

# m h  dom mon dow   command
27 10 * * * /home/admin/test.sh > /home/admin/logs/test.log 2>&1   

Qu'est-ce qui se passe exactement ici? 

8
arnpry

Vous devez vous ajouter au groupe crontab. 

usermod -a -G crontab (username)

Une fois que vous avez fait cela, vous devez également vous assurer que cron est en cours d'exécution. Généralement, cela commence par start cron; toutefois, upstart ne fonctionne pas sur WSL d'après ce que je peux dire, mais Sudo cron fait le travail.

Un inconvénient à cela est qu'une fois que vous fermez toutes les fenêtres bash, cron cessera de fonctionner même si votre ordinateur est en cours d'exécution. Cependant, tant que vous avez une fenêtre bash ouverte et que cron est en cours d'exécution, les performances sont satisfaisantes. 

19
jeffpkamp

Il y a une solution de contournement mentionnée sur le bogue github pour celui-ci, ne semble pas pouvoir le trouver maintenant! 

Sudo crontab -u $USER -e
2
user7788441

essayez de mettre cette commande powershell dans une tâche Windows et de voir ce qui se passe

bash -c "rsync -acAXvc --delete --numeric-ids /mnt/d/no_movies/* rsync://10.66.6.66/danielle_no_movies"

bash -c "commande" signifie exécuter cette commande en utilisant le sous-système linux bash Shell

la commande est "rsync --rsync_switches/mnt/windows_drive_letter/rép_source/* rsync: // rsync_daemon_address/rsync_module"

je viens de l'avoir et je suis toujours en train de tester, donc je ne peux pas promettre que cela fonctionnera réellement.

je l'exécute depuis une fenêtre Powershell sans privilèges d'administrateur pour le moment et il indique qu'il "envoie la liste de fichiers incrémentielle". le gestionnaire de tâches indique qu'il existe un processus rsync qui exécute beaucoup de choses avec le lecteur d:

1
steodatus

WSL ne prend actuellement pas en charge les processus en arrière-plan.

0
arnpry

On dirait que votre crontab a les permissions setgid comme ceci,
-rwxr-sr-x 1 root crontab 39024 May 5 2016 /usr/bin/crontab

vous devriez faire Sudo chown <username> /usr/bin/crontab 

alors Sudo chmod g+s /usr/bin/crontab

Vous devriez être root pour faire tout cela.

0
Arduino_Sentinel

Il semble que cela devrait démarrer Crontab une fois avec tmux et le laisser vivre même si vous fermez votre session bash (voir ici ). Je n'ai pas encore essayé (mais je vais bientôt).

0
Charles Plager