Apacheサーバーを起動して再起動するとき、次のコマンドの違いは何ですか?
sudo service apache2 restart
sudo service apache2 stop
sudo service apache2 start
そして
sudo systemctl restart apache2
sudo systemctl stop apache2
sudo systemctl start apache2
LAMPスタックを使用してLinuxサーバーについて少し学んでいますが、なぜ一部のガイドではある構文を使用し、他のガイドでは別の構文を使用するのかを知りたいと思います。
答え1
LAMPスタックを使用してLinuxサーバーについて少し学んでいますが、なぜ一部のガイドではある構文を使用し、他のガイドでは別の構文を使用するのかを知りたいと思います。
私のrlmライセンスマネージャのサンプルファイルを使用すると、/etc/init.d
ファイルの関連コードは起動、停止、再起動、およびステータスに関連付けられます。
status() {
pid=`_getpid ${RLM_ROOT}/rlm`
if [ -z "$pid" ]; then
echo "rlm is stopped"
return 3
fi
echo "rlm (pid $pid) is running..."
return 0
}
restart() {
stop
start
}
case "$1" in
start)
start
;;
stop)
stop
;;
status)
status
;;
restart)
restart
;;
*)
echo $"Usage: $0 {start|stop|status|restart}"
exit 1
esac
ご覧のとおり、restart
これは停止を呼び出してから始まる関数呼び出しです。それがすべてですrestart
。停止を呼び出してから始めます。
init.dまたはsystemctlファイルが実際に私の例とは異なり、より複雑な再起動を定義できますか? はい、実際に理解するにはコードを直接確認する必要があります。ただし、ほとんどの場合、開始|停止|再起動|状態に関してApacheファイルを含む上記の投稿と非常によく似ています。
質問の文脈でapache2サービスを停止して開始する場合は、これを実行するために必要な最小入力量は、service apache2 restart
2つの別々のコマンドを手動で実行して最初に停止してから開始するのとは反対です。しかし、どちらにしても同じ結果が得られます。また、これにより、停止が成功しrestart
たかどうかにかかわらず、サービスは停止後すぐに開始を試みます。これは、実行中のタスクやデバッグによっては良い場合も悪い場合もあります。時々、最初のタスクを実行してservice whatever stop
から、他のタスクを実行する前に長時間停止してから、手動で後続のタスクを実行する方が便利ですservice whatever start
。
初期化ファイルはい古いLinux方式around service
、次に置き換えられましたシステムLinuxとsystemctl
構文構造。しかし、まだサポートさservice whatever <start|stop|restart|status
れています。以前のinit.dタイプのLinuxシステム(例:redhat5)でそれを使用しようとすると、明らかな理由で「コマンドが見つかりません」という状況が発生します。 initdとsystemdを説明するこのWeb記事を読むことができます。systemctl <start|stop|restart|status whatever
service
systemctl
systemctl
ドキュメントの構文を使用してコマンドラインに入力することは、service whatever <start|stop|status|restart>
まだ完全に有効で正確です。ドキュメントとガイドの場合、最小限の文字で要点を渡し、systemctl(サービス)にほぼ直接的にエイリアスを割り当てるので、そのレガシーを引き続き使用する方が人がより読みやすいようです。初期化すべての文書のサービス構文。