ミッドナイトコマンダーのスロースタート


19

mc開くのに10〜30秒かかるのを防ぐ方法はありますか?


1
でコンパイルしました--enable-vfs-smbか?機能を無効にしてみてください。バージョン4.8.4の一般的な問題のようです:mcの起動が非常に遅い
Marco

2
実行strace -r -tt -o mc.strace mcして、時間がかかっている場所を確認します。解釈にヘルプが必要な場合は、トレースファイルをアップロードします。トレースファイルにはプライベート情報(少なくともファイル名)が含まれている場合があり、アップロードする前に必要に応じてそれを確認してサニタイズすることに注意してください。
ジル 'SO-悪であるのをやめる'

1
同じ問題があり、ホスト名を/ etc / hostsに追加し(もちろん127.0.0.1として)、すべてが完璧になりました

回答:


5

それは今私のために働いています。私は使っている

GNU Midnight Commander 4.8.21

長時間トレースを待つ

connect(3, {sa_family=AF_INET, sin_port=htons(6011),
  sin_addr=inet_addr("x.x.x.x")}, 16) = ? ERESTARTSYS
  (To be restarted if SA_RESTART is set)' 

私はこれを試しました:

# hostname

これを使用する/etc/hosts

nameofhost=hostname

で始まるオンラインにこれ$nameofhostを追加/etc/hostsします

127.0.0.1 localhost ... $nameofhost 

乾杯!



10

実際に/ etc / hostsを編集して問題を解決しました。
起動時にmcがローカルホスト名をIPアドレスに解決しようとするため、mcの起動に10秒かかりました。
/ etc / hostsに次の行(ホスト名はFOO)を追加しました 127.0.0.2 FOO.domain FOO 。これで問題はすぐに解決しました。


なぜ使用した127.0.0.2が、使用しなかったの127.0.0.1ですか?
薄暗い

127.xyzのx、y、zはすべて同様に機能します(IP範囲全体がローカルマシン用に予約されています)
-ggpp23

5

小切手

host `hostname`

迅速な結果を得る

MCは最初にホスト名を使用して内部サービスに接続します

Fedora 18の同様の状況で、/ etc / hostsにホスト名の値を追加すると役立ちます。


mc内部サービス?/ etc / hostsの変更を必要としないようにmcを修正するためにいくつかの構成を変更できますか?または/ etc / hostsが壊れていて、mcはそれが修正されることを期待していますか?
アクエリアスパワー

ああ、私はちょうどこれがここで動作することを発見しました:alias mc='TERM=linux mc'
水瓶座パワー

本当に、/ etc / hostsはある観点からは壊れています。独自のホスト名を独自のIPに解決することはできません。mcがそこに依存している理由はわかりません。
mmv-ru

1
どういう意味host 'hostname'ですか?と同じhost 'aaaa'host 'aaab'および存在しないホストの無限リストを返します。MCが存在しないホストを解決しようとしているという意味ですか?
薄暗い

申し訳ありませんが、一重引用符の代わりにアポストロフィが必要です。回答が修正されました。何らかの方法ではい。MCはホスト名で自分のサーバーに接続するため、存在しないホストを取得して何度も試行します。
mmv-ru

4

サブシェル(Ctrl-Oを押すと表示される)を開始し、サブシェルが開始されたときにのみUIを表示するため、起動が遅くなる場合があります。私はzshを使用してい~/.zshrcますが、ファイルmcをすぐに削除すると、気づきました。


2
バックグラウンドでサブシェルを起動することで改善できる可能性については、midnight-commander.org / ticket / 3580を参照してください。
アレブ

それで、それを再コンパイルする必要がありますか?
パナヨティス

3

開始するのに約10秒かかりましたmc。実行strace -r -tt -o mc.strace mc中:

...
 0.000023 pipe([7, 8])              = 0
 0.000028 clone(child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x7fcad000fa50) = 3332
 0.000247 write(5, " PROMPT_COMMAND=${PROMPT_COMMAND"..., 75) = 75
 0.000050 rt_sigaction(SIGINT, {0x449960, [], SA_RESTORER, 0x7fcaced23740}, NULL, 8) = 0
 0.000034 select(8, [5 7], NULL, NULL, {10, 0}) = 1 (in [5], left {9, 999996})
 0.000039 read(5, " PROMPT_COMMAND=${PROMPT_COMMAND"..., 128) = 76
 0.000032 select(8, [5 7], NULL, NULL, {9, 999996}) = 1 (in [5], left {9, 985005})
 0.015050 read(5, "[yuri@yuri ~]  PROM", 128) = 19
 0.000031 select(8, [5 7], NULL, NULL, {9, 985005}) = 1 (in [5], left {9, 985001})
 0.000036 read(5, "PT_COM", 128)    = 6
 0.000026 select(8, [5 7], NULL, NULL, {9, 985001}) = 1 (in [5], left {9, 984998})
 0.000033 read(5, "MAND=", 128)     = 5
 0.000026 select(8, [5 7], NULL, NULL, {9, 984998}) = 1 (in [5], left {9, 984995})
 0.000033 read(5, "${PR", 128)      = 4
 0.000025 select(8, [5 7], NULL, NULL, {9, 984995}) = 1 (in [5], left {9, 984992})
 0.000034 read(5, "OMPT", 128)      = 4
 0.000025 select(8, [5 7], NULL, NULL, {9, 984992}) = 1 (in [5], left {9, 984989})
 0.000034 read(5, "_COM", 128)      = 4
 0.000026 select(8, [5 7], NULL, NULL, {9, 984989}) = 1 (in [5], left {9, 984986})
 0.000034 read(5, "MAND", 128)      = 4
 0.000025 select(8, [5 7], NULL, NULL, {9, 984986}) = 1 (in [5], left {9, 984983})
 0.000033 read(5, ":+$", 128)       = 3
 0.000025 select(8, [5 7], NULL, NULL, {9, 984983}) = 1 (in [5], left {9, 984980})
 0.000033 read(5, "PRO", 128)       = 3
 0.000025 select(8, [5 7], NULL, NULL, {9, 984980}) = 1 (in [5], left {9, 984977})
 0.000033 read(5, "MPT", 128)       = 3
 0.000025 select(8, [5 7], NULL, NULL, {9, 984977}) = 1 (in [5], left {9, 984974})
 0.000033 read(5, "_CO", 128)       = 3
 0.000025 select(8, [5 7], NULL, NULL, {9, 984974}) = 1 (in [5], left {9, 984971})
 0.000033 read(5, "MMA", 128)       = 3
 0.000026 select(8, [5 7], NULL, NULL, {9, 984971}) = 1 (in [5], left {9, 984968})
 0.000032 read(5, "ND;", 128)       = 3
 0.000025 select(8, [5 7], NULL, NULL, {9, 984968}) = 1 (in [5], left {9, 984965})
 0.000033 read(5, " }", 128)        = 2
 0.000026 select(8, [5 7], NULL, NULL, {9, 984965}) = 1 (in [5], left {9, 984962})
 0.000033 read(5, "'pw", 128)       = 3
 0.000025 select(8, [5 7], NULL, NULL, {9, 984962}) = 1 (in [5], left {9, 984959})
 0.000033 read(5, "d>", 128)        = 2
 0.000026 select(8, [5 7], NULL, NULL, {9, 984959}) = 1 (in [5], left {9, 984956})
 0.000032 read(5, "&8;", 128)       = 3
 0.000026 select(8, [5 7], NULL, NULL, {9, 984956}) = 1 (in [5], left {9, 984953})
 0.000032 read(5, "ki", 128)        = 2
 0.000025 select(8, [5 7], NULL, NULL, {9, 984953}) = 1 (in [5], left {9, 984950})
 0.000033 read(5, "ll ", 128)       = 3
 0.000026 select(8, [5 7], NULL, NULL, {9, 984950}) = 1 (in [5], left {9, 984947})
 0.000032 read(5, "-S", 128)        = 2
 0.000025 select(8, [5 7], NULL, NULL, {9, 984947}) = 1 (in [5], left {9, 984944})
 0.000033 read(5, "TO", 128)        = 2
 0.000025 select(8, [5 7], NULL, NULL, {9, 984944}) = 1 (in [5], left {9, 984941})
 0.000033 read(5, "P ", 128)        = 2
 0.000025 select(8, [5 7], NULL, NULL, {9, 984941}) = 1 (in [5], left {9, 984938})
 0.000033 read(5, "$$", 128)        = 2
 0.000033 select(8, [5 7], NULL, NULL, {9, 984938}) = 1 (in [5], left {9, 984935})
 0.000034 read(5, "'\r\n", 128)     = 3
 0.000025 select(8, [5 7], NULL, NULL, {9, 984935}) = 1 (in [5], left {9, 984886})
 0.000082 read(5, "bash: PROMPT_COMMAND: line 1: sy"..., 128) = 128
 0.000033 select(8, [5 7], NULL, NULL, {9, 984886}) = 1 (in [5], left {9, 984882})
 0.000071 read(5, "tory -r; ; pwd>&8;kill -STOP $$'"..., 128) = 48
 0.000061 select(8, [5 7], NULL, NULL, {9, 984882}) = 0 (Timeout)
 9.995037 rt_sigaction(SIGINT, {SIG_IGN, [], SA_RESTORER, 0x7fcaced23740}, NULL, 8) = 0
 0.000090 write(1, "\33[?1001s\33[?1002h\33[?1006h", 24) = 24
 0.000066 write(1, "\33[?2004h", 8) = 8
 0.000034 geteuid()                 = 1000
 0.000064 access("/home/yuri/.config/mc/filehighlight.ini", R_OK) = -1 ENOENT (No such file or directory)
 0.000061 access("/etc/mc/filehighlight.ini", R_OK) = 0
 0.000042 access("/etc/mc/filehighlight.ini", R_OK) = 0
 0.000044 stat("/etc/mc/filehighlight.ini", {st_mode=S_IFREG|0644, st_size=1119, ...}) = 0
 0.000035 open("/etc/mc/filehighlight.ini", O_RDONLY) = 9
...

この出力を見てmc、空PROMPT_COMMANDPROMPT_COMMAND= mc)から始めることにしましたが、すぐに始まりました。私はおそらくそこに共通していた:

history -a; history -c; history -r;

UPDさらに掘り下げてみると、履歴とは関係がないことがわかります(PROMPT_COMMAND=';' strace -r -tt -o mc.strace -s 1000 mc)。

 0.000197 write(5, " PROMPT_COMMAND=${PROMPT_COMMAND:+$PROMPT_COMMAND; }'pwd>&8;kill -STOP $$'\n", 75) = 75
 0.000068 rt_sigaction(SIGINT, {0x449960, [], SA_RESTORER, 0x7f12567fc660}, NULL, 8) = 0
 0.000049 select(8, [5 7], NULL, NULL, {10, 0}) = 1 (in [5], left {9, 999996})
 0.000055 read(5, " PROMPT_COMMAND=${PROMPT_COMMAND:+$PROMPT_COMMAND; }'pwd>&8;kill -STOP $$'\r\n", 128) = 76
 0.000050 select(8, [5 7], NULL, NULL, {9, 999996}) = 1 (in [5], left {9, 981008})
 0.019073 read(5, "bash: PROMPT_COMMAND: line 0: syntax error near unexpected token `;'\r\nbash: PROMPT_COMMAND: line 0: `;'\r\n", 128) = 105
 0.000041 select(8, [5 7], NULL, NULL, {9, 981008}) = 1 (in [5], left {9, 980786})
 0.000292 read(5, "[\33[1;30myuri\33[0m@\33[1;33myuri\33[0m ~]  PROM", 128) = 41
 0.000070 select(8, [5 7], NULL, NULL, {9, 980786}) = 1 (in [5], left {9, 980782})
 0.000075 read(5, "PT_COMMAN", 128) = 9
 0.000061 select(8, [5 7], NULL, NULL, {9, 980782}) = 1 (in [5], left {9, 980778})
 0.000058 read(5, "D=${PRO", 128)   = 7
 0.000047 select(8, [5 7], NULL, NULL, {9, 980778}) = 1 (in [5], left {9, 980775})
 0.000059 read(5, "MPT_CO", 128)    = 6
 0.000048 select(8, [5 7], NULL, NULL, {9, 980775}) = 1 (in [5], left {9, 980772})
 0.000058 read(5, "MMAND", 128)     = 5
 0.000047 select(8, [5 7], NULL, NULL, {9, 980772}) = 1 (in [5], left {9, 980768})
 0.000056 read(5, ":+$P", 128)      = 4
 0.000047 select(8, [5 7], NULL, NULL, {9, 980768}) = 1 (in [5], left {9, 980764})
 0.000057 read(5, "ROMPT", 128)     = 5
 0.000047 select(8, [5 7], NULL, NULL, {9, 980764}) = 1 (in [5], left {9, 980761})
 0.000056 read(5, "_COM", 128)      = 4
 0.000047 select(8, [5 7], NULL, NULL, {9, 980761}) = 1 (in [5], left {9, 980758})
 0.000057 read(5, "MAND", 128)      = 4
 0.000046 select(8, [5 7], NULL, NULL, {9, 980758}) = 1 (in [5], left {9, 980755})
 0.000057 read(5, "; }'", 128)      = 4
 0.000046 select(8, [5 7], NULL, NULL, {9, 980755}) = 1 (in [5], left {9, 980752})
 0.000056 read(5, "pwd>", 128)      = 4
 0.000047 select(8, [5 7], NULL, NULL, {9, 980752}) = 1 (in [5], left {9, 980749})
 0.000057 read(5, "&8;k", 128)      = 4
 0.000047 select(8, [5 7], NULL, NULL, {9, 980749}) = 1 (in [5], left {9, 980746})
 0.000057 read(5, "ill", 128)       = 3
 0.000058 select(8, [5 7], NULL, NULL, {9, 980746}) = 1 (in [5], left {9, 980743})
 0.000057 read(5, " -ST", 128)      = 4
 0.000046 select(8, [5 7], NULL, NULL, {9, 980743}) = 1 (in [5], left {9, 980740})
 0.000058 read(5, "OP ", 128)       = 3
 0.000046 select(8, [5 7], NULL, NULL, {9, 980740}) = 1 (in [5], left {9, 980736})
 0.000056 read(5, "$$'\r\n", 128)   = 5
 0.000048 select(8, [5 7], NULL, NULL, {9, 980736}) = 1 (in [5], left {9, 980721})
 0.000069 read(5, "bash: PROMPT_COMMAND: line 1: syntax error near unexpected token `;;'\r\nbash: PROMPT_COMMAND: line 1: `;; pwd>&8;kill -STOP $$'\r\n", 128) = 128
 0.000049 select(8, [5 7], NULL, NULL, {9, 980721}) = 1 (in [5], left {9, 980713})
 0.000062 read(5, "[\33[1;30myuri\33[0m@\33[1;33myuri\33[0m ~] ", 128) = 36
 0.000047 select(8, [5 7], NULL, NULL, {9, 980713}) = 0 (Timeout)
 9.990855 rt_sigaction(SIGINT, {SIG_IGN, [], SA_RESTORER, 0x7f12567fc660}, NULL, 8) = 0

私のmc結論はPROMPT_COMMAND、それが間違った方法で混乱しているということです。PROMPT_COMMANDが含まれている場合;、bashエラーをトリガーするように変更されます。そのため、記述子8には何も書き込まれず、タイムアウトまでプロセスがブロックされます。私が間違っている場合、私を修正します。


1
これは古い答えであり、すべてです。しかし、私は幸運かもしれませんが、straceの出力から何かが間違っていると結論付ける理由を説明してくださいPROMPT_COMMAND。私は同じ問題を抱えていましたが、history -a自分から削除することで解決しましたPROMPT_COMMANDが、なぜそれが役立つのかselect(8, [6,7], ...)分かりません。その間の接続がどこにあるのかわかりません(明らかにタイムアウトでMCのスローダウンを引き起こします)。たぶん、あなたは私が解決策を理解するのを手伝うことができます。
デギル

@degill更新された回答をご覧ください。
x-yuri

更新していただきありがとうございます!あなただけ入れて、正しい;PROMPT_COMMANDタイムアウトのと同じ効果を持っていません。私history -aPROMPT_COMMAND(内~/.local/share/mc/bashrc)に追加し直し、すべてが正常に機能することを知っています。それでも興味深いのは;
デギル

4
上流のバグエントリはmidnight-commander.org/ticket/3534にあります。
エグモント

2

私は非常に長い間この問題を抱えていましたが、Midnight Commanderを使用しなくなりました

しかし、私は最近解決策を見つけました!!! 私の場合、それは私の代替シェルにのみ関連していました。私は魚を使用しています。http://fishshell.com/

この2つを一緒に使用してもうまくいきません。スクリプトを変更して、mcが魚ではなくbashを使用するようにしました。


そして、なぜ魚はそのような問題を引き起こすのでしょうか?
カウンターモード

2

FreeBSDで同じ問題を解決しました。/etc/hosts次の方法で編集する方が正しいと思います:

127.0.0.1 localhost localhost.my.domain myhost.my.domain myhost

ので、hostsファイルエントリの構文は次のとおりです(参照- Linuxのマニュアルページのホスト(5) :)

IP_address canonical_hostname [aliases...]

したがって、hostsファイルに次のようなものを追加するだけの場合

127.0.0.2 myhost.my.domain myhost

その後、あなたが取得します

root@myhost:~# ping myhost
PING myhost.my.domain (127.0.0.2): 56 data bytes
ping: sendto: Can't assign requested address
ping: sendto: Can't assign requested address
ping: sendto: Can't assign requested address
ping: sendto: Can't assign requested address
^C
--- myhost.my.domain ping statistics ---
4 packets transmitted, 0 packets received, 100.0% packet loss

ただしhosts、最初の例のようにファイルを編集すると、正しいping回答が得られます。

root@myhost:~# ping myhost
PING localhost (127.0.0.1): 56 data bytes
64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.060 ms
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.050 ms
64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.030 ms
64 bytes from 127.0.0.1: icmp_seq=3 ttl=64 time=0.040 ms
64 bytes from 127.0.0.1: icmp_seq=4 ttl=64 time=0.046 ms
64 bytes from 127.0.0.1: icmp_seq=5 ttl=64 time=0.036 ms
^C
--- localhost ping statistics ---
6 packets transmitted, 6 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 0.030/0.044/0.060/0.010 ms

MCは両方の方法で高速に起動します。


2
mc -X

私のために働いた(xtermは無効)


これも私にとって問題でした。DISPLAY環境変数はに設定されましたがlocalhost:10.0、ディスプレイなしでそのサーバー上でリッスンしているXサーバーはありませんでした。
fviktor

-1

行「searchwhatever.something」を削除してみてください /etc/resolv.conf

/etc/hosts 次の行が必要です。

127.0.0.1 localhost

127.0.0.2 hostname.domain hostname

「hostname」はホスト名で、「domain」はドメインです。


これは、マシンが「ネット」に接続されていない場合にのみ意味があります。そのファイルはDHCPによって書き込まれます(またはインターネット接続が構成されている場合)。
フォンブランド
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.