2016-12-22 3 views
6

Я пытаюсь запланировать скрипт bash для работы с Bash на Ubuntu в Windows в Windows 10. Каждый раз, когда я пишу cron, я получаю следующие сообщения об ошибках в терминале :Crontab не работает с Bash на Ubuntu в Windows

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

Вот что запись кронтаб выглядит следующим образом:

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

Что именно здесь происходит?

+0

Имеет ли ваше использование разрешение на запись в '/ var/spool/cron'? Имеются ли у ваших применений разрешения на использование 'cron'? – Jdamian

+0

Привет @Jdamian, как я могу это проверить? В моей системе только одна учетная запись unix установлена ​​в bash. – arnpry

ответ

0

Кажется, что ваш кронтаб действительно имеет setgid набор разрешений, как это,
-rwxr-sr-x 1 root crontab 39024 May 5 2016 /usr/bin/crontab

вы должны сделать sudo chown <username> /usr/bin/crontab

затем sudo chmod g+s /usr/bin/crontab

Вы должны быть корнем, чтобы сделать все это.

+0

Hi @Arduino Sentinel, все еще получая такое же сообщение об ошибке. – arnpry

+0

Каков результат этого 'ls -l/var/spool/cron/crontabs' –

+0

' ls: не удается открыть каталог/var/spool/cron/crontabs: Permission denied' – arnpry

0

В настоящее время WSL не поддерживает фоновые процессы.

+4

Можете ли вы добавить ссылку? – tutuDajuju

1

попытки поставить эту команду PowerShell в задаче окна и посмотреть, что происходит

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

Баша -c «команды» означает запустить эту команду с помощью Линукса подсистемы Баша оболочки

команды «Rsync --rsync_switches/mnt/windows_drive_letter/source_dir/* rsync: // rsync_daemon_address/rsync_module "

Я просто придумал это, и я все еще тестирую, поэтому я не могу обещать, что он действительно сработает.

Я запускаю его из окна powershell без каких-либо прав администратора прямо сейчас, и он сообщает, что он «отправляет инкрементный список файлов». диспетчер задач сообщает, что существует процесс rsync, который делает много вещей с приводом. d:

14

Вам нужно добавить себя в группу crontab.

usermod -a -G crontab (username) 

После того, как вы это сделали, вам также необходимо убедиться, что cron запущен. Обычно это начинается с start cron, однако выскочка не работает на WSL из того, что я могу сказать, но sudo cron выполняет эту работу.

Одно из предостережений в том, что как только вы закроете все окна bash, cron перестанет работать, даже если ваш компьютер работает. Однако, пока у вас есть окно bash open и cron running, он будет работать, как ожидалось.

+3

Это помогло, спасибо! Напоминание для некоторых людей, таких как я - перезапустите сеанс bash, чтобы это вступило в силу. –

+3

Кроме того, если вы хотите, чтобы cron и другие фоновые задания продолжали работать после закрытия всех окон bash, вы можете использовать этот скрипт vb при запуске, и он сохраняет скрытый экземпляр bash. https://gist.github.com/leonelsr/cde77574519eb1fd672bc9690e01257e – jeffpkamp

+0

Для этого я использовал [wabash и его демон] (https://github.com/cerebrate/wabash), но спасибо за головы! –

2

Существует обходное решение, упомянутое в ошибке github для этого, похоже, не может найти его сейчас!

sudo crontab -u $USER -e