HimaJyun僕の運営するマイクラ鯖はscreenで動かしています。1日1回、再起動とバックアップが実施されています。使い道screenの終了待ち例えばですが、もし今あなたがBashスクリプトを組んでいて、その中で時間が掛かる処理をバックグラウンドで実行させたいとするでしょう。あれば、コマンドの後ろに「&」を付けてバックグラウンド化し、必要であれば「wait」で待機すれば良いです。それが通用しない場合があります。Minecraftの様な、ソフトウェア自身がCUI(?)を持ち、起動してしまうとそいつがキーをバインドしてしまう場合です。キーをバインドされちゃうとwaitもクソもありませんし、そう言ったソフトウェアは終了に専用のコマンドを送りつけたりする必要があります。(Minecraftであれば「stop」)そのためにはscreenを使って、仮想端末を作成するのですが、最初に説明した通り終了が待機出来ません。した応用技を使うだけで簡単に出来てしまいます。後から紹介する手法は、起動しているscreenから対象のプログラムが識別出来る必要があります。起動時に以下の様にして起動して下さい。-list」した時に名前が付きます。[名前]」で出来ますし、便利ですよ。終了待ち実際の説明は後回しにするとして、以下の様なコードで実現可能です。[停止確認間隔(省略可能)]」のように呼び出して下さい。原理シェル慣れしている人に見せれば「あぁ、なるほど!!」ですが、分からない方は本当に分からないでしょうから軽くご説明致します。-list」を実行すると起動しているscreenのリストが出ます。これを「|」(パイプ)でgrepに送り、${1}(第一引数=screenの識別名)で抽出(-o)しています。それらの処理結果を判定し、空文字以外(-n)ならtrueとし、whileの中に入ります。whileループは中にsleepがあるだけですね、無くても良いですけど、無ければ無いでループが高速で回って余計な負荷になるので入れています。(どうでも良いですけど、while(ホワイル)+ループなのでホワイループとか勝手に呼んでます。${1}」して判定します。要は、終了待ちしているscreenが無くなるまでループで回って監視する、と言う古典的な手法です。流れてる処理の中ででも、処理待ちが、ほら、ぐるぐる回って......ですね。僕はこの手法をマイクラ鯖のバックアップ&再起動スクリプトに使用しています。マイクラ鯖が確実に終了してからバックアップを開始するためにね。マイクラ鯖は良くscreenを使用して以下の様に起動します。nogui」を実行する、良くあるマイクラ鯖の起動スクリプトですね。そのマイクラ鯖を自動で終了するのは、ざっと説明すると以下の様なコマンドを実行します。"stop\015"'(マイクラ鯖の自動再起動に関するより詳しい情報をお求めであれば「Minecraftサーバをscreenとcronでプラグインを使わずに自動再起動する」をご覧下さい。)しかし、screenは何度も言っている様に「バックグラウンド」で実行されています。先程のコマンドはマイクラ鯖のCUIに「stop」と言う文字を送ったに過ぎませんこのままバックアップを開始すると、データが正しく保存されていないにも関わらず処理が開始されてしまいます。minecraft」で呼び出しましょう。すると、screenが終了(=マイクラ鯖)が終了するまでループで待ち続けます。このループを抜ければscreenが終了した、すなわちマイクラ鯖が終了したと言う事ですので安心してバックアップを開始出来ます。する事でバックアップや再起動の処理をより確実にしています。その時にNICをオンボのカ......続きを読む→[Minecraft]1.11対応のSpigot(Bukkit)を用意するどうも、@HimaJyunです、やってまいりましたね、定期的に発生するプラグイン......続きを読む→PREVrsyncの--link-destでの差分バックアップNEXTUbuntuServerにIntelNICを載せてみるナカのヒト:HimaJyun​散って美しいのは桜だけです、情報はまとまっていた方が美しいのです。