GNU screen その6(再生)

1ギレン総帥 ◆0QHV7fcZ.2
垢版 |
2009/07/11(土) 21:43:29
新スレが即死したので再attachします

GNU本家 http://www.gnu.org/software/screen/
公式ML(英語 たまにドイツ語) http://groups.yahoo.com/group/gnu-screen/
でかいのネット http://www.dekaino.net/screen/
UnixUser2004年1月号記事 http://risky-safety.org/%7Ezinnia/screen/contribute2/
Screen Glossary http://zinnia.dyndns.org/~hiki/Screen/
@IT:screenコマンドとは http://www.atmarkit.co.jp/flinux/rensai/linuxtips/692usescreen.html
私家版GNU Screen http://www.rubyist.net/~rubikitch/computer/hacks/screen/
screenコマンド一覧 http://www.limy.org/program/screen.html

1 http://pc.2ch.net/test/read.cgi/unix/1001966406/
2 http://pc5.2ch.net/test/read.cgi/unix/1048030339/
3 http://pc5.2ch.net/test/read.cgi/unix/1087436430/
4 http://pc8.2ch.net/test/read.cgi/unix/1111357444/
5 http://pc12.2ch.net/test/read.cgi/unix/1148721522/
6(即死) http://pc12.2ch.net/test/read.cgi/unix/1245767502/
2011/08/22(月) 19:09:26.83
何も案を出せずにごめん、そして解決方法を書いてくれてありがとう
2011/08/24(水) 07:45:35.14
xselをwaitしたらいいのでは?
2011/08/24(水) 08:22:30.22
>>417
自分自身でforkするプロセスはwaitできないよ(笑)

>>415
xsel -n で、forkしないようにできるけど。
あと、nohupの代わりに trap '' 1 で HUP無視する方法も。
2011/08/26(金) 14:14:12.67
復帰
2011/08/29(月) 00:38:00.96
>>418
-n 付けて detach 抑制すると xsel が生きている間、
端末に制御が戻ってこないので問題があります。

trap は色々試した結果、このケースだとうまく trap されなかったんですが…
気になって今試したら trap '' HUP だとうまくいくことが判明。
前に試した時は trap 'echo foo' HUP とかやってたんですが、これだとうまく trap されない。
(nohup されないのはいいんですが、echo されず、trap されていることが確認できなかった。touch /tmp/trapped でも同じ)

というか trap '' HUP だとシグナル無視だけど、 '' じゃないと書いてあることを追加で実行するだけで、
元の挙動を抑制する訳じゃないのか。勘違いしていた。そういえばそうだった気もする。

シグナル無視と追加実行で trap される範囲が違うのか…?

まあもう nohup にしときますけどね。trap '' HUP の方が &>/dev/null 書かなくていいし多分速いけど。
2011/09/01(木) 03:38:20.62
どのnohup/trap使ってる? 内部/外部?
tcshの内部nohupを使えば解決するような希ガスんだが、どうしてもzsh使いたいの?
2011/09/02(金) 00:35:19.11
別にそんなことはありません。
nohup は /usr/bin/nohup です。
trap は sh というか bash です。済みません、まぎらわしいですね。linux です。
zsh は試しに使いましたが、screen に渡しているのは bash です。
# nohup 使う方法も zsh から呼ぶとなぜかうまく動かなかったし、
# 適当に試しただけですが、&! も setopt nohup もうまく動かず、disown はちょっと違うので、
# 結局 zsh は採用していません。

