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

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

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

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

Linux

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

メール

メールは、コンピュータネットワークを利用し、 情報等を交換する手段のことです。

Q&A

解決済

3回答

2992閲覧

crontabでメール通知コマンド設定してもメールが届かない

退会済みユーザー

退会済みユーザー

総合スコア0

CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

Linux

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

メール

メールは、コンピュータネットワークを利用し、 情報等を交換する手段のことです。

0グッド

1クリップ

投稿2020/03/05 06:11

前提・実現したいこと

再起動時にdmesgを10個見れるよう、メール通知をcrontab設定したいです。

発生している問題・エラーメッセージ

@reboot(dmesg ; tail -10 /var/log/messages) | mailx -s "'xxxxx.xxx.xxx.xxx' Rebooted" xxxxxxxxxx@xxx.xx.xx

上記のコマンドをcrontabに設定する前に、テストとして、再起動時ではなく直近の時間を設定してみましたが、メールがうまく届きません。

該当のソースコード

55 12 * * *(dmesg ; tail -10 /var/log/messages) | mailx -s "'xxxxx.xxx.xxx.xxx' Rebooted" xxxxxxxxxx@xxx.xx.xx

試したこと

パイプの後の「mailx -s ~ メアド」を実行してみると、下記が表示されます。

Send options without primary recipient specified. Usage: mailx -eiIUdEFntBDNHRV~ -T FILE -u USER -h hops -r address -s SUBJECT -a FILE -q FILE -f FILE -A ACCOUNT -b USERS -c USERS -S OPTION users

「mailx」を「mail」にしても同じものが表示されました。

補足情報(FW/ツールのバージョンなど)

CentOS release 6.10 (Final)

よろしくお願いいたします。

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

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

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

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

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

otn

2020/03/05 14:12

> パイプの後の「mailx -s ~ メアド」を実行してみると、 実際のコマンドラインをコピペしてください。
guest

回答3

0

55 12 * * *(dmesg ; tail -10 /var/log/messages) | mailx -s "'xxxxx.xxx.xxx.xxx' Re

*(の間に空白が無いです。crontabコマンドがエラーを出すはずですが?

Send options without primary recipient specified.

は、宛先の指定が無いという意味です。宛先の指定が間違っています。

そもそも、

dmesgを10個見れるよう、

ということですが、
(dmesg; tail -10 /var/log/messages)は、dmesg全体を1回と、messagesの末尾10行です。

投稿2020/03/05 15:55

otn

総合スコア84555

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

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

退会済みユーザー

退会済みユーザー

2020/03/05 23:52

ご回答ありがとうございます! タイプ抜けが多くて大変失礼いたしました! 無事メール通知受信でき、dmesgとmessageが届きました。 ありがとうございました!
guest

0

再現テストしてみました。
宛先のメールアドレスを指定しないと

message

1Send options without primary recipient specified.

のメッセージが出力されます。
それから推定するとメールアドレスの形式が間違っています。システムはメールアドレスと認識していません。
また、何も動かないのはcron配下だと$PATHが空でdmesgや、tail、mailxコマンドが見つからないためと思います。
(上記のメッセージが出たのはcron配下ではなく、terminalか何かのコマンドラインで実行したときですよね?)
cron配下は環境変数の値が保証されないことがあるので、コマンドはフルパスで指定してください。

投稿2020/03/05 14:07

編集2020/03/05 14:10
sage

総合スコア1216

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

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

退会済みユーザー

退会済みユーザー

2020/03/05 23:50

ご回答ありがとうございます! cron配下でなく、コマンドラインで実行したときにエラーメッセージが出ました。 コマンドはフルパスでできているのですね! 今まで別のものだと思っていました。ひもといていく要素等も勉強になりました。 ありがとうございました!
guest

0

ベストアンサー

とりあえず、

cat /etc/centos-release
CentOS release 6.10 (Final)

な環境で問題なく動作するようです。

また、

パイプの後の「mailx -s ~ メアド」を実行してみると、下記が表示されます。
Send options without primary recipient specified.

Usage: mailx -eiIUdEFntBDNHRV~ -T FILE -u USER -h hops -r address -s SUBJECT -a FILE -q FILE -f FILE -A ACCOUNT -b USERS -c USERS -S OPTION users

上記の環境では、そのようなメッセージは出ないですね。


まずは、cron を使わずに

(dmesg ; tail -10 /var/log/messages) | mailx -s testmail USER@example.com

のようにコマンドラインで実行するとどうなりますか?

次は、各コマンドをフルパスで指定して下記のように実行するとどうなりますか?

(/bin/dmesg ; /usr/bin/tail -10 /var/log/messages) | /bin/mailx -s testmail USER@example.com

フルパスで動作する場合は、alias が定義されているか 同名の別のコマンドがインストールされていないでしょうか?

投稿2020/03/05 09:08

CHERRY

総合スコア25171

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

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

退会済みユーザー

退会済みユーザー

2020/03/05 23:48

早速のご回答ありがとうございます! cronを使わずに、コマンドラインでフルパスのものとフルパスでないものを実行したところ、どちらも即メールが受信されました! ``` mailx -s ``` の後につけていた ” を外したら、時間も指定してみると、指定された時間に無事メール通知されるようになりました! 自分ひとりでは永遠に気づくことができなかったと思います。 コマンドにはフルパスがあるのですね!!ご回答と補足のご説明もありがとうございます!大変今回勉強になりました!
CHERRY

2020/03/06 00:02 編集

質問に記載されたコマンドは、実際に入力されたものをコピーされたもの(から一部置き換えたもの)でしょうか? 質問のコマンドでメールアドレスを書き換えたものは実行できたので、コマンドで入力されものがダブルクォーテーションが全角になっているとか お使いの環境が不明ですが、macOS だとスマートクォートが有効になっていてターミナルで入力したクォートが置き換わっていたとかがあるかもしれません。 https://qiita.com/Domon/items/34774e60f7bc8f367ca3 参照
退会済みユーザー

退会済みユーザー

2020/03/06 00:41

補足情報ありがとうございます! 実際に入力(メアド等は置き換え)したものをコピペして質問に記載しました。 windows10を使っています。 たしかに、今一度入力コマンド実行してみると、メール無事届きました。 全角で入力してしまっていた可能性あります! コピペしたつもりが、otn様のご指摘にあるように @rebootと *****の後に半角スペースがなく ( がきてしまっていたりもするので、 メアド等を置き換えた際に ' と  ` を間違って入力してしまったりしたので、消したり書いたりする際に、全角で書いたりしてしまった可能性大きいです。 細かくフォローくださり、大変ありがとうございます! また他にもLinuxに関して質問投稿するかと思いますが、よろしくお願いいたします!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問