mk-mode BLOG

このブログは自作の自宅サーバに構築した Debian GNU/Linux で運用しています。
PC・サーバ構築等の話題を中心に公開しております。(クローンサイト: GitHub Pages

ブログ開設日2009-01-05
サーバ連続稼働時間
Reading...
Page View 合計
Reading...
今日
Reading...
昨日
Reading...

Linux - cron 1行の長さ制限について!

[ サーバ構築 ] [ Debian, Linux ]

こんばんは。

Linux の cron(crontab) で処理を定時実行しようとした際に、コマンドが長すぎる旨のエラーとなることがあります。

以下、現象・原因・対策についての記録です。

0. 前提条件

  • Debian GNU/Linux 8.6 での作業を想定。
  • 色々調べても明確な答えを得られなかったため、以下の内容は不正確かもしれない。
    (「当方の環境ではこうだった」という記録)

1. 現象

cron の1行に長過ぎるコマンドを記述して実行すると、以下のようなエラーが発生する。
(実際には、 “/etc/cron.d/xxxx” にそれほど長くないコマンドを ; で区切って複数記述し、行頭から行末までの総文字数は559文字(1,345byte))

/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 等)がわずかに見つかるが、信ぴょう性が低い)
  • もしかすると、環境によるものなのかもしれない?

以上。

サーバ構築 Debian, Linux



« Ruby - OAuth のみでツイート! Ruby, Rails - 郵便番号検索ページについて! »

Comments