Avvio lento di Midnight Commander


19

Esiste un modo per impedire l' mcapertura di 10-30 secondi?


1
L'hai compilato con --enable-vfs-smb? Prova a disabilitare la funzione. Sembra essere un problema comune con la versione 4.8.4: mc si avvia molto LENTO
Marco

2
Corri strace -r -tt -o mc.strace mcper vedere dove ci vuole tempo. Carica il file di traccia se hai bisogno di aiuto per interpretarlo. Si noti che il file di traccia può contenere informazioni private (almeno nomi di file), dare un'occhiata e disinfettarlo se necessario prima del caricamento.
Gilles 'SO- smetti di essere cattivo' il

1
ha avuto lo stesso problema, ha aggiunto il nome host a / etc / hosts (come 127.0.0.1, ovviamente), tutto è diventato perfetto

Risposte:


5

Funziona per me adesso. sto usando

GNU Midnight Commander 4.8.21

lo strace aspetta a lungo

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

Ho provato questo:

# hostname

usa questo per /etc/hosts:

nameofhost=hostname

aggiungilo $nameofhosta quello /etc/hostsonline a partire da

127.0.0.1 localhost ... $nameofhost 

Saluti!


12

L' integrazione mc / subshell è un colpevole frequente; per verificare, prova:

alias mc="mc --nosubshell"

1
Questa è stata l'unica soluzione che ha funzionato per me. Vedo che ho accesso a cmd-o, ma non riesco a digitare alcun comando.
Panayotis,

non funziona per me
stiv

10

In realtà la modifica di / etc / hosts ha risolto il problema per me.
Il mio mc ha impiegato 10 secondi per avviarsi a causa del fatto che durante l'avvio mc tenta di risolvere il nome host locale in un indirizzo IP.
Ho aggiunto a / etc / hosts la seguente riga (il mio nome host è FOO) 127.0.0.2 FOO.domain FOO che ha risolto immediatamente il problema.


Perché hai usato 127.0.0.2ma no 127.0.0.1?
Dims