その builtin nohup は正に期待するもののようですが、
今は csh/tcsh を入れていないので残念ながら &>/dev/null しときます。
423名無しさん@お腹いっぱい。
垢版 |
2011/09/25(日) 20:12:12.85
ウインドウを新規作成した時
ホームディレクトリじゃなくて、
作成元のディレクトリをカレントディレクトリにしたいのですが
どうすればいいですか?
2011/09/26(月) 14:27:38.87
シェルから screen と入力してウィンドウを新規作成すると
起動元のシェルのカレントディレクトリが引き継がれるよ
2011/09/26(月) 14:38:14.36
>>424
ほんとだっ
こんなに簡単に実現できるとは
ありがとうございました
426名無しさん@お腹いっぱい。
垢版 |
2011/10/25(火) 22:52:40.66
各windowのカレントディレクトリのリストを確認したいのですが
どうすればできますか?
2011/11/20(日) 22:30:51.28
whoコマンドかwコマンドでscreenから起動されてるttyを調べて
/procファイルシステムを舐めてカレントディレクトリを調べる
スクリプトを書けば不可能ではなさそう
428名無しさん@お腹いっぱい。
垢版 |
2011/12/08(木) 06:58:55.53
screen使うと、viとか起動/終了した時に画面が戻らないんですけど、
普通のxtermと同じように画面を復帰するようにできませんか?
2011/12/08(木) 07:53:27.08
TERMINFO/TERMCAPのscreen端末設定を修正すればできるよ

$ man terminfo
2011/12/08(木) 07:57:53.82
>>429
それはすでにやりましたが、直りません。

「man hoge」の回答者って確認せずに回答する人多いですよね。
2011/12/08(木) 08:08:47.47
そりゃ環境もやったことも書かないような間抜けにはそういう回答しかできないのでは
2011/12/08(木) 08:10:46.58
>>431
横レスだが、環境問わずscreenではそもそも >>428 の設定は不可能なのだが、
可能かのように知ったか回答してる >>429 が間抜けかと。
2011/12/08(木) 08:52:48.68
つまり「できない」がベストアンサーってことですね
2011/12/08(木) 10:08:16.25
tmuxならできる
2011/12/08(木) 12:12:01.05
>>428
altscreenをonにしろ
2011/12/08(木) 12:19:43.62
>>435
できました!!ありがとう!!!

ちなみにterminfoの設定は元に戻しました(笑)
2011/12/08(木) 12:46:31.45
横レスだが、環境によってはできるにもかかわらず、環境に問わず不可能だという回答をする人は…
2011/12/08(木) 12:50:35.42
横レスだが、環境問わず TERMINFO/TERMCAPのscreen端末設定では設定不可能だよw
2011/12/08(木) 13:16:37.87
おっ条件が増えたぞ
2011/12/08(木) 14:52:18.63
くやしいのう くやしいのう
2012/01/03(火) 06:18:49.77
vim上でHomeやファンクションキーが効かないので、
.screenrcで
term xterm
と元のTERMを書いちゃったんですが、これって正しい使い方ですか?
そもそもなんでscreenを起動するとTERM=screenになるのか
意義がわからないのですが。
2012/01/04(水) 07:28:01.33
>>441
screen自身がエスケープシーケンス解釈するから、アプリケーションから
screenの知らないエスケープシーケンスが飛んでくることを避けるために
TERM=screenにしてるんだよ
2012/01/04(水) 11:17:14.23
term xtermと書くのって普通ですか?
それともファンクションキーとかを使うのはあきらめる?
2012/01/05(木) 13:37:57.30
色々調べた結果、~/.screenrcに
termcapinfo xterm* 'Co#256:AB=\E[48;5;%dm:AF=\E[38;5;%dm:k1=\E[11~:k2=\E[12~:k3=\E[13~:k4=\E[14~'
とk1からk4を書いておけばファンクションキーが使えるようになりました。
多分term xtermでも大丈夫と思うんですが、screenの知らないエスケープシーケンスが
という問題はなくなるかと。
2012/01/05(木) 23:52:50.70
>>184の問題って今どうなってるの?
あんまりみんな気にしてないのかな
2012/01/07(土) 13:03:49.90
>>445
tmuxだと環境変数を自動で設定してくれるみたい。
screenだとvncのなかでscreenを起動して
Xは全部vncに表示するのが一番簡単・無難かと。
detachしてもXは生きたままにできるし、遅い回線でも使い物になる。
ただvncだとscreenとXが同じマシンのときに遅さが気になるので
screenxというのをつくってつかっています。
2012/01/07(土) 14:27:57.06
>>446
>tmuxだと環境変数を自動で設定してくれるみたい。
マジですか
どういう仕組みでやってんだろ
2012/01/07(土) 18:12:31.73
>>447
すまん、やりたいことが
すでに起動しているshの環境変数を書き換えることならNoだわ。
あたらしいwindowを開いたときに、そのときの環境変数が設定されるだけ。
2012/01/29(日) 12:38:25.06
コピーモードから抜けるとき一瞬もたつく感じしない?
とくにコピーしてから抜けるときは
設定いじればもう少し早くなるんだろうか
2012/03/11(日) 00:14:05.68
layout newでレイアウト情報が作成されるらしいけど、どこのファイルに書いているの?
2012/03/12(月) 02:20:08.27
それって colon から打つの?

