私のサーバーで実行されているサービスを表示するPythonスクリプトを作成しようとしています。
問題は、mongodbがサーバーで失敗し続け、これが発生するたびにそれを開始するコマンドを手動で作成する必要があることです。
私が望むのは、特定のサービスが停止したときにこのタスクを自動化することです。
これまで私はこれを書きました。https://gist.github.com/prodicus/67609dd984309d0a82f9
私はこれが非常に基本的な人々であることを知っています。まだ行く方法は長いです:)
今サービスをどのように開始しますか?モンゴル語データベースそしてApacheこのスクリプトを介して?どんなアドバイスでもとても役に立ちます。
答え1
私のサーバーで実行されているサービスを表示するPythonスクリプトを作成しようとしています。
しないでください。それは正確にプロセスマネージャが好きupstart
かsystemd
役に立つもの。を使用するには、systemd
単純なmongoユニットファイルは次のようになります。
[Unit]
Description=High-performance, schema-free document-oriented database
After=syslog.target network.target
[Service]
Type=forking
User=mongodb
EnvironmentFile=/etc/sysconfig/mongod
PIDFile=${PIDFILE-/var/run/mongodb/mongod.pid}
ExecStart=/usr/bin/mongod $OPTIONS run
PrivateTmp=true
LimitNOFILE=64000
TimeoutStartSec=180
[Install]
WantedBy=multi-user.target
障害が発生した場合に自動的に再起動するには、この[Service]
セクションに以下を追加します。
Restart=on-failure
残念ながら、最新のプロセスマネージャがないシステムで作業している場合は、次のツールを使用できます。家庭教師同じ効果を得るために。
しかし、実際にアプリがクラッシュし続ける場合は、問題の原因を探すことをお勧めします。 Mongodbは、ファイルが指すlogpath
場所/etc/mongod.conf
(私のシステム)に情報を記録します。/var/log/mongodb/mongodb.log
これはおそらく問題を見つける最初の場所です。
他のアプリケーションは、競合の根本原因を見つけるのに役立つ同様の診断情報を提供します。
答え2
迅速で汚い方法:
cronにスクリプトを配置してX分ごとに実行し、mongodbが実行されていない場合は再起動できます。
以下のこの簡単なスクリプトの主な内容は、grep応答コードを使用して再起動が発生する必要があるかどうかを判断することです。ただし、grepコマンド自体がプロセスリストに表示されるため、最初のgrepは常に成功を返すため、そこで2番目のgrepを使用する必要があります。したがって、psの出力で「Grep for THIS STRING」と言うと、grepは常に「Grep for THIS STRING」コマンドを使用してプロセスを見つけるため、常に最初にそれを見つけます。
もちろん、これを行うより良い方法と良い方法がありますが、以下のロジックは機能します。最終的には醜いかもしれませんが、うまくいきます。私はネットワークが非常に悪く、接続が頻繁に切断されても、他の大陸の非常に遅い同期が機能し続けるように書かなければならなかった簡単なスクリプトを借りました。
#!/bin/bash
# DATE var only included in case you want some rudimentary logging on when mongo drops/restarts. You will have to add that yourself.
DATE=`date +%m-%d-%H:%M:%S`
ps -ef | grep 'unique first part of unique string that you see from ps which indicates mongo is running' | grep 'second part of unique string that you see from ps when mongo is running';
if [ $? == "1" ];
then
command to restart mongodb; can also include other commands to make sure it runs correctly like removing stale locks etc;
fi
答え3
rootとして実行されますか?この場合、service xxxx start
スクリプトで次のことができますxxxx
。モンゴル語データベースまたはApache。