質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.30%
cron

cronは、Unix系OS上でデーモンプロセスとして動作する、スクリプトの自動実行が可能なジョブスケジューラです。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Q&A

解決済

1回答

578閲覧

cronで実行するスクリプトで、変数値をsyslogに出力したい

taok

総合スコア1

cron

cronは、Unix系OS上でデーモンプロセスとして動作する、スクリプトの自動実行が可能なジョブスケジューラです。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

0グッド

0クリップ

投稿2023/09/27 03:07

環境:RHEL7
cronに登録したスクリプトで、loggerコマンドを使いsyslog(/var/log/message)へ変数の値を出力させたいです。
同じスクリプトをcronからではなく、シェルで実行すると問題なく出力されるのですが、
cronから実行すると、変数値が出力されません。

スクリプト内で、あるプロセスのPIDを取得して、そのPIDを出力する処理を作っています。
スクリプトコード(該当部分を抜粋)

ps=`pidof Process_name` logger -t PROC_CHK Process_name_OK PS=${ps}

シェル上で実行した場合は、syslogへ変数値が正しく出力されます。
Sep 27 10:00:00 ホスト名 PROC_CHK: Process_name_OK PS=255673

同じスクリプトをcronで実行すると、変数値(${ps})が出力されません。
Sep 27 10:00:00 ホスト名 PROC_CHK: Process_name_OK PS=

cronに登録したスクリプトには、何か施さないといけないのでしょうか?
ご教示いただけますようお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

cronからファイルで指定してshスクリプトを実行すればよいのでは?

投稿2023/09/27 03:11

yambejp

総合スコア117778

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

taok

2023/09/27 03:15

yambejpさん、ご回答ありがとうございます。 すみません、私の説明が悪かったですが、上記のコードを含むスクリプトをshファイルで作成しております。 そのshファイルをcronに指定しております。
yambejp

2023/09/27 03:26 編集

先頭行を「#!/bin/sh」にして使用シェルを明示しては? また実行コマンドはフルパスで指定してあげてください
taok

2023/09/27 04:33

ご教示ありがとうございます。 先頭行には、#!/bin/sh を明示しております。 スクリプト内で、pidof を使用しているのですが、 こちらがフルパスになっていなかったのが原因でした。 /sbin/pidof とフルパス指定にすることで解決できました。 他のコマンドと同じように/binの配下にあると勝手に思い込んでおりました。 ありがとうございました。
melian

2023/09/27 04:38 編集

※ 削除
otn

2023/09/27 12:34 編集

> こちらがフルパスになっていなかったのが原因でした。 であれば、command not found のエラーメッセージが出てるはずなので、エラー出力を確認すると良かったですね。 メール環境が設定してあれば、crontab行で出る標準出力と標準エラー出力は、crontab所有ユーザーにメールで送られてきます。 メール環境を設定するのが面倒な時は、 * * * * * $HOME/bin/foo >> $HOME/cronlog 2>&1 などと、ファイルに書きます。syslogがいいなら、loggerコマンドにパイプしても良いですし。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.30%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問