>>449
特にしません。

>>441
TERM=xterm だと xterm の制御シーケンスを扱えない端末からマルチディスプレイモードで
アタッチした時に困ったことになる。マルチディスプレイモードじゃなくても。
または、端末より screen が認識する(かつ screen のみでなんとかなる)
制御シーケンスの方が多いというケースも理由としてありえるな。

>>445
うーん…
tty の入力監視 wrapper から screen を起動する。
wrapper では入力検知時に pid を file などに書く。
zsh の preexec とかで pid から環境変数を取り込む。
みたいな?
452450
垢版 |
2012/03/12(月) 02:31:08.26
>>451
そうっす。prefixの後に :layout new

もしかして/tmpに作られてんのかな
2012/03/12(月) 21:29:12.06
man screen になかったけど開発版の機能か。
それ内部的に作られてるだけなんじゃない?
454450
垢版 |
2012/03/13(火) 00:18:57.07
>>453
一回どっかのscreenで:layout newすれば、その後に別のセッションを新規に作っても
そこでもレイアウトは有効になってるんで、どこかに書いてるのかと思うんだけど・・・
2012/03/13(火) 00:45:02.71
違う端末でも、じゃなくて違うセッションでも共有してるの?
古い記述だけど ttp://yudai.arielworks.com/memo/2008/11/08/184006 には
ファイルに書かれないとあるね。今はあるかもしれないけど。

セッション間共有なら screen として特別なファイルはなくてもできるだろうし、
強いていうならソケットディレクトリ内のソケットがそれにあたるかな。
2012/03/13(火) 17:13:48.37
LANG=C man screen
保存したければlayout dump使えって
2012/03/14(水) 00:21:53.88
なんだ man にあるんかい。
開発版っていってもそんな新しい機能じゃないからあるか。
開発版じゃない方には当然書いてないけど。
2012/03/17(土) 15:01:22.46
昔 sudo のパスワード不要期間って window 間で共有してた気がするけど、
今は端末毎に制御しているのか window 毎に管理されてるよね。
端末毎は別の方がいいと思うけど、screen のセッション内で
分けてもあまり意味がない気がする。
でもさくっと screen のセッション内で共有するのはならないか。設定とかで。
端末毎の別管理をやめるとかなら sudo の設定であるかもしれないけど。
2012/03/17(土) 15:15:15.13
>>458
sudoの作りは知らんけど、端末上で実行するプログラムから見ると、普通は
screenの別windowと端末の別ウインドウは区別できないからね。
2012/03/17(土) 16:35:51.39
>>458
window間じゃなくて、ホスト内で共通のticket timeoutだったんじゃないの?
(screen内に暮らしていると、どっちも同じ事ではあるんだけども)
sudoers(5)のtty_ticketsがoff。要するにsudo(8)の話題。
2012/03/17(土) 21:17:49.96
うんそう。書き方が悪かったね。window 間共有は本質として書いた訳じゃない。
tty_tickets の設定か。thx.

