[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[plamo:34333] crontab内での環境変数設定



川俣です。


私、OpenBSD上で動作する SAG (System Activity Grapher)
https://fuguita.org/?SAG

というプログラムを開発して、公開しているのですが、

このSAGをLinuxで動かす必要が生じ、Plamo Linux上で移植作業を行っていま
す(最終的なターゲットは RHEL 8)。


このSAGは、データ取得スクリプトをcronから起動します。
具体的には、以下のようなcrontabです。

    # ### for System Activity Grapher logging system ###
    #
    # $Id: crontab,v 1.2 2017/01/07 06:10:54 kaw Exp $
    #
    #
    SHELL=/bin/sh
    PATH=/bin:/sbin:/usr/bin:/usr/sbin
    #
    # Important - base directory of SAG
    # Reconfigure if needed.
    #
    SAGHOME=/home/sag
    #
    #minute hour    mday    month   wday    command
    #
    *       *       *       *       *       exec $SAGHOME/bin/tick
    */5     *       *       *       *       chmod u+x $SAGHOME/bin/t0005
    50      *       *       *       *       chmod u+x $SAGHOME/bin/t0100
    10      4       *       *       *       chmod u+x $SAGHOME/bin/t2400

ところが、このcrontabをcrondに食わせると、以下のようなエラーが発生しま
す。

    Jul  3 15:16:01 plamolinux crond[925]: failed parsing crontab for user sag: SHELL=/bin/sh
    Jul  3 15:16:01 plamolinux crond[925]: failed parsing crontab for user sag: PATH=/bin:/sbin:/usr/bin:/usr/sbin
    Jul  3 15:16:01 plamolinux crond[925]: failed parsing crontab for user sag: SAGHOME=/home/sag/sag

crondにより実行されたプロセスの環境を調べてみると、環境変数 SHELL、PATH、
SAGHOME は設定されていません。

マニュアルページcrontab(5)には、

    crontab の動作行は、 環境変数の設定か cronコマンドのいずれかである。 環
    境変数の設定は以下の形式をとる:

    name = value

    ただし、等号  (=) 両側のスペースはなくても良い。

とあるので、マニュアルページ通りなら、これらの環境変数の設定は行われる
はずなのですが。


しかたがないので、かっこわるいですが、crontabは以下のようにしています。

    # ### for System Activity Grapher logging system ###
    #
    # $Id: crontab,v 1.2 2017/01/07 06:10:54 kaw Exp $
    #
    #
    #SHELL=/bin/sh
    #PATH=/bin:/sbin:/usr/bin:/usr/sbin
    #
    # Important - base directory of SAG
    # Reconfigure if needed.
    #
    #SAGHOME=/home/sag/sag
    #
    #minute hour    mday    month   wday    command
    #
    *       *       *       *       *       SAGHOME=/home/sag/sag /home/sag/sag/bin/tick
    */5     *       *       *       *       chmod u+x /home/sag/sag/bin/t0005
    50      *       *       *       *       chmod u+x /home/sag/sag/bin/t0100
    10      4       *       *       *       chmod u+x /home/sag/sag/bin/t2400


これって、マニュアルページの記述とcrondの実際の挙動が違っているってこ
とでしょうか。

それとも何かcrontab設定上の制限や条件などがあるのでしょうか。


ご教示いただければ幸いです。


なお、Plamo Linuxのリリースは、

    $ cat /etc/plamo-release
    Plamo Linux release 8.1

です。

----
川俣 吉広
mailto:kaw@xxxxxxxxxxxx
https://fuguita.org/


Follow-Ups
[plamo:34334] Re: crontab内での環境変数設定, KOJIMA Mitsuhiro
[plamo:34362] Re: crontab内での環境変数設定, Yoshihiro Kawamata

[検索ページ] [メール一覧]
Plamo ML 公開システム