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行が 1,013byte を越えないように記述する。
  2. 複数のコマンドを連結して 1,013byte を超えるような場合、連結せずに複数行に分ける。

4. その他

  • cron ファイル内の1行の制限について説明しているものが見つからない。
    (Web 上でそれらしい記事(1行1,000byte 等)がわずかに見つかるが、信ぴょう性が低い)
  • もしかすると、環境によるものなのかもしれない?

以上。





 

Sponsored Link

 

Comments