qualsiasi x, y, z in 127.xyz funzionerà ugualmente bene (l'intero intervallo IP è riservato alla macchina locale)
ggpp23

5

Dai un'occhiata

host `hostname`

ottenere risultati rapidi

MC utilizza inizialmente il nome host per connettersi al servizio interno

In una situazione simile su Fedora 18 aggiungo il valore del nome host a / etc / hosts e mi aiuta.


mc servizio interno? potremmo essere in grado di modificare alcune configurazioni per correggere mc per non richiedere la modifica di / etc / hosts? o / etc / hosts è rotto e mc si aspetta che venga corretto?
Aquarius Power il

oh, ho appena scoperto che funziona qui:alias mc='TERM=linux mc'
Aquarius Power il

In realtà / etc / hosts è rotto, da un certo punto di vista. Impossibile risolvere il proprio nome host sul proprio IP. Non so perché mc dipenda da questo lì.
mmv-ru,

1
Cosa intendi con host 'hostname'? Esso restituisce la stessa host 'aaaa', host 'aaab'e la lista infinita di host non-esistente. Intendi dire che MC sta cercando di risolvere un host inesistente?
Dimmer

Siamo spiacenti, l'apostrofo deve essere lì al posto delle virgolette singole. Risposta risolta. In qualche modo Sì. MC effettua la connessione al proprio server tramite il tuo nome host, in modo da ottenere host inesistente e fare molti tentativi.
mmv-ru,

4

Potrebbe avviarsi lentamente perché avvia una subshell (visualizzata quando si preme Ctrl-O) e visualizza l'interfaccia utente solo all'avvio della subshell. Uso zsh e ho notato quando rimuovo il mio ~/.zshrcfile mc si avvia immediatamente.


2
Vedere midnight-commander.org/ticket/3580 per un possibile miglioramento avviando la sottostruttura in background.
aleb,

Quindi, è necessario ricompilarlo?
Panayotis,

3

Ci sono voluti circa 10 secondi per iniziare mc. In esecuzione strace -r -tt -o mc.strace mcho ottenuto:

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

Guardando questo output, ho deciso di iniziare mccon empty PROMPT_COMMAND( PROMPT_COMMAND= mc), e si è avviato immediatamente. Ho avuto presumibilmente comune:

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

UPD Dopo qualche altro scavo, si scopre che non ha nulla a che fare con la storia ( 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

La mia congiuntura è quella mc incasina PROMPT_COMMANDin modo sbagliato. Cambia in PROMPT_COMMANDmodo che se contiene ;, ciò innesca l'errore bash. Pertanto, nulla viene scritto nel descrittore 8, il che blocca il processo fino al timeout. Correggimi se sbaglio.


1
So che questa è una vecchia risposta e tutto il resto. Ma forse sono fortunato e ti dispiace spiegare perché dalla conclusione dello strace hai concluso che qualcosa non andava PROMPT_COMMAND. Ho avuto lo stesso problema e l'ho anche risolto rimuovendo history -adal mio PROMPT_COMMANDma non ho idea del perché ciò aiuti e non ho idea di dove sia la connessione tra quello e select(8, [6,7], ...)(che apparentemente provoca il rallentamento di MC con il timeout). Forse puoi aiutarmi a capire la soluzione.
degilla il

@degill Vedi la mia risposta aggiornata.
x-yuri,

Grazie per l'aggiornamento! Hai ragione, solo mettendo ;in PROMPT_COMMANDnon avere lo stesso effetto di timeout. So che è stato aggiunto history -aal mio PROMPT_COMMAND(entro ~/.local/share/mc/bashrc) e tutto funziona bene. Ancora interessante anche quello che succede con il;
degill

4
La voce del bug a monte è a mezzanotte-commander.org/ticket/3534 .
egmont,

2

Ho avuto questo problema per molto tempo e ho finito per non usare più Midnight Commander ...

Ma di recente ho trovato la soluzione !!! Nel mio caso, era legato solo al mio guscio alternativo: sto usando il pesce. http://fishshell.com/

I due insieme non funzionano alla grande. Ho appena cambiato la mia sceneggiatura per assicurarmi che mc usi bash e non fish.


E perché i pesci dovrebbero causare tali problemi?
Contromodalità

2

Ho appena risolto lo stesso problema su FreeBSD. Penso che sia più corretto modificarlo /etc/hostsnel modo seguente:

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

perché la hostssintassi della voce del file è (vedi hosts (5) - Pagina del manuale di Linux ):

IP_address canonical_hostname [aliases...]

Quindi, se aggiungi semplicemente nel tuo hostsfile qualcosa di simile

127.0.0.2 myhost.my.domain myhost

allora otterrai

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

Ma se modifichi il tuo hostsfile come nel primo esempio, otterrai la risposta ping corretta:

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 si avvia velocemente in entrambi i modi.


2
mc -X

ha funzionato per me (xterm disabilitato)


Questo è stato il problema anche per me. DISPLAYla variabile di ambiente era impostata su localhost:10.0, ma non vi era alcun server X in ascolto su quel server senza display.
fviktor,

0

Se si utilizza MobaXterm per connettersi a SSH sul server, potrebbe essere necessario disattivare l'inoltro X11 per avviare mc a breve. Questo è ciò che rallenta l'avvio di MC.


-1

Prova a eliminare la riga "cerca qualunque cosa." Da /etc/resolv.conf

/etc/hosts dovrebbe avere le linee:

127.0.0.1 localhost

127.0.0.2 hostname.domain hostname

"hostname" è il tuo nome host e "domain" è il tuo dominio.


Questo ha un senso solo se la macchina non è mai connessa alla 'rete. Tale file è compilato da DHCP (o quando la connessione a Internet è configurata).
vonbrand,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.