あんたいとる

無駄の中に宝がある!

【Fortigate】プロセスを終了/再起動させる方法

UNIX系OSでプロセスを終了させたり再起動させるコマンドとして killコマンドがありますが、 Fortigate版killコマンドが"diagnose sys kill" コマンドです。

diagnose sys kill コマンドの構文

以下のコマンドで、特定のプロセスを終了させることができます。

diagnose sys kill <Signal> <PID>


指定できるオプションは以下の通りです。

オプション 内容
Signal プロセスに送るシグナルを指定します。
プロセスを終了させるときには通常15(*1)を指定します。
この場合にはcrashlogを出力するので、トラブルシューティングの際に有効。
PID get system performance topコマンドで確認した PIDを指定してください

*1)メーカの Knowledge Base によって、11 になっているものと 15になっているものがありますが、UNIX系の killコマンドに準じる動作と考えると SIGTERM(15)が正しいと思われます。

プロセスを終了させるときに signalに指定できる数字としては以下のものがあります。

シグナル 処理内容
SIGTERM(15) "丁寧な "終了信号で、接続、ファイル、ハンドラ、バッファなどを閉じるようにプロセスに要求します。
プロセスを終了させるための推奨された方法。
SIGKILL (9) プロセスの強制終了です。このシグナルはシステムによって無視されることはありません(システムが物理的なI/Oリソースを解放するためにプロセスを待っているような特定の条件を除いて)。
この種のシグナルは、セッションやファイルを開いたままにしてしまう可能性があります。


プロセスの終了コマンド

通常はまずSIGTERM(15)を試して、終了できない場合は SIGKILL(9)を指定するのがよいと思います。 例えば、PIDが 1952であるプロセスを終了させる時には、以下のように実行します。

diagnose sys kill 15 1952

※FortiOS上で常に動作する必要があるデーモンプロセスは、終了されても自動的に再起動されます。

プロセスの再起動コマンド

プロセスの再起動は以下のコマンドで可能です。

# diagnose test application <daemon_name> 99

<daemon_name>には、diagnose sys top コマンドで確認できるプロセス名を指定します。 99 の部分については、"Test level" を表しているようです。

コマンド実行後に、diagnose sys topでプロセスの PIDが変わっていれば再起動されています。
同じままの場合、プロセスが再起動されていないので 場合によっては "diagnose sys kill"でプロセスを再起動させるか、機器の再起動を検討する必要があります。

参考URL

Knowledge Base : Technical Note: Restarting internal processess/daemons
Knowledge Base : Techinal Note : diagnose sys top コマンド (Japanese version only)
FortiOS 6.0.0 Handbook : diagnose test application wad 2200