起動時に画面の競合をデバッグ/修正する方法

起動時に画面の競合をデバッグ/修正する方法

(これはOS X版のGnu画面に関する質問です。違いがあるかどうかはわかりません。UnixとLinuxはAsk Differentよりもscreen-fuが優れているようです)。

マイコンピュータの端末に次のコマンドを入力すると、

screen -dRR my_session_name

できる新しい画面セッションにアクセスしてください。

SSHを介してすでに実行されているセッションを再接続できるようです。

screen -R my_session_name

しかし、新しいセッションを作成します(他のセッションが存在するかどうかにかかわらず、最も残念なことは他のセッションが存在しない場合です)。保留、エスケープする唯一の方法は、^Zバックグラウンドにスライドさせてfg作業を再開することです。この時点でジョブが終了したことを示すメッセージが表示されます(Sorry, cannot contact session "processnumber.tty.hostname" again.)。

sudo dtruss screen私はMac OS Xのバージョンで実行しようとしましたがstrace(非常に冗長です)出力で何を見つけるべきかわかりません。

私はしばらく私のコンピュータから離れて(他の都市で数日を過ごしました)、新しいスクリーンセッションを始める必要があります!

私のもの~/.screenrc

# Set the shell to use fish:
shell "/usr/local/bin/fish"

# Make xterm scrolling work properly with screen.
# Note, this works in Terminal.app and iTerm too.
#termcapinfo xterm-256color|xterm-color|xterm|xterms|xs|rxvt ti@:te@

# Custom escape character like this:
escape ^Xx

# always create these sessions for me:
screen -t "foo" 1

# test to see if I can create new screens from SSH in any way:
#nonblock on

ご覧のとおり、私はこの問題を解決するためにさまざまなオプションを追加してコメントしました。 (今は、を使用したり、使用しなかったりfishbash使用したり、使用したりせずに外部セッションfishとを使用してみました。)また、非常に高速で遅い接続でも同じ動作を確認しました。bashnoblockscreen -t

次のいずれかの情報を提供していただきありがとうございます。

  • 問題を見つけるための提案(strace / dtrace出力の重要な部分、その他)
  • 新しい.screenrcオプションの提案、
  • 何か全く違うんですか?

より多くの情報を投稿することができてうれしいですが、dtruss長さが数百行に達するので、全体の出力を避けたいと思います。

ベストアンサー1

この場合、水平回答はOS X専用です。

1つのオプションとこの例で使用するオプションは次のとおりです。

何かを使ってローカルで起動するとscreen動作します。その後、セッションに再接続します。

私は新しいTerminal.appウィンドウを開き、要求されたコマンドを実行するAppleスクリプトを生成して実行するPythonプログラムを作成しました。 SSHを使用している場合でも(明らかにアカウントはGUIにログインする必要があります)、システム自体で動作します。

「osxhijack」と呼ばれ、githubにあります。ここ。あなたはこれを次のように呼びます:

hijack screen -dRR my_new_session

その後、次を使用してすぐに再接続できます。

screen -R my_new_session

「実際の」回答が出たら(画面のインストールに問題がある場合など)、この質問を新しい回答に更新します。

おすすめ記事