回答編集履歴

1 アクセス権限の説明を補足

KSwordOfHaste

KSwordOfHaste score 18170

2017/01/29 17:57  投稿

crontabを初めて起動するとcrontabのテンプレートにコメントが書いてあり「やりたい仕事を1行に1つ記述しなさい」と書いてあります。ですから、
```
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=""
HOME=/
...
```
このような記述をしてしまうことはcrontabのフォーマットに違反していると思います。お試しでやるなら例えば次のような行のみにするとよいです(元々あるコメントは消さなくていいですよ!)
`* * * * * touch $HOME/crontest`
またcrontab -eで編集する場合、それを行ったユーザー用のcronタスクを定義することになります。もしこれをユーザーu1で設定したとするとユーザーu1の実行権限を持つプロセスで仕事が行われるので
`* * * * * touch /file`
とするならユーザーu1は`/`に対する書き込み権限や`/file`に対する書き込み権限が必要です。もし権限がない状態でこういうcrontabを定義してしまうとスケジュールされたタスクが実行されたときエラーとなり、それがu1のメールボックスへ以下のように投函される結果になります。
とするならユーザーu1は`/`に対する書き込み権限(/fileがないときにファイルを作るために)や`/file`に対する書き込み権限が必要です。もし権限がない状態でこういうcrontabを定義してしまうとスケジュールされたタスクが実行されたときエラーとなり、それがu1のメールボックスへ以下のように投函される結果になります。
```
$ mail
"/var/mail/u1": 1 message 1 new
From: root@xxx.xxx (Cron Daemon)
To: u1@xxx.xxx
Subject: Cron <u1@xxxx> touch /file
...
Date: Sun, 29 Jan 2017 17:30:01 +0900 (JST)
touch: '/file' に touch できません: 許可がありません
```

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る