で言いたかったのは screen 内では端末毎に分けてもあまり意味ないし
STY あたりで分けてるといいかなー(環境変数を使う訳にはいかないだろうけど)という
screen user の勝手な考え、だったんだけど…
よく考えたら screen 内で sudo 使ったんなら外からアタッチできるんだし、
突き詰めると端末、セッションで分けても意味ないね。
# 突き詰めなければ少しは意味あるか。STY あったらそれで分けるとかで。

いつも screen 内なら tty_tickets off でいいのかもな。
2012/03/17(土) 23:50:29.84
つーか俺は常にオフ。
sudoの仕様が変わった時から。
2012/05/31(木) 09:11:09.99
windowsからputtyでmulti display modeなscreenをアタッチしたときに文字コードがリセットされちゃいます。
毎度:encoding utf-8 utf-8しないといけないぽです。
linuxではこんなこと無いんですが、freebsdだとなってしまいます。
何か原因あったりするんでしょうか。

以下抜粋です
> grep encoding ~/.screenrc
defencoding utf-8 utf-8
encoding utf-8 utf-8
> cat /var/db/ports/screen options
_OPTIONS_READ=screen-4.0.3_8
WITH_CJK=true
WITH_INFO=true
WITH_MAN=true
WITH_NETHACK=true
WITHOUT_XTERM_256=true
WITHOUT_HOSTINLOCKED=true
WITHOUT_SHOWENC=true
2012/08/20(月) 00:17:16.90
screen縦分割ってそろそろ標準になった?
まだ?
後、分割を1つのセッションにしてC-a nで別セッションでは一画面、更に別のセッションでは横分割みたいにしたいんだが
まだかね?

2012/09/05(水) 05:53:51.29
byobuの話題もここでいい?

ステータスに任意の監視項目を追加するために、man byobu にあるサンプルを
~/.byobu/bin配下に作ってみたんだけど、うまく表示されない。

#!/bin/sh
printf "\005{= bw}%s\005{-}" "$(uname -r)"

海外のフォーラムでも話題になったようなんだけど、わかるかた
何かアドバイスください。

http://unix.stackexchange.com/questions/41596/colour-bleeds-right-when-writing-a-custom-script-in-byobu
2012/09/24(月) 10:04:55.70
>>463
putty(ssh client)側の環境変数LANGとかLC_*とかの設定じゃないのか?
467463
垢版 |
2012/11/17(土) 02:31:53.60
>>466
亀レスに亀レスなんだけどありがとう。今試したらばっちり問題解決されますた!
468名無しさん@お腹いっぱい。
垢版 |
2013/03/21(木) 10:09:27.40
保守
2013/05/08(水) 02:40:35.63
screen内で新規作成されたセッションのシェルって、最初にそのscreenを作ったときの環境変数とかを引き継いだりしますか?
それとも純粋なログインシェルとして処理されますか?
2013/05/09(木) 00:45:24.53
>>469
env HOGe=hoge screenで起動してみたら、引き継がれるっぽいね。
2013/05/09(木) 23:25:22.07
>>470
ありがとうございます。どうもそうみたいですね。
何個もセッションがある状態で.zshenvや.zshrcを書き換えると、全セッションを落として
screenを作り直すのがすごい億劫になってしまいますね。
2013/05/10(金) 08:11:31.35
screenを起動したマシンでssh-agentを起動するのをつい忘れて、
手元のマシンからのagent forwardingでscreenを起動してしまうと
$SSH_AUTH_SOCK的な意味ですごく億劫になる。
2013/05/10(金) 11:37:27.69
ssh-agentやdisplayをどうするかというのは悩ましいところだよね
最近はめんどくなって、ログインするホスト全部に鍵(しかもパスフレーズなし)を置いちゃってるし…
2013/05/12(日) 00:17:45.78
ホームディレクトリを共通化したらssh楽になったYO!
sshを受けるgatewayでscreenをたてっぱで楽ちんだYO!
2013/05/12(日) 00:55:45.14
それ普通やん
2013/06/09(日) 22:57:29.68
セッション内で何個もウィンドウを立ち上げたまま長期間使い続けてると
セッションが死ぬことがある
いまいち再現性がなくて厄介だわ
2013/06/10(月) 06:53:24.62
エスパーするとシェルのTMOUT変数とか?
2013/06/10(月) 23:21:06.78
>>477
zshなんだけどTMOUTはセットされてなかった
長期間というのは2,3週間くらいかな
いちおう環境晒すとCentOS6.2、zsh 5.0.2、screen 4.01.00dev
2013/06/11(火) 06:25:47.58
>>478
ゴミファイルを消すcronのスクリプトが、
screen用のソケットファイルを古いと思って消してしまってるとか?
2013/06/12(水) 00:00:55.33
>>479
cronは自分ではいじってないんだけど、デフォでそんな設定になってるっけ?
あとで確認してみます

