2016年6月6日月曜日

screenでsshログアウトしても止まらないbackground処理を行う方法


raspberry piでできるbackground処理方法を探していたら、screenという便利な機能を見つけました。
備忘録を兼ねて共有します。

screenとは

screenとはターミナルのエミュレータを動作させるプログラムです。
screenを使うことによって、ターミナルを別画面で開いたような処理ができます。
別画面で開いたことになっているので、sshでログアウトした後も処理を継続することができます。
また、ログインしなおしたときに、処理を実行したターミナルを再確認することもできます。

「&」を付けて実行した処理は実行状況を確認しづらいですが、screenを使えば可能です。
また、「&」で実行した処理はdisownなどで所有権を破棄しないとsshログアウトと同時に終了してしまいますが、screenでの処理はsshログアウト後も継続します。

そんな便利なscreenの基本操作をこの記事では説明します。

インストール

デフォルトでは入っていないと思うので、screenをインストールします。
sudo apt-get install screen

重たい処理をbackgroundで実行する方法

screenを起動し、別ソケットでの処理を開始します。
screenの説明が出るので、スペースを押してページを最後までめくるか、エンターを押して閉じます。
screen

backgrounで処理したい時間がかかるコマンドを入力します。
sudo apt-get -y update && sudo apt-get -y upgrade

下記のキー操作で、screenで起動したソケットから抜けます。
Ctrl-a d

screenのソケットから抜けたことで、先ほどの処理がbackgroundで処理されるようになりました。
この状態でログアウトしても、screen上の処理は継続されます。

screenで実行している処理に戻る方法

screenのソケットを確認します。
screen -ls


処理が走っていたら、下記のコマンドで処理に移れます。

ソケットが一つの場合
screen -r

複数のソケットが存在する場合、ソケット名を渡すか、
screen -r 3263.pts-1.raspberrypi
ソケットを識別できる先頭の文字を渡します。。
screen -r 3263

screenの処理を終わる方法

screenのソケットに居る(Attachedと表示される)ことを確認します。
screen -ls


下記のどちらかでソケットを閉じれます。
Ctrl-a k
または
exit

詳しい説明

更なる説明は、下記のコマンドでマニュアルを開くと確認できます。
man screen

以上です。
何かの参考になれば嬉しいです。

参考

https://www.howtoforge.com/linux_screen

0 件のコメント :