Inicio lento de Midnight Commander

19

¿Hay alguna forma de evitar mcque demore entre 10 y 30 segundos en abrirse?

stiv
fuente
1
¿Lo compiló con --enable-vfs-smb? Intenta deshabilitar la función. Parece ser un problema común con la versión 4.8.4: mc se inicia muy LENTO
Marco
2
Corre strace -r -tt -o mc.strace mcpara ver dónde lleva tiempo. Cargue el archivo de seguimiento si necesita ayuda para interpretarlo. Tenga en cuenta que el archivo de rastreo puede contener información privada (al menos nombres de archivo), eche un vistazo y desinféctelo si es necesario antes de cargarlo.
Gilles 'SO- deja de ser malvado'
1
tuvo el mismo problema, se agregó el nombre de host a / etc / hosts (como 127.0.0.1, por supuesto), todo se volvió perfecto

Respuestas:

5

Funciona para mi ahora. estoy usando

GNU Midnight Commander 4.8.21

strace esperar mucho tiempo

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

Intenté esto:

# hostname

use esto para /etc/hosts:

nameofhost=hostname

agregue esto $nameofhosta la /etc/hostslínea que comienza con

127.0.0.1 localhost ... $nameofhost 

¡Salud!

Xandersoft
fuente
12

La integración de mc / subshell es un culpable frecuente; para verificar, intente:

alias mc="mc --nosubshell"
Andrei Pozolotin
fuente
1
Esta fue la única solución que funcionó para mí. Puedo ver que tengo acceso a cmd-o, pero no puedo escribir ningún comando.
Panayotis
no funciona para mí
stiv
10

En realidad, editar / etc / hosts me resolvió el problema.
Mi mc tardó 10 segundos en iniciarse debido al hecho de que durante el inicio mc intenta resolver el nombre de host local en una dirección IP.
Agregué a / etc / hosts la siguiente línea (mi nombre de host es FOO) 127.0.0.2 FOO.domain FOO que resolvió el problema al instante.

ggpp23
fuente
¿Por qué usaste 127.0.0.2pero no 127.0.0.1?
atenúa el
cualquier x, y, z en 127.xyz funcionará igual de bien (todo el rango de IP está reservado para la máquina local)
ggpp23
5

Cheque

host `hostname`

obtener un resultado rápido

MC utiliza el nombre de host al principio para conectarse al servicio interno

En una situación similar en Fedora 18 agrego valor de nombre de host a / etc / hosts y ayuda.

mmv-ru
fuente
servicio interno de mc? ¿podríamos cambiar alguna configuración para arreglar mc para que no requiera cambiar / etc / hosts? o ¿está roto / etc / hosts y mc espera que se corrija?
Acuario Power
oh, acabo de descubrir que esto funciona aquí:alias mc='TERM=linux mc'
Aquarius Power
Realmente / etc / hosts está roto, desde algún punto de vista. Imposible resolver el propio nombre de host para poseer ip. No sé por qué mc depende de eso allí.
mmv-ru
1
¿Qué quieres decir con host 'hostname'? Devuelve lo mismo que host 'aaaa', host 'aaab'y la lista interminable de hosts no existentes. ¿Quiso decir que MC está tratando de resolver un host no existente?
atenúa
Lo sentimos, el apóstrofe debe estar allí en lugar de comillas simples. Respuesta arreglada. De alguna manera sí. MC realiza la conexión al servidor propio por su nombre de host, por lo que obtiene un host inexistente y realiza muchos intentos.
mmv-ru
4

Puede comenzar lentamente porque inicia una subshell (se muestra cuando presiona Ctrl-O) y muestra la IU solo cuando se inicia la subshell. Uso zsh y noté que cuando elimino mi ~/.zshrcarchivo, mc comienza instantáneamente.

aleb
fuente
2
Ver midnight-commander.org/ticket/3580 para una posible mejora al iniciar la subshell en segundo plano.
aleb
Entonces, ¿hay necesidad de recompilarlo?
Panayotis
3