てか、screenが死ぬなんてのはやはりレアなことなのか…
481480
垢版 |
2013/06/15(土) 15:00:12.18
調べたら普通にcronで/tmp以下を削除するtmpwatchの設定がされてた。
てか、/tmpを掃除するのがcronの仕事だと今頃知った・・・

でも最終アクセス日時から10日以上が対象だから、screenソケットファイルは
まず対象にならないはずだけど、いちおうチェックしてみます。
2013/08/08(木) NY:AN:NY.AN
少し長いですが質問いたします。

[prefix] Ctrl-H を prev に設定しているんですが、ローカル(Fedora Linuxとか)でxtermを
立ち上げる場合もあれば、Winodwsからputtyで接続したり、あるいはVNCでログインして
xtermを立ち上げる場合もあります。
しかもWinodwsではyamyというキーバインドソフトで常時Ctrl-HをBackspaceにしています。

こういう状況で、設定をいじったりしているうちにprevが効かなくなって困ることがあるのですが、
この手のトラブルはどういう風に調べて解決していけばいいですか?
あと、このような複数の接続方法に共通の.screenrcを使うのはそもそも推奨されないことですか?

# screenrcは他人のをパクったレベルの人間なので、キーコードとかtermcapとかの仕組みは
何度調べても理解できず、自分的に鬼門になっています・・・。
483482
垢版 |
2013/08/08(木) NY:AN:NY.AN
あ、もちろんyamyをオフにしておくというのは試しています。が、不思議なことに
[prefix] Ctrl-H の効き具合に影響があったことはないです。
2013/08/08(木) NY:AN:NY.AN
BS(0x08)とDEL(0x7F)を交換してるやつがどこかに潜んでいるんじゃないの?
Linuxの端末エミュレータにはこの手の余計な世話するのがいるよ

[prefix] DEL も prev に設定しておけばよい
485482
垢版 |
2013/08/10(土) NY:AN:NY.AN
>>484
レスありがとうございます。
.screenrcで bind ^? prev と書けばいいのかな、と思ったら駄目でした。
実際にどんなキーコードがscreenへ送られているのか調べる方法があればなぁ・・・
2013/08/11(日) NY:AN:NY.AN
Ctrl+v → BS とか Ctrl+v → DEL とかそんなん。
487482
垢版 |
2013/08/13(火) NY:AN:NY.AN
GNOME端末のプロファイル設定でBSキーのコードがASCII DELになっていたのを
Ctrl-Hに変えると解決しました。Ctrl-v もちゃんと ^? から ^H に変わってました。

でも、今までシェルとかでは普通にバックスペースの動作になったんですよね。
シェルが^?も^HもBSとして解釈してるからかな?いまいちよく分からんです。

