1行必要:すでに実行されている場合はhttpdを停止し、そうでない場合はhttpdを起動します。

1行必要:すでに実行されている場合はhttpdを停止し、そうでない場合はhttpdを起動します。

CentOS 7 構成スクリプトの一部として一行次の操作を行います。残念ながら、私はこれを達成する方法を知りません。

  • httpd が実行中の場合は停止します。
  • httpdが実行されていない場合は、httpdがインストールされていることを確認して起動します。
  • 理想的には、結果は/log/httpd/に記録されます。そして/&ホスト名/ログ/httpd/

誰でも助けることができますか?

答え1

CentOS7には、ほとんどのタスクを実行するsystemctlがあります。 Apacheが標準パッケージを介してインストールされている場合はすぐに動作します。

echo -n $(date +"%s %F %T"): \
if systemctl is-active httpd; then \
    systemctl stop httpd && echo "httpd stopped"; \
elif systemctl enable httpd; then \
    systemctl start httpd && echo "httpd started"; \
else \
    echo "httpd not installed"; false;\
fi 2>&1 || echo "Failure: $?" | \
 tee -a /var/log/httpd/status.log /some/other/location/log/httpd/status.log

明確にするために行に分けました。 1行に折りたたむには、\と改行を削除します。ロギングに詳細を追加できます。

答え2

これは私のオンラインメッセージです:

( if service httpd status; then echo 'stop'; service httpd stop; else echo 'check installed'; if ! rpm -qa | grep -q '^httpd-'; then echo 'install'; yum -y install httpd; fi; echo 'start'; service httpd start; fi ) &> /tmp/temp.log; cat /tmp/temp.log >> /log/httpd/some.log; cat /tmp/temp.log >> /&hostname/log/httpd/another.log; rm /tmp/temp.log

関連情報