それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

GNU Screen の終了

screen を終了する

GNU Screen をどうやって終了するのか。 いつも忘れるので、メモする。

とくに、ttyS0 を使ったシリアル通信をするときに困るのでメモを残す。

方法1 :quit

ctrl-a : (エスケープキー+コロン) でコマンド入力モードに入る

コマンド入力モードで quit をコマンドで指定する。

Enterで確定して終了する。

終了をやめるときはESC連打

方法2 セッション終了 k or 終了 q

ctrl-a k ( エスケープ+k)で終了する。

ctrl-a k を押すと終了するか、ダイアログが始まる 。

Yを押して、終了する。

ctrl-a k の代わりにバックスラッシュを使った ctrl-a \ も可能です。ctrl -a k が現在のbashctrl-a \は現在のscreen全体を終了します。

ctrl-a \ ( エスケープ+バックスラッシュ)がQUITです。ctrl-a k ( エスケープ+k)はKILLです

QUITは全終了、KILLはカレントを終了。1つしか使ってないときはKILLもQUITと同じ結果になる。

方法3 セッション内のプロセスをすべて終了する。

これは、一番便利なので皆が使ってると思うのですが。

screen だけを起動して内部でbash を起動してる場合

ctrl-d を連打してbashを終了すると、最後のbashを終了したときに、screenも終了する。

ちなみに、ttyS0 ではclose (EOF)送っても何も仕方ないので、終了しない。

ttyUSB0 ならUSBをぶっこ抜けば終了する。そういうことです.

方法4 デタッチして kill

たまに、こういう方法も取る時がある。

screen 内部で動いてるシェルが操作を受け付けないときや、適当に放置してあとで出力だけみるときにデタッチすると思います。

デタッチ( ctrl-a d ) をして通常のシェルに戻ります。

screen -ls でデタッチしたscreen を一覧する

一覧の数字がPIDなのでこのプロセス番号を指定して終了する

screen -ls 
screen -kill 12345678

実際やってみた結果

まとめ

ttyUSBならUSBぶっこ抜けばOK

USBじゃない ttyS0 なら Ctrl-a + k

とにかく終了したいとき Ctrl-D 連打か、Ctrl-A \ バックスラッシュ

って感じですね。