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
ここで何が起こっているのですか?
自分をcrontabグループに追加する必要があります。
usermod -a -G crontab (username)
これを実行したら、cronが実行されていることを確認する必要もあります。通常、これはstart cron
で開始されますが、upstartはWSLで私が言えることから機能しませんが、Sudo cron
が機能します。
これに対する注意点の1つは、すべてのbashウィンドウを閉じると、コンピューターが実行されていても、cronが実行を停止することです。ただし、bashウィンドウを開いてcronを実行している限り、期待どおりに動作します。
これについてはgithubのバグに記載されている回避策がありますが、現在それを見つけることができないようです!
Sudo crontab -u $USER -e
Cronが実際に実行されていることを確認するには、service cron status
。現在実行されていない場合は、service cron start
そして、あなたは行ってもいいはずです。
この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プロセスがあることを報告します。
WSLは現在、バックグラウンドプロセスをサポートしていません。
あなたの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である必要があります。
これは、tmuxを使用してCrontabを一度起動し、bashセッションを閉じた場合でもそれを有効にする必要があるようです( here を参照)。私はまだこれを試していません(しかしまもなく)。