というわけで皆様お騒がせしました。ありがとうございました。
488名無しさん@お腹いっぱい。
垢版 |
2013/09/27(金) 10:35:38.02
今動かしてるshを、screenで拾いたいんだけど
どうしたらできるかな
2013/09/27(金) 10:50:06.16
無理じゃね。
2013/09/27(金) 11:53:12.77
無理だね
2013/09/27(金) 17:00:09.92
tmuxは出来る
2013/09/28(土) 01:13:10.62
>>491
kwsk
2013/09/28(土) 09:43:13.72
しったかにかまうな
2013/11/21(木) 03:01:57.01
reptyr使えばできるよ
linuxしか無理だけどね
2014/01/23(木) 06:40:29.45
grepの実行結果が、端末の一番右端の文字が「.」だとスペースに置き換わってしまうんだけど、何故だろう
screenじゃない素の端末だとそんなことないんだけど
2014/01/23(木) 06:48:06.27
どうも端末がGnome terminalで、grepにオプション--colorを付けてるときに起きるみたい

screenと端末って相性みたいなのあるんですかね?
2014/01/30(木) 03:09:09.66
neercs ってやつ使ったことある人いる?
498名無しさん@お腹いっぱい。
垢版 |
2014/03/20(木) 13:11:45.88
byobuを布教されたんだが、凄いのかこれは?
2014/03/21(金) 00:53:39.32
>>498
screen/Tmuxをカスタマイズをしなくても便利に使える感じかな
2014/03/28(金) 03:42:11.64
hardstatus のアクティブウィンドウ前後のウィンドウって %-w や %+w でしか指定できなくて、
パターンも「%n %t」で固定されちゃってるけど、細かく設定できるようにならんのかなぁ

screenしか使ったことないんだけどtmuxやbyobuだったらできたりする?
2014/05/06(火) 15:37:43.56
screen-4.2.1が出たらしい
http://ftp.gnu.org/gnu/screen/

Debianパッチの反映かな?

最近サイド3から 2ch.netに書き込めなくなった
いまフォンブラウン市から書き込んでる
2014/05/06(火) 15:39:03.79
あれ トリップが違う
間違えたかな?
2014/05/20(火) 11:55:55.15
一つ前に copy したものを paste することってできませんか?
(Emacsでいうキルリングの C-y M-m みたいに)
2014/05/20(火) 11:57:19.75
間違えました、C-y M-m ではなく C-y M-y でした
2014/10/04(土) 18:00:55.79
splitで画面を分割してるときにマウスホイールでスクロールさせることは可能ですか?
2014/10/05(日) 10:47:01.57
はい、可能です。
507名無しさん@お腹いっぱい。
垢版 |
2014/10/28(火) 09:26:35.45
すでに起動しているシェルを
あとからscreenに取り込みたい
けど、そんなことできないよね?
508名無しさん@お腹いっぱい。
垢版 |
2014/10/31(金) 03:53:42.77
Linuxならreptyr使えるんじゃない?
使ったことないけど。
2014/11/01(土) 18:01:56.90
次スレから端末多重接続総合スレにしない?
2014/11/01(土) 18:17:24.19
5年後におぼえてたらまた提案してくれ
2015/01/24(土) 23:03:49.53ID:i5bMP+YY!
保守
2015/01/27(火) 02:06:30.12
screen上だとnmonがうまく表示されん
まぁglancesとか他の使えばいいか
2015/02/09(月) 00:34:40.36
>>509
> 次スレから端末多重接続総合スレにしない?

screen と tmux派でケンカ始めたりしない?
2015/02/09(月) 09:49:45.67
> 端末多重接続
日本語に無理矢理直してる感が酷いな
スクリーンマルチプレクサでいいじゃねーか
2015/02/09(月) 20:29:20.69
実質screenとtmuxだけなんだからscreen/tmuxでいいだろ
まあ次スレが必要になるのは5年後だがな
レスを投稿する

5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況