2016-12-22 61 views
6

我想安排一個bash腳本,在Windows 10的Windows上的Ubuntu上運行Bash。每當我寫入cron時,我會在終端中收到以下錯誤消息:Crontab不能在Windows上的Ubuntu上使用Bash

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

這裏是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,我該如何檢查?在我的系統中只有一個在bash中設置的unix帳戶。 – arnpry

回答

0

看來,你的crontab確實有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

嗨@Arduino哨兵,仍然收到相同的錯誤信息。 – arnpry

+0

是什麼 –

+0

'LS這個'ls -l命令在/ var /線軸/ cron的/ crontabs'的輸出:無法打開目錄/ var /線軸/ cron的/ crontabs中:權限denied' – arnpry

0

WSL當前不支持後臺進程。

+4

你可以好意添加一個引用嗎? – tutuDajuju

1

嘗試在Windows任務把這個PowerShell命令,看看會發生什麼

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

的bash -c「命令」是指使用運行在Linux子系統的bash命令外殼

的命令是「rsync的--rsync_switches/mnt/windows_drive_letter/source_dir/* rsync:// rsync_daemon_address/rsync_module「

我剛想出來,我仍在測試,所以我不能保證它會實際工作。

我從沒有管理員權限的PowerShell窗口現在運行它,它報告它是「發送增量文件列表」。任務管理器報告有是做了很多的東西,用d盤的rsync的過程:

14

你需要自己添加到crontab組。

usermod -a -G crontab (username) 

一旦你完成了這個,你還需要確保cron正在運行。通常這是從start cron開始,然而,從WSDL中我可以看出,新貴並不適用,但sudo cron完成這項工作。

有一點需要注意的是,一旦你關閉了所有的bash窗口,即使你的電腦運行,cron也會停止運行。但是,只要你打開bash窗口並運行cron,它就會按預期運行。

+3

這有幫助,謝謝! 對於像我這樣的人提醒一下 - 重新啓動你的bash會話以使其生效。 –

+3

另外,如果您希望cron和其他後臺作業在關閉所有bash窗口後繼續運行,則可以在啓動時使用此vb腳本,並且它會保留bash的一個隱藏實例運行。 https://gist.github.com/leonelsr/cde77574519eb1fd672bc9690e01257e – jeffpkamp

+0

我一直在使用[wabash及其守護進程](https://github.com/cerebrate/wabash),但感謝您的高舉! –

2

在這個github bug中提到了一個解決方法,現在似乎無法找到它!

sudo crontab -u $USER -e 
相關問題