it-swarm.com.de

Crontab funktioniert nicht mit Bash unter Ubuntu unter Windows

Ich versuche, ein Bash-Skript für die Ausführung mit Bash unter Ubuntu unter Windows 10 zu planen. Jedes Mal, wenn ich den Cron schreibe, erhalte ich die folgenden Fehlermeldungen im Terminal:

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

So sieht der Crontab-Eintrag aus:

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

Was genau ist hier los? 

8
arnpry

Sie müssen sich der Crontab-Gruppe hinzufügen. 

usermod -a -G crontab (username)

Sobald Sie dies getan haben, müssen Sie auch sicherstellen, dass Cron ausgeführt wird. Normalerweise wird dies mit start cron gestartet, jedoch funktioniert upstart bei WSL nicht, was ich sagen kann, aber Sudo cron erledigt die Aufgabe.

Ein Nachteil dabei ist, dass cron nach dem Schließen aller Bash-Fenster nicht mehr läuft, obwohl Ihr Computer ausgeführt wird. Solange ein Bash-Fenster geöffnet ist und Cron ausgeführt wird, funktioniert es jedoch wie erwartet. 

19
jeffpkamp

Auf dem Github-Bug wurde eine Problemumgehung erwähnt, die es jetzt nicht zu finden scheint! 

Sudo crontab -u $USER -e
2
user7788441

versuchen Sie, diesen Powershell-Befehl in eine Windows-Aufgabe zu stellen, und sehen Sie, was passiert

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

bash -c "command" bedeutet, diesen Befehl mit der bash-Shell des Linux-Subsystems auszuführen

der Befehl lautet "rsync --rsync_switches/mnt/windows_drive_letter/source_dir/* rsync: // rsync_daemon_address/rsync_module"

ich habe es mir gerade ausgedacht und ich teste immer noch, also kann ich nicht versprechen, dass es tatsächlich funktionieren wird.

ich führe es jetzt von einem Powershell-Fenster aus ohne Admin-Rechte aus und meldet, dass es "die inkrementelle Dateiliste sendet". Der Task-Manager meldet, dass es einen Rsync-Prozess gibt, der eine Menge Sachen mit Laufwerk d ausführt:

1
steodatus

WSL unterstützt derzeit keine Hintergrundprozesse.

0
arnpry

Anscheinend hat Ihr Crontab die Berechtigung setgid wie folgt gesetzt:
-rwxr-sr-x 1 root crontab 39024 May 5 2016 /usr/bin/crontab

sie sollten Sudo chown <username> /usr/bin/crontab tun 

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

Sie sollten root sein, um all dies zu tun.

0

Es sieht so aus, als müsste Crontab einmal mit tmux gestartet werden und auch dann live sein, wenn Sie Ihre bash-Sitzung beenden (siehe hier ). Ich habe das noch nicht probiert (werde es aber bald tun).

0
Charles Plager