概要
コマンドを実行した後、処理が終わるまでログアウト出来なかったりターミナルを閉じられなくなったりします。
そんな時はscreen
コマンドを使うとターミナルを閉じたりログアウトしても処理を実行したままに出来ます。
環境
CentOS 7.1.1503
インストール
yum install screen.x86_64
使い方
セッションの開始
長時間かかる処理の前にscreen
コマンドを実行します。
screen
実行後、ターミナルが切り替わります。
長時間かかる処理を実行
試しにdateコマンドを無限ループさせてずっと実行させてみます。
while true; do date; sleep 1; done
表示例
Fri May 22 00:00:01 JST 2015 Fri May 22 00:00:02 JST 2015 Fri May 22 00:00:03 JST 2015 Fri May 22 00:00:04 JST 2015 Fri May 22 00:00:05 JST 2015
こんな感じで1秒ごとにdateコマンドが実行され結果が表示され続けます。
セッションのデタッチ(切断)
dateコマンドを実行したままセッションを終了します。
Ctrl
+ a
+ d
セッションが終了してscreenコマンド実行前のターミナル画面に戻ります。
こうなったらターミナルを閉じても大丈夫です。
後で再接続可能です。
セッションのアタッチ(再接続)
ターミナルを立ち上げ直して先程実行したセッションに再接続します。
screen -r
実行後先程実行しっぱなしだったdateコマンドの結果が表示され続けていると思います。
セッション一覧表示
screen -ls
表示例
[kenichi@tsunokawa ~]$ screen -ls There is a screen on: 17881.pts-0.tsunokawa (Detached) 1 Socket in /var/run/screen/S-kenichi. [kenichi@tsunokawa ~]$
セッションIDを指定して再接続
screen -ls
で出力されたIDを指定して再接続します。
screen -r 17881.pts-0.tsunokawa
セッションを終了する場合
実行させていた処理が終わってscreenのセッションが不要になった場合は
Ctrl
+ d
もしくは
$ logout
ログアウトすれば終了します。