Tomó alrededor de 10 segundos para comenzar mc. Corriendo strace -r -tt -o mc.strace mctengo:

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

Mirando este resultado, decidí comenzar mccon empty PROMPT_COMMAND( PROMPT_COMMAND= mc), y comenzó de inmediato. Tenía allí supuestamente común:

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

UPD Al investigar un poco más, resulta que no tiene nada que ver con el historial ( 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

Mi coyuntura es que se mcmete PROMPT_COMMANDde una manera incorrecta. Cambia de PROMPT_COMMANDmodo que si contiene ;, eso desencadena un error bash. Como tal, no se escribe nada en el descriptor 8, lo que bloquea el proceso hasta el tiempo de espera. Corrígeme si me equivoco.

x-yuri
fuente
1
Sé que esta es una vieja respuesta y todo. Pero tal vez tenga suerte y le importe explicar por qué concluye a partir de la salida directa que algo estaba mal PROMPT_COMMAND. Tuve el mismo problema y también lo resolví eliminando history -ade mi, PROMPT_COMMANDpero no tengo idea de por qué eso ayuda y no tengo idea de dónde está la conexión entre eso y select(8, [6,7], ...)(lo que aparentemente causa la desaceleración de MC con el tiempo de espera). Quizás puedas ayudarme a entender la solución.
degill
@degill Por favor, vea mi respuesta actualizada.
x-yuri
¡Gracias por la actualización! Tiene usted razón, sólo poner ;en el PROMPT_COMMANDno tener el mismo efecto del tiempo de espera. Sé que se agregó history -aa mi PROMPT_COMMAND(dentro ~/.local/share/mc/bashrc) y todo funciona bien. Aún interesante, sin embargo, ¿qué pasa con el;
degill
44
La entrada de error aguas arriba está en midnight-commander.org/ticket/3534 .
egmont
2

Tuve este problema durante mucho tiempo y terminé sin usar Midnight Commander más ...

¡Pero recientemente encontré la solución! En mi caso, solo estaba relacionado con mi caparazón alternativo: estoy usando pescado. http://fishshell.com/

Los dos juntos no funcionan muy bien. Acabo de cambiar mi script para asegurarme de que mc use bash y no fish.

Cecil
fuente
¿Y por qué los peces causarían tales problemas?
contramode
2

Acabo de resolver el mismo problema en FreeBSD. Creo que es más correcto editar /etc/hostsde la siguiente manera:

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

porque la hostssintaxis de entrada de archivo es (ver hosts (5) - página del manual de Linux ):

IP_address canonical_hostname [aliases...]

Entonces, si solo agrega a su hostsarchivo algo como

127.0.0.2 myhost.my.domain myhost

entonces obtendrás

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

Pero si edita su hostsarchivo como en el primer ejemplo, obtendrá la respuesta de ping correcta:

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 comienza rápido en ambos sentidos.

truco rápido
fuente
2
mc -X

funcionó para mí (xterm deshabilitado)

Daniel Nie
fuente
Este fue el problema para mí también. DISPLAYla variable de entorno se estableció en localhost:10.0, pero no había ningún servidor X escuchando allí en ese servidor sin pantalla.
fviktor
0

Si está utilizando MobaXterm para conectarse a SSH en su servidor, es posible que deba desactivar el reenvío X11 para iniciar mc en breve. Esto es lo que ralentiza el inicio de mc.

pbies
fuente
-1

Intenta eliminar la línea "buscar lo que sea. Algo" de /etc/resolv.conf

/etc/hosts debería tener las líneas:

127.0.0.1 localhost

127.0.0.2 hostname.domain hostname

"hostname" es su nombre de host y "dominio" es su dominio.

dragulj
fuente
Eso tiene sentido solo si la máquina nunca está conectada a la red. DHCP rellena ese archivo (o cuando se configura la conexión a Internet).
vonbrand