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

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

新規登録して質問してみよう
ただいま回答率
85.50%
シェルスクリプト

シェルスクリプトは、UNIX系のOSもしくはコマンドラインインタプリタ向けに記述されたスクリプト。bash/zshといったシェルによって実行されるため、このように呼ばれています。バッチ処理などに使用されており、テキストファイルに書かれた命令を順に実行します。

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

Q&A

解決済

3回答

1479閲覧

apacheを再起動するシェルスクリプトの作り方

vverbv

総合スコア12

シェルスクリプト

シェルスクリプトは、UNIX系のOSもしくはコマンドラインインタプリタ向けに記述されたスクリプト。bash/zshといったシェルによって実行されるため、このように呼ばれています。バッチ処理などに使用されており、テキストファイルに書かれた命令を順に実行します。

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

0グッド

0クリップ

投稿2019/01/14 06:16

編集2019/01/14 12:57

【環境】
CentOS6系
シェル=bash

apacheのシンタックスチェックで以下コマンドを入力したときに

# httpd -t

シンタックスチェックに問題なければ

Syntax OK

上記のように出力されますが、シンタックスチェックで「Syntax OK」が出力された場合のみ
apacheを再起動するにはどのようなシェルを組んだらよいですか?
(シンタックスチェックに問題がある場合は、apacheを再起動せずに、
ログファイルなどにシンタックスチェックに問題があった旨を記述したいです。)

よろしくお願いします。

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

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

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

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

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

vverbv

2019/01/14 12:59

「Syntax OK」でなければ再起動が実行されないことはわかりますが、確認の上で再起動を実施したいです。
guest

回答3

0

つhttpd -t&&apachectl -k restart

投稿2019/01/14 06:53

hichon

総合スコア5737

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

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

0

自己解決

## 再起動関連変数定義 #httpd_syntaxcheck=`httpd -t 2>&1` #httpd_status=`/etc/init.d/httpd status` #httpd_process=`pgrep httpd | wc -l` #echo "$httpd_syntaxcheck" #echo "$httpd_status" #1.Apacheの設定ファイルシンタックスチェック(NGだったら再起動を行わずエラーを通知する) if [ "$httpd_syntaxcheck" = "Syntax OK" ]; then echo "`date` SyntaxCheck OK" >> $LOGFILE else subject="$(basename $0 .sh) $(hostname) failed" Mail_Send "$from" "$to" "$cc" "$subject_err" "$httpd_syntaxcheck_err" fi #2.Apacheを停止(起動スクリプトでOK) 停止に失敗したらエラー通知 #3.Apacheのプロセスが完全に無くなったことを確認(pgrepでOK) /etc/init.d/httpd stop #httpd_process=`pgrep httpd | wc -l` if [ "$httpd_process" = 0 ]; then echo "`date` httpd stop" >> $LOGFILE else #NGであればエラーを通知 subject="$(basename $0 .sh) $(hostname) failed" Mail_Send "$from" "$to" "$cc" "$subject_err" "$httpd_stop_err" fi #4.Apacheの起動(起動に失敗したらエラー通知) #5.Apacheが起動していないことを確認してから起動 if [ "$httpd_status" = "httpd is stopped" ]; then /etc/init.d/httpd start else subject="$(basename $0 .sh) $(hostname) failed" Mail_Send "$from" "$to" "$cc" "$subject_err" "$httpd_start_err" fi

長らく放置しており、すみませんでした。
結局上記のようなスクリプトになりました。

投稿2019/04/18 05:10

vverbv

総合スコア12

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

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

0

深く考えないで、apachectl restartでもいいかも。
stop,startしてくれますが、設定ファイルにエラーがあればstopで失敗してくれて動作しているhttpdも止まりません。

投稿2019/01/28 23:40

rogueref

総合スコア727

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問