monit:3: 構文エラー '='

monit:3: 構文エラー '='

充電を中断するためにプログラムが完了したら、仮想マシンをシャットダウンするように設定しようとしています。

そのために、次のような.monitrcを作成しました。

SET DAEMON 30
CHECK PROCESS py MATCHING /usr/bin/python3
    start program = "sudo /bin/systemctl poweroff -i"

monitを実行すると、次のように応答します。

/home/baruch/.monitrc:3: 構文エラー '='

monit-Vレスポンス:

モニター-V

Monit バージョン 5.20.0 です。

SSL、ipv6、圧縮、pam、および大容量ファイルで構築

オペレーティングシステム:Linuxインスタンス-1 4.9.0-11-amd64#1 SMP Debian 4.9.189-3+deb9u1(2019-09-20)x86_64

私の家のコンピュータ(Ubuntu 16.04、Monitバージョン5.16)で同様の.monitrcを試してみましたが、うまくいきました。

SET DAEMON 30
CHECK PROCESS py MATCHING /home/baruch/datasets/Severstal/.env/bin/python3
    start program = "/bin/systemctl poweroff -i"

助けてください。

編集する: 私の仮想マシンの設定方法はsystemctlsudoなしでは動作しないため、sudoが必要ですsudo(一部の資格情報が必要です)。しかし、sudoはパスワードを必要としないので、.monitrcで使用できます。

明らかに、monitは起動コマンドのsudoにそのパスがないと文句を言いました。

.monitrcを次のように変更しました。

SET DAEMON 30
CHECK PROCESS py MATCHING /usr/bin/python3
start program = "/usr/bin/sudo /bin/systemctl poweroff -i"

これにより、monitはエラーメッセージを表示しませんが、機能しません。

log monit -l を使って実行してみたところ、ログには次の内容だけが含まれています。

[10月26日20:27:31 UTC]情報:Monit 5.20.0デーモン開始

[10月26日20:27:31 UTC]情報: "instance-1" Monit 5.20.0が起動しました。

[10月26日20:31:01 UTC]情報:pid [1161]のMonitデーモンが停止しました。

[10月26日20:31:01 UTC]情報: "instance-1" Monit 5.20.0が停止しました。

[10月26日20:31:20 UTC]情報:Monit 5.20.0デーモン開始

[10月26日20:31:20 UTC]情報: "instance-1" Monit 5.20.0が起動しました。

[10月26日20:35:32 UTC]情報:pid [1234]のMonitデーモンが停止しました。

[10月26日20:35:32 UTC]情報: "instance-1" Monit 5.20.0が停止しました。

(ここで止まるとは、私が注文したことを意味しますmonit quit。)

どんな助けでも大変感謝します。

答え1

次のように編集しますmonitrc(不要sudo)。

start program = "/bin/systemctl poweroff -i"

man monit:

 By default the program is executed as the user under which Monit is
 running. If Monit is running as root, you may optionally specify the
 UID and GID the executed program should switch to.

Syntax:

 <START | STOP | RESTART> [PROGRAM] = "program"
         [[AS] UID <number | string>]
         [[AS] GID <number | string>]
         [[WITH] TIMEOUT <number> SECOND(S)]

はい(マンページから):

start program = "/usr/local/mmonit/bin/mmonit" as uid "mmonit" and gid "mmonit"

関連情報