2016-12-22 14 views
6

Ich versuche, ein Bash-Skript mit Bash auf Ubuntu unter Windows in Windows 10 zu planen. Jedes Mal, wenn ich das Cron schreibe, erhalte ich die folgenden Fehlermeldungen im Terminal :Crontab funktioniert nicht mit Bash unter Ubuntu unter Windows

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

hier ist, was die crontab-Eintrag wie folgt aussieht:

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

Was ist hier los?

+0

Hat Ihre Verwendung Berechtigungen zum Schreiben in '/ var/spool/cron'? Verfügen Ihre Anwendungen über die Berechtigung, 'cron' zu verwenden? – Jdamian

+0

Hallo @Jdamian, wie überprüfe ich das? Es gibt nur einen Unix-Account, der in bash auf meinem System eingerichtet ist. – arnpry

Antwort

0

Es scheint, dass Ihre crontab die setgid Erlaubnis wie folgt festgelegt hat,
-rwxr-sr-x 1 root crontab 39024 May 5 2016 /usr/bin/crontab

Sie sudo chown <username> /usr/bin/crontab

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

tun sollten, sollten Sie root sein, all dies zu tun.

+0

Hallo @Arduino Sentinel, immer noch die gleiche Fehlermeldung. – arnpry

+0

was ist die Ausgabe von diesem 'ls -l/var/spool/cron/crontabs' –

+0

' ls: kann Verzeichnis/var/spool/cron/crontabs nicht öffnen: Berechtigung verweigert ' – arnpry

0

WSL unterstützt derzeit keine Hintergrundprozesse.

+4

Können Sie bitte eine Referenz hinzufügen? – tutuDajuju

1

versucht diesen Powershell-Befehl in einem Fenster Aufgabe zu stellen und sehen, was -c „Befehl“ bedeutet

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

bash geschieht diesen Befehl mit dem Linux-Subsystem bash ausführen Shell

der Befehl „rsync --rsync_switches/mnt/windows_drive_letter/source_dir/* rsync: // rsync_daemon_address/rsync_module“

kam ich nur mit ihm und ich bin noch testen, so kann ich nicht versprechen, dass es tatsächlich funktioniert.

Ich führe es aus einem Powershell-Fenster mit keinen Administratorrechten jetzt und es meldet, dass es "die inkrementelle Dateiliste sendet". der Task-Manager meldet, dass es einen rsync-Prozess gibt, der eine Menge Sachen mit Laufwerk d erledigt:

14

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

Sobald Sie dies getan haben, müssen Sie auch sicherstellen, dass Cron ausgeführt wird. Normalerweise wird dies mit start cron gestartet, aber Upstart funktioniert nicht auf WSL von dem, was ich sagen kann, aber sudo cron erledigt den Job.

Ein Vorbehalt dazu ist, dass, sobald Sie alle bash Windows geschlossen haben, Cron nicht mehr ausgeführt wird, obwohl Ihr Computer ausgeführt wird. Solange jedoch ein bash-Fenster geöffnet ist und cron läuft, wird es wie erwartet funktionieren.

+3

Das half, Danke! Eine Erinnerung für einige Leute wie mich - Starten Sie Ihre Bash-Sitzung neu, damit dies wirksam wird. –

+3

Wenn Sie möchten, dass cron und andere Hintergrundjobs weiter ausgeführt werden, nachdem Sie alle bash-Fenster geschlossen haben, können Sie dieses vb-Skript beim Start verwenden, und es wird eine hiden-Instanz von bash ausgeführt. https://gist.github.com/leonelsr/cde77574519eb1fd672bc9690e01257e – jeffpkamp

+0

Ich habe [wabash und sein Daemon] (https://github.com/cerebrate/wabash) dafür verwendet, aber danke für die heads-up! –

2

Es gibt eine Problemumgehung, die auf dem Github-Bug für diese eine erwähnt wird, scheint es jetzt nicht zu finden!

sudo crontab -u $USER -e 
Verwandte Themen