SimpleHTTPServerを起動しています。4-10ヶ月に1回位の頻度で理由は不明ですがサーバが落ちます。そこで、rc.localに追加しようと思うのですが問題なさそうでしょうか?
---------rc.local-------------
#!/bin/sh
#
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you dont
# want to do the full Sys V style init stuff.
touch /var/lock/subsys/local
/etc/wakame-init md
cd /html_file/
python -m SimpleHTTPServer 12345&
# ↑今までのコードに↓を追加する
while true
do
if ps aux | grep "SimpleHTTPServer" | grep -v grep
then
echo "SimpleHTTPServer ok"
else
cd /html_file/
echo `date "+%F %T"` " SimpleHTTPServer reboot" >> SimpleHTTPServer_reboot.log
python -m SimpleHTTPServer 12345&
fi
sleep 60
done
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
> 終了させないことで不安定になったりセキュリティ的に良くないのでしょうか?
セキュリティ的にとかっていうより、本来であれば起動完了時に正常終了しているべきスクリプトが走り続けるという所が、あるべき姿じゃない気がして気持ち悪いということです。
くわえて、起動時処理が完了しないわけなので、コンソールログインができないんじゃないですかね。(すいません試してませんが)
別スクリプトにしてプロセスとしては切り離しすのが常道です。
よって、貴方の方針を極力尊重してループで常駐させたるとすると、その処理を別スクリプト(例えば/root/httpserver_check.shとか)にして、rc.localにはそれを起動する処理を追記するの方がスマートに感じます。
/root/httpserver_check.sh
#!/bin/sh
while true
do
if ps aux | grep "SimpleHTTPServer" | grep -v grep
then
logger -t SimpleHTTPServer "ok"
else
cd /html_file/
logger -t SimpleHTTPServer "reboot"
python -m SimpleHTTPServer 12345 &
fi
sleep 60
done
rc.local
/root/httpserver_check.sh &
No.1
- 回答日時:
スクリプトの妥当性はわかりませんが、rc.localがずっと終了しないことに気持ち悪さを感じます…
自分だったらシェルスクリプト化して、cronで定期的にチェック&落ちてたらスタートにします。
ちなみに、/html_file ってドキュメントrootですか?
そこに、SimpleHTTPServer_reboot.log 作っちゃっていいんですか?
logger -t SimpleHTTPServer "reboot" とかでsyslogに吐いちゃう方がlogrotate考慮しなくていいので楽だとおもいますけど。
あたりを考慮して、自分ならこういう雰囲気にしたいところですね。
#!/bin/sh
if test `ps aux | grep "SimpleHTTPServer" | grep -v grep | wc -l` -gt 0
then
logger -t SimpleHTTPServer "ok"
else
cd /html_file/
logger -t SimpleHTTPServer "reboot"
python -m SimpleHTTPServer 12345&
logger -t SimpleHTTPServer "reboot(${?})"
fi
アドバイス頂きありがとうございます!とても参考になります。
rc.localが終了しないことですが、終了させないことで不安定になったりセキュリティ的に良くないのでしょうか?あまりLinuxに触る機会がなく気持ち悪いという感覚がわからなかったりします。また、権限的に強く何でもできるため重宝しているというのもあります。
シェルスクリプト化してcronという方法もあるのですね。思いつきませんでした。
ただ、私だとこのシェルスクリプトも質問のようにループさせるかもしれません。
これを起動させるcronは常に起動しているのでしょうが、こういった起動しっぱなしというのは一般に良くないのでしょうか?
>ちなみに、/html_file ってドキュメントrootですか?
そのとおりです。サーバ内部ではCGIが動いておりファイル生成されてたり更新されています。ただ、特に見られて困るようなものでもないですし、むしろ自分で外部からアクセスができ便利ですので一応自分が使ってるプロバイダのIPのみのアクセス許可にしてそのまま使っています。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(SNS・コミュニケーションサービス) 自分のpcがハッキングされたようなメールが来たのですがどうすればいいですか? 4 2022/10/02 16:14
- その他(プログラミング・Web制作) python 2 2022/12/23 09:06
- UNIX・Linux cronの@rebootでのdateコマンドの実行につきまして 2 2023/06/11 16:23
- その他(プログラミング・Web制作) python flask から fastapiへの移行時のエラー対処 1 2023/02/05 12:26
- サーバー WindowsでApache が起動しない 1 2022/11/29 12:21
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
- Ruby 教えてください 2 2023/01/04 17:50
- 英語 課題でこの英語の文章のSVOの分析や()等の括りを出されたため、できるだけ完璧にしたいのですが、自身 1 2022/12/16 13:29
- 戦争・テロ・デモ ウクライナ、メル友に五千円要求されてさ 1 2022/04/02 09:38
- 英語 下記はなんていってますか? こんにちは以降、訳していただけたら助かります。 Hello, We’re 1 2023/01/14 00:09
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
batである文字列内に特定の文字...
-
【sh】tee コマンドの代替方法
-
スクリプト中のexportコマンド...
-
Dirコマンドでフォルダ内ファイ...
-
父子家庭、 子供の進学費用を全...
-
エクセルの表にヘンな枠が・・・
-
SONYの音楽ソフト「x-アプリ」...
-
至急です、Ubuntuに詳しい方助...
-
Linux(Fedora)で外付けHDDが...
-
TOPコマンドで表示するCPU使用...
-
ファイル名についている「-」と...
-
UNIX コマンドにおける # や円...
-
pingは正常なのにtracerouteで...
-
bashでシングルクォート内の変...
-
シェルスクリプトでエラーが出ます
-
スクリプトのエラー「unexpecte...
-
tar.bz2ファイルのインストール...
-
ラズパイで『’test.service’をs...
-
Linux環境 grepで改行コード(CR...
-
linux下でfdisk実行時のエラー1...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
batである文字列内に特定の文字...
-
スクリプト中のexportコマンド...
-
if文について
-
シェルスクリプトの変数の制限?
-
Bシェル 文字列に含まれる特...
-
sh スクリプト ipアドレス形式...
-
shellスクリプトから別のshell...
-
シェルスクリプトの引数
-
【sh】tee コマンドの代替方法
-
Cシェルで標準エラー出力への...
-
kshでのNULLの比較
-
bashスクリプト
-
ファイルから文字列を読み込む...
-
平均値の算出
-
Cシェルプログラムで、あるディ...
-
【シェルスクリプト】whileルー...
-
【シェルスクリプト】 ローカル...
-
powershellのパイプでテキスト...
-
シェルで and/or の優先順位に...
-
bashのスクリプト内で、パイプ...
おすすめ情報