Linux - cron 1行の長さ制限について!
Updated:
Linux の cron(crontab) で処理を定時実行しようとした際に、コマンドが長すぎる旨のエラーとなることがあります。
以下、現象・原因・対策についての記録です。
0. 前提条件
- Debian GNU/Linux 8.6 での作業を想定。
- 色々調べても明確な答えを得られなかったため、以下の内容は不正確かもしれない。
(「当方の環境ではこうだった」という記録)
1. 現象
cron の1行に長過ぎるコマンドを記述して実行すると、以下のようなエラーが発生する。
(実際には、 “/etc/cron.d/xxxx” にそれほど長くないコマンドを ;
で区切って複数記述し、行頭から行末までの総文字数は559文字(1,345byte))
File: /var/log/syslog
1
Error: command too long; while reading /etc/cron.d/autotweet
2. 原因
エラーメッセージのとおり、コマンドが長すぎることが原因のようだ。
実際、1行の総byte数を色々変更して実行してみた結果、1,013byteを超えるとこのエラーが発生することが分かった。(byte数で制限されるようなので、全角文字が含まれる場合は文字数が1013文字より少なくなる)
3. 対策
前述の原因が正しいか否か確信が持てないが、要は、1行を長くし過ぎないようにすればよいだろう。
- 1行が 1,013byte を越えないように記述する。
- 複数のコマンドを連結して 1,013byte を超えるような場合、連結せずに複数行に分ける。
4. その他
- cron ファイル内の1行の制限について説明しているものが見つからない。
(Web 上でそれらしい記事(1行1,000byte 等)がわずかに見つかるが、信ぴょう性が低い) - もしかすると、環境によるものなのかもしれない?
以上。
Comments