Home
Packages
Forums
Wiki
GitLab
Security
AUR
Download
コンテンツにスキップ
メインメニュー
メインメニュー
サイドバーに移動
非表示
案内
メインページ
目次
コミュニティに貢献
最近の出来事
おまかせ表示
特別ページ
交流
ヘルプ
貢献
最近の更新
最近の議論
新しいページ
統計
リクエスト
ArchWiki
検索
検索
表示
アカウント作成
ログイン
個人用ツール
アカウント作成
ログイン
GNU Screenのソースを表示
ページ
議論
日本語
閲覧
ソースを閲覧
履歴を表示
ツール
ツール
サイドバーに移動
非表示
操作
閲覧
ソースを閲覧
履歴を表示
全般
リンク元
関連ページの更新状況
ページ情報
表示
サイドバーに移動
非表示
←
GNU Screen
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループに属する利用者のみが実行できます:
登録利用者
。
このページのソースの閲覧やコピーができます。
[[Category:ターミナルマルチプレクサ]] [[Category:GNU]] [[en:GNU Screen]] [[ru:GNU Screen]] [[zh-hans:GNU Screen]] {{Related articles start}} {{Related|tmux}} {{Related|Ratpoison}} {{Related|Xpra}} {{Related articles end}} [https://www.gnu.org/s/screen/ GNU Screen] はテキストプログラムとシェルを分離させることができるラッパーです。Screen を使うことで、例えば、X のターミナルでテキストプログラムを起動して、X を終了し、プログラムを使い続けることなどが可能になります。 == インストール == GNU Screen は {{pkg|screen}} パッケージを使って[[インストール]]できます。 == 使用方法 == コマンドを入力するときはエスケープキーの {{ic|ctrl+a}} を押してからキーバインディングを押します。 ユーザーによってはデフォルトのエスケープキー {{ic|ctrl+a}} は不便かもしれません。[[#エスケープキーを変更する|下に書かれている]]ようにエスケープキーは別のキーに変更することが可能です。 === よく使われるコマンド === * {{ic|ctrl+a}} {{ic|?}} コマンドとコマンドのデフォルトを表示 (とても重要です) * {{ic|ctrl+a}} {{ic|:}} screen のコマンドプロンプトに入る * {{ic|ctrl+a}} {{ic|"}} ウィンドウリスト * {{ic|ctrl+a}} {{ic|0}} ウィンドウ0を開く * {{ic|ctrl+a}} {{ic|A}} 現在のウィンドウの名前を変更 * {{ic|ctrl+a}} {{ic|a}} 現在のウィンドウに {{ic|ctrl+a}} を送信 * {{ic|ctrl+a}} {{ic|c}} 新しいウィンドウ (とシェル) を作成 * {{ic|ctrl+a}} {{ic|S}} 現在の領域を水平に2つの領域に分割 * {{ic|ctrl+a}} {{ic|<nowiki>|</nowiki>}} 現在の領域を垂直に2つの領域に分割 * {{ic|ctrl+a}} {{ic|tab}} 次の領域に入力フォーカスを移動 * {{ic|ctrl+a}} {{ic|ctrl+a}} 現在の領域と前の領域を切り替え * {{ic|ctrl+a}} {{ic|Esc}} コピーモードに入ります (enter を使ってテキストの範囲を選択) * {{ic|ctrl+a}} {{ic|]}} テキストの貼り付け * {{ic|ctrl+a}} {{ic|Q}} 現在の領域以外の全ての領域を閉じる * {{ic|ctrl+a}} {{ic|X}} 現在の領域を閉じる * {{ic|ctrl+a}} {{ic|d}} 現在の screen セッションからデタッチ、動作し続ける。復帰するには {{ic|screen -r}} を使う === コマンドプロンプトコマンド === * {{ic|ctrl+a}} {{ic|:quit}} 全てのウィンドウと screen セッションを終了 * {{ic|ctrl+a}} {{ic|:source ~/.screenrc}} screenrc 設定ファイルをリロード (/etc/screenrc を使うことも可能) === セッションに名前を付ける === 名前付きセッションを作成するには、次のコマンドで screen を起動します: $ screen -S ''session_name'' 既存のセッションの名前を変更するには、screen が実行しているときに次のコマンドを実行: {{ic|ctrl+a}} {{ic|:sessionname ''session_name''}}。 screen のセッションを識別する ''pid.tty.host'' 文字列のリストを出力するには: $ screen -list 名前付き screen セッションにアタッチするには、次のコマンドを実行: $ screen -x ''session_name'' または: $ screen -r ''session_name'' === Screen のカスタマイズ === Screen のデフォルト設定を変更したい場合は {{ic|.screenrc}} ファイル (例: {{ic|~/.screenrc}}) を使用するか (起動時に実行するコマンドを記述)、あるいはコロン ({{ic|-}}) コマンドを使います。 == ヒントとテクニック == === systemd で自動起動 === 以下のサービスは特定のユーザーで screen を自動的に起動します (例: {{ic|systemctl enable screen@florian}})。[[systemd/ユーザー|systemd --user]] インスタンスは特定のユーザーの最後のセッションが閉じたときに終了されることが保証されていないので、システムユニットとして実行する必要があります。 {{hc|/etc/systemd/system/screen@.service|<nowiki> [Unit] Description=screen After=network.target [Service] Type=simple User=%i ExecStart=/usr/bin/screen -DmS autoscreen ExecStop=/usr/bin/screen -S autoscreen -X quit [Install] WantedBy=multi-user.target </nowiki>}} === エスケープキーを変更する === デフォルトのエスケープキーを変更する理由としては、"a" を押すのが左手の小指だから、あるいは、[[readline|GNU Readline]] や [[Bash]] などのシェルでは {{ic|ctrl+a}} が {{ic|beginning-of-line}} コマンドにマッピングされていることが挙げられます。 エスケープキーは {{ic|~/.screenrc}} の {{ic|escape}} オプションで変更できます。あるいは {{ic|screen}} を実行するときに {{ic|-e}} オプションを指定します。 例えば、シェルやエディタで {{ic|ctrl+j}} を使用することがないのであれば、{{ic|escape ^Jj}} でエスケープキーを {{ic|ctrl-j}} に設定できます。2番目の "j" は {{ic|ctrl-j j}} でターミナルに {{ic|ctrl-j}} リテラルを送信することを意味します。[[Dvorak]] キーボードを使っている場合、{{ic|ctrl-t}} ({{ic|escape ^Tt}}) が便利だと思います。 他にも、エスケープキーを {{ic|`}} に設定する {{ic|escape ``}} オプションや、{{ic|ctrl+^}} に設定する {{ic|escape ^^^}} などが存在します。 Screen のドキュメントではエスケープキーのことを「コマンド文字」と呼ぶこともあります。 === ウィンドウ1から起動 === デフォルトでは、一番最初のスクリーンウィンドウは0です。ウィンドウ0を使わずに1から起動して欲しい場合、設定に以下の行を追加してください: {{hc|~/.screenrc| bind c screen 1 bind ^c screen 1 bind 0 select 10 screen 1 }} === 入れ子の screen セッション === screen セッションをネストすると固まってしまうことがあります。screen セッションの中で ssh セッションを開始して、さらに ssh セッションの中で、screen を起動した場合を考えてください。デフォルトでは、{{ic|ctrl+a}} コマンドに反応するのは最初に起動した (外側の) screen セッションだけです。内側の screen セッションにコマンドを送信するには、{{ic|ctrl+a}} {{ic|a}} と入力してからコマンドを押してください。例: * {{ic|ctrl+a}} {{ic|a}} {{ic|d}} 内側の screen セッションをデタッチ。 * {{ic|ctrl+a}} {{ic|a}} {{ic|K}} 内側の screen セッションを終了。 === 毎回シェルで Screen を起動する === Bash と Zsh の場合、エイリアスの前に {{ic|.bashrc}} または {{ic|.zshrc}} に以下のスニペットを追加してください: {{hc|~/.bashrc or ~/.zshrc|<nowiki> if [[ -z "$STY" ]]; then screen -xRR session_name fi </nowiki>}} === 256色を使う === デフォルトでは、screen は8色のターミナルエミュレータを使います。他の色を使えるようにするには、多色対応しているターミナルを使用して [http://aperiodic.net/screen/commands:term term] の値を適切に設定する必要があります。[[wikipedia:Terminfo|terminfo]] を使って[[wikipedia:ANSI escape code|ANSI エスケープコード]]の解釈方法が決められます。terminfo のデータベースにエントリが存在している必要があり、{{Pkg|ncurses}} に一般的な記述子が含まれていて {{ic|/usr/share/terminfo/}} に保存されます。 まずは汎用の値を試してください: {{hc|~/.screenrc| term screen-256color }} 上記で上手く行かない場合、使用しているターミナルにあわせて設定してみてください。例えば [[xterm]] ベースのターミナルを使っている場合: {{hc|~/.screenrc| term xterm-256color }} [[rxvt-unicode]] を使用する場合: {{hc|~/.screenrc| term rxvt-unicode-256color }} {{Note|{{ic|/usr/share/terminfo/r/rxvt-unicode-256color}} は {{Pkg|rxvt-unicode-terminfo}} に入っています。このパッケージは {{Pkg|rxvt-unicode}} の依存パッケージとしてインストールされます。ただし、[[SSH]] を介してサーバーにログインして ''screen'' を実行している場合、terminfo ファイルがサーバー側に存在しない可能性があります。その場合、サーバーに {{ic|/usr/share/terminfo/r/rxvt-unicode-256color}} をコピーして {{ic|~/.terminfo}} に保存することを推奨します。}} 上記の設定が駄目ならば最後の手段として、[http://aperiodic.net/screen/commands:termcapinfo termcapinfo] を設定してください: {{hc|~/.screenrc|<nowiki> attrcolor b ".I" # allow bold colors - necessary for some reason termcapinfo xterm 'Co#256:AB=\E[48;5;%dm:AF=\E[38;5;%dm' # tell screen how to set colors. AB = background, AF=foreground defbce on # use current bg color for erased chars </nowiki>}} === 有益なステータスバー === デフォルトのステータスバーは情報が少なすぎます。以下のように設定すると良いでしょう: {{hc|~/.screenrc|<nowiki> hardstatus off hardstatus alwayslastline hardstatus string '%{= kG}[ %{G}%H %{g}][%= %{= kw}%?%-Lw%?%{r}(%{W}%n*%f%t%?(%u)%?%{r})%{w}%?%+Lw%?%?%= %{g}][%{B} %m-%d %{W} %c %{g}]' </nowiki>}} あるいは、[http://www.fordfrog.com/2012/09/02/71/ frodfrog のブログ] に書かれている例: {{hc|~/.screenrc|<nowiki> hardstatus alwayslastline '%{= G}[ %{G}%H %{g}][%= %{= w}%?%-Lw%?%{= R}%n*%f %t%?%{= R}(%u)%?%{= w}%+Lw%?%= %{= g}][ %{y}Load: %l %{g}][%{B}%Y-%m-%d %{W}%c:%s %{g}]' </nowiki>}} ステータスバーを上に表示するには: {{hc|~/.screenrc|<nowiki> hardstatus firstline </nowiki>}} === ウェルカムメッセージをオフにする === {{hc|~/.screenrc| startup_message off }} === hardstatus 行を urxvt|xterm|aterm のウィンドウタイトルに動的に変える === {{ic|hardstatus}} 行を通知を表示する {{ic|caption}} 行に切り替えて、以下のように編集するだけです: {{hc|~/.screenrc|<nowiki> backtick 1 5 5 true termcapinfo rxvt* 'hs:ts=\E]2;:fs=\007:ds=\E]2;\007' hardstatus string "screen (%n: %t)" caption string "%{= kw}%Y-%m-%d;%c %{= kw}%-Lw%{= kG}%{+b}[%n %t]%{-b}%{= kw}%+Lw%1`" caption always </nowiki>}} ターミナルエミュレータのタイトルに {{ic|screen (0 bash)}} と表示されるようになります。caption は日付と時刻を表示して、screen ウィンドウをカラー化します。 ===X のスクロール機能を使う=== GNU Screen のスクロールバッファは {{ic|ctrl+a}} {{ic|[}} で読むことができますが、不便です。xterm や konsole などのスクロールバーを使うには、以下の行を追加してください: {{hc|~/.screenrc| termcapinfo xterm* ti@:te@ }} === 動作中のプログラムを screen にアタッチ === screen の外で起動したプログラムを中に持って行きたい場合、'''reptyr''' を使うことでプロセスの親を tty から screen に変えることができます。 {{Pkg|reptyr}} パッケージを[[インストール]]してください。 プロセスの PID を取得してください ({{ic|ps ax}} を使えば取得できます)。reptyr の引数として取得した PID を入力して screen ウィンドウの中で実行してください: {{bc|$ reptyr ''<pid>''}} ===screen で別の bash プロンプトを設定=== screen セッションで別の bash プロンプトを使いたい場合、以下を {{ic|.bashrc}} に追加してください [http://serverfault.com/questions/257975/how-to-check-if-im-in-screen-session]: {{bc|<nowiki> if [ -z $STY ] then PS1="YOUR REGULAR PROMPT" else PS1="YOUR SCREEN PROMPT" fi </nowiki>}} ===ビジュアルベルを切る=== 以下の設定を使えば、screen はベル音声の代わりに画面の点滅を使うのを止めます。 {{hc|~/.screenrc| vbell off }} === 垂直・水平バーを表示しない === 垂直バーを消すには: {{hc| head=$ ~/.screenrc |output=rendition so =00 }} 背景・前景色をデフォルト (d) に設定して何も表示しない (" ") ようにします。水平バーを消すには: {{hc|~/.screenrc| caption string "%{03} " }} == トラブルシューティング == === エディタのテキストが残るのを修正 === nano などのテキストエディタを開いて閉じると、テキストがターミナルに残ってしまうことがあります。これを修正するには、以下を記述してください: {{hc|~/.screenrc| altscreen on }} === ウィンドウリストの Name カラムに "bash" としか表示されない === {{ic|~/.screenrc}} に以下を追加してください: {{hc|head=~/.screenrc|output=windowlist string "%4n %h%=%f"}} == 参照 == * [https://www.gnu.org/software/screen/manual/screen.html GNU Screen ユーザーマニュアル] * [https://wiki.gentoo.org/wiki/Screen Gentoo Wiki - screen のチュートリアル] * [https://bbs.archlinux.org/viewtopic.php?id=55618 Arch フォーラム - .screenrc 設定とスクリーンショット] * [https://bbs.archlinux.org/viewtopic.php?id=50647 Arch フォーラム - Regarding 256 color issue with urxvt] * [http://www.macosxhints.com/article.php?story=20021114055617124 MacOSX Hints - Automatically using screen in your shell] * [[Ratpoison]] - gnu screen ベースのウィンドウマネージャ * [[Xpra]] - コマンドラインプログラムを screen がデタッチ・再アタッチするのと同じように、X プログラムをデタッチ・再アタッチできるユーティリティ
このページで使用されているテンプレート:
テンプレート:Bc
(
ソースを閲覧
)
テンプレート:Hc
(
ソースを閲覧
)
テンプレート:Ic
(
ソースを閲覧
)
テンプレート:META Box
(
ソースを閲覧
)
テンプレート:META Box Blue
(
ソースを閲覧
)
テンプレート:META Related articles start
(
ソースを閲覧
)
テンプレート:Note
(
ソースを閲覧
)
テンプレート:Pkg
(
ソースを閲覧
)
テンプレート:Related
(
ソースを閲覧
)
テンプレート:Related articles end
(
ソースを閲覧
)
テンプレート:Related articles start
(
ソースを閲覧
)
GNU Screen
に戻る。
検索
検索
GNU Screenのソースを表示
話題を追加