web-dev-qa-db-ja.com

Windows上のUbuntuでCrontabがBashで機能しない

Windows 10のWindows上のUbuntuでBashを実行するようにbashスクリプトをスケジュールしようとしています。cronを書き込むたびに、ターミナルに次のエラーメッセージが表示されます。

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   

ここで何が起こっているのですか?

10
arnpry

自分をcrontabグループに追加する必要があります。

usermod -a -G crontab (username)

これを実行したら、cronが実行されていることを確認する必要もあります。通常、これはstart cronで開始されますが、upstartはWSLで私が言えることから機能しませんが、Sudo cronが機能します。

これに対する注意点の1つは、すべてのbashウィンドウを閉じると、コンピューターが実行されていても、cronが実行を停止することです。ただし、bashウィンドウを開いてcronを実行している限り、期待どおりに動作します。

25
jeffpkamp

これについてはgithubのバグに記載されている回避策がありますが、現在それを見つけることができないようです!

Sudo crontab -u $USER -e
3
user7788441

Cronが実際に実行されていることを確認するには、service cron status。現在実行されていない場合は、service cron startそして、あなたは行ってもいいはずです。

1
Josh Correia

このpowershellコマンドをWindowsタスクに入れて、何が起こるかを確認してください

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プロセスがあることを報告します。

1
steodatus

WSLは現在、バックグラウンドプロセスをサポートしていません。

0
arnpry

あなたの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

これをすべて実行するには、rootである必要があります。

0

これは、tmuxを使用してCrontabを一度起動し、bashセッションを閉じた場合でもそれを有効にする必要があるようです( here を参照)。私はまだこれを試していません(しかしまもなく)。

0
Charles Plager