web-dev-qa-db-ja.com

mcの起動が遅い

Ssh(ubuntu)経由でシステムにログインします。最近、コマンドプロンプトから直接mcを起動すると、起動しておなじみの2ペイン画面が表示されるまでに時間がかかります。また、コマンドプロンプトサブシェル(ctrl-oを使用)にドロップできません。 tmuxで起動するとすぐに起動し、ctrl-oは正常に動作します。

いくつかの環境設定が途方もない失速を引き起こしているようですが、私はそれを特定することはできません。誰か助けてもらえますか?

ありがとう、ジョン

2
ebahn

mcは、bash(画面下部のコマンドライン用にフォークするシェル)からの応答を待ってタイムアウトしています。タイムスタンプをスクロールすると、タイムアウトを見つけることができます。 _man select_に従って、問題のシステムコールは、指定されたファイル記述子への入力を待ちます。成功したトレースでは、FD7はpipe()によって以前に作成されています。これは子プロセスへのパイプです。成功した場合、bashプロンプト_jon@sonic:~$_がパイプから正常に読み取られていることがわかりました。最後にどうやって見つけたのか覚えていません、ごめんなさい。

execvを検索すると、_jon@sonic:~$_を書き込むpidがbashであることが確認されます。それから私はたまたま失敗した場合のどこかでtmuxが開始されていることに気づきました。 mctmuxをシェルとして実行するのが好きだとは思えません!

tmuxを実行するbash起動スクリプトが必要です。すでにtmux内にある場合は、実行を回避します。 。したがって、mcの内側のtmuxは問題ありませんが、外側では問題ありません。

tmuxは、bashサブシェルに対して実行されるスクリプトではなく、loginスクリプトから開始するようにします。これは、_.bash_profile_ではなく_.bashrc_を意味します。私の考えと一致するこれに関するいくつかの情報がここにあります: https://Apple.stackexchange.com/questions/71929/how-to-change-mc-midnight-command-bash-Prompt-on-os-x

2
sourcejedi

ありがとう、sourcejedi-あなたは頭に釘を打ちました。私は最近、ログイン時にtmuxを自動起動するために、.bashrcにいくつかの行を追加しました-当たり前です!私はそのつながりに気づいたはずだった。これが、mc内から(ctrl-oを使用して)サブシェルにドロップできなかった理由でもあります。参考までに、tmuxを開始する行は次のとおりです。

# enable autostart of tmux
if [[ "$TERM" != "screen" ]] ; then
# &&  [[ "$SSH_CONNECTION" == "" ]]; then
    # Attempt to discover a detached session and attach 
    # it, else create a new session

    WHOAMI=$(whoami)
    if tmux has-session -t $WHOAMI 2>/dev/null; then
        tmux -2 attach-session -t $WHOAMI
    else
        tmux -2 new-session -s $WHOAMI
    fi
fi

大失敗。これを.bash_profileに移動しましたが、すべてが機能します。ありがとう!

ジョン

(ところで、私は元の投稿者です。openauthでログインしないとしゃっくりが発生し、間違った/新しいアカウントで投稿されました)

1
ebahn