Awal yang lambat dari Midnight Commander


19

Apakah ada cara untuk mencegah mcpembukaan 10-30 detik?


1
Apakah Anda mengompilasinya --enable-vfs-smb? Coba nonaktifkan fitur ini. Tampaknya menjadi masalah umum dengan versi 4.8.4: mc memulai sangat lambat
Marco

2
Berlari strace -r -tt -o mc.strace mcuntuk melihat di mana ia membutuhkan waktu. Unggah file jejak jika Anda perlu bantuan menerjemahkannya. Perhatikan bahwa file jejak dapat berisi informasi pribadi (setidaknya nama file), lihat dan bersihkan jika perlu sebelum mengunggah.
Gilles 'SO- stop being evil'

1
memiliki masalah yang sama, menambahkan nama host ke / etc / hosts (seperti 127.0.0.1, tentu saja), semua menjadi sempurna

Jawaban:


5

Ini bekerja untuk saya sekarang. saya menggunakan

GNU Midnight Commander 4.8.21

strace menunggu lama

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)' 

Saya mencoba ini:

# hostname

gunakan ini untuk /etc/hosts:

nameofhost=hostname

tambahkan ini $nameofhostke /etc/hostsbaris on yang dimulai dengan

127.0.0.1 localhost ... $nameofhost 

Bersulang!


12

integrasi mc / subkulit adalah penyebab sering; untuk memverifikasi, coba:

alias mc="mc --nosubshell"

1
Ini adalah satu-satunya solusi yang berhasil untuk saya. Saya dapat melihat bahwa saya memiliki akses ke cmd-o, tetapi saya tidak dapat mengetikkan perintah apa pun.
Panayotis

tidak bekerja untuk saya
stiv

10

Sebenarnya mengedit / etc / hosts memecahkan masalah bagi saya.
MC saya membutuhkan waktu 10 detik untuk memulai karena fakta bahwa selama startup mc mencoba untuk menyelesaikan nama host lokal ke alamat IP.
Saya menambahkan ke / etc / hosts baris berikut (nama host saya adalah FOO) 127.0.0.2 FOO.domain FOO Itu langsung memecahkan masalah.


Mengapa Anda menggunakan 127.0.0.2tetapi tidak 127.0.0.1?
Dims

setiap x, y, z dalam 127.xyz akan bekerja sama baiknya (seluruh rentang IP dicadangkan untuk mesin lokal)
ggpp23

5

Memeriksa

host `hostname`

dapatkan hasil cepat

MC menggunakan nama host pada awalnya untuk terhubung ke layanan internal

Dalam situasi yang sama pada Fedora 18 saya menambahkan nilai hostname ke / etc / hosts dan itu membantu.


layanan internal mc? mungkin kita bisa mengubah beberapa konfigurasi untuk memperbaiki mc agar tidak perlu mengubah / etc / hosts? atau apakah / etc / hosts rusak dan mc mengharapkannya diperbaiki?
Aquarius Power

oh, saya baru saja menemukan bahwa ini bekerja di sini:alias mc='TERM=linux mc'
Aquarius Power

Benar-benar / etc / hosts rusak, dari beberapa sudut pandang. Tidak mungkin untuk menyelesaikan nama host sendiri untuk memiliki ip. Saya tidak tahu mengapa mc tergantung di sana.
mmv-ru

1
Apa maksudmu host 'hostname'? Ini mengembalikan sama dengan host 'aaaa', host 'aaab'dan daftar tak ada habisnya dari host. Apakah yoy berarti MC sedang mencoba menyelesaikan host yang tidak ada?
Dims

Maaf, apostrof harus ada di sana sebagai tanda kutip tunggal. Jawaban sudah diperbaiki. Dalam beberapa hal Ya. MC membuat koneksi ke server sendiri dengan nama host Anda, sehingga mendapatkan host yang tidak ada dan melakukan banyak percobaan.
mmv-ru

4

Mungkin mulai lambat karena memulai subkulit (ditampilkan saat Anda menekan Ctrl-O) dan hanya menampilkan UI saat subkulit dimulai. Saya menggunakan zsh dan saya perhatikan ketika saya menghapus ~/.zshrcfile saya mc mulai secara instan.


2
Lihat midnight-commander.org/ticket/3580 untuk kemungkinan peningkatan dengan meluncurkan subkulit di latar belakang.
aleb

Jadi, perlu mengkompilasi ulang?
Panayotis

3

Butuh sekitar 10 detik untuk memulai mc. Menjalankan strace -r -tt -o mc.strace mcsaya mendapat:

...
 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
...

Melihat output ini, saya memutuskan untuk memulai mcdengan empty PROMPT_COMMAND( PROMPT_COMMAND= mc), dan itu dimulai seketika. Seharusnya saya ada di sana:

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

UPD Setelah beberapa penggalian lagi, ternyata itu tidak ada hubungannya dengan sejarah ( 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

Konjungtur saya adalah bahwa mcdengan PROMPT_COMMANDcara yang salah mengacaukan Itu berubah PROMPT_COMMANDsehingga jika mengandung ;, yang memicu kesalahan bash. Dengan demikian, tidak ada yang ditulis untuk deskriptor 8, yang menghalangi proses sampai batas waktu. Koreksi saya, jika saya salah.


1
Saya tahu ini adalah jawaban lama dan semuanya. Tapi mungkin saya beruntung dan Anda keberatan menjelaskan mengapa Anda menyimpulkan dari output strace bahwa ada sesuatu yang salah PROMPT_COMMAND. Saya memiliki masalah yang sama dan saya juga menyelesaikannya dengan menghapus history -adari saya PROMPT_COMMANDtetapi saya tidak tahu mengapa itu membantu dan saya tidak tahu di mana hubungan antara itu dan select(8, [6,7], ...)(yang tampaknya menyebabkan perlambatan MC dengan waktu habis) adalah. Mungkin Anda bisa membantu saya memahami solusinya.
degill

@degill Silakan lihat jawaban saya yang diperbarui.
x-yuri

Terima kasih atas pembaruannya! Anda benar, hanya menempatkan ;di PROMPT_COMMANDmemang memiliki efek yang sama dari waktu habis. Saya tahu ditambahkan history -akembali ke PROMPT_COMMAND(dalam ~/.local/share/mc/bashrc) saya dan semuanya berfungsi dengan baik. Masih menarik meskipun ada apa dengan;
degill


2

Saya memiliki masalah ini untuk waktu yang sangat lama dan akhirnya saya tidak menggunakan Komandan Tengah Malam lagi ...

Tetapi saya baru-baru ini menemukan solusinya !!! Dalam kasus saya, itu hanya terkait dengan cangkang alternatif saya: Saya menggunakan ikan. http://fishshell.com/

Keduanya tidak bekerja dengan baik. Saya baru saja mengubah skrip untuk memastikan saya menggunakan bash dan bukan ikan.


Dan mengapa ikan menyebabkan masalah seperti itu?
countermode

2

Baru saja menyelesaikan masalah yang sama pada FreeBSD. Saya pikir, lebih tepat mengedit /etc/hostsdengan cara berikut:

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

karena hostssintaks entri file adalah (lihat host (5) - halaman manual Linux ):

IP_address canonical_hostname [aliases...]

Jadi, jika Anda hanya menambahkan hostsfile Anda seperti

127.0.0.2 myhost.my.domain myhost

maka kamu akan mendapatkan

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

Tetapi jika Anda mengedit hostsfile seperti pada contoh pertama, Anda akan mendapatkan jawaban ping yang benar:

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 mulai dengan cepat dua arah.


2
mc -X

bekerja untuk saya (xterm dinonaktifkan)


Ini juga masalah bagi saya. DISPLAYvariabel lingkungan diatur ke localhost:10.0, tetapi tidak ada server X mendengarkan di sana pada server itu tanpa tampilan.
fviktor

0

Jika Anda menggunakan MobaXterm untuk terhubung ke SSH di server Anda, Anda mungkin perlu mematikan penerusan X11 untuk memulai mc segera. Inilah yang memperlambat awal mc.


-1

Cobalah untuk menghapus baris "search whatever.something" dari /etc/resolv.conf

/etc/hosts harus memiliki garis:

127.0.0.1 localhost

127.0.0.2 hostname.domain hostname

"hostname" adalah nama host Anda dan "domain" adalah domain Anda.


Itu masuk akal hanya jika mesin tidak pernah terhubung ke internet. File itu diisi oleh DHCP (atau ketika koneksi Internet dikonfigurasi).
vonbrand
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.