私のコンピュータには、小さなMumble Voice Serverを実行できるユーザーがいくつかいます。私は彼らがウェブサイト(Apacheによって実行されている)で音声サーバーを起動/停止できるようにしたいと思います。現在の設定では、各サーバーを別のユーザー(その人の特定のユーザーアカウント)として実行します。
私が知らないのは、サーバーをすぐに起動/停止する最良の方法です。現在、Webサイトでサービスを開始/停止しようとするたびにデータベースにエントリを作成します。その後、毎分実行され、データベースでこれらの起動/停止を検索するcronスクリプトがあります。 cronスクリプトはユーザーアカウントに切り替え、そのユーザーとしてサーバーを実行します。私の問題は、これが起こるのに約1分かかることがあるということです。
これを達成するためのより敏感な方法はありますか?
ベストアンサー1
データベースに書き込むことに加えて、名前付きパイプに書き込むことを検討しましたか?ユーザーごとに名前付きパイプを作成し、各名前付きパイプを監視するプロセスを作成できます。 「restart」コマンドが来たら、すぐにプロセスを再起動してください。
これは完全な解決策ではなく改善することができますが、名前付きパイプを監視してプロセスを再開する方法についてのアイデアを提供する必要があります。
while read line <$pipe
do
if [[ "$line" == 'restart' ]]; then
restart_some_service
fi
done