Повільний початок опівночі командира


19

Чи є якийсь спосіб не допустити, mcщоб відкрити 10-30 секунд?


1
Ви склали це --enable-vfs-smb? Спробуйте вимкнути функцію. Здається, що проблема з версією 4.8.4: mc запускається дуже низько
Marco

2
Біжи, strace -r -tt -o mc.strace mcщоб побачити, де потрібен час. Завантажте файл сліду, якщо вам потрібна допомога з його тлумаченням. Зауважте, що файл сліду може містити приватну інформацію (принаймні назви файлів), перегляньте її та, якщо необхідно, очистити її перед завантаженням.
Жил 'ТАК - перестань бути злим'

1
була така ж проблема, додано ім’я хоста до / etc / hosts (як, звичайно, 127.0.0.1), усі стали ідеальними

Відповіді:


5

Це працює для мене зараз. я використовую

Командир опівночі GNU 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 

Ура!


12

інтеграція mc / subshell є частим винуватцем; щоб перевірити, спробуйте:

alias mc="mc --nosubshell"

1
Це було єдине рішення, яке працювало на мене. Я бачу, що у мене є доступ до cmd-o, але я не можу вводити жодної команди.
Панайотис

не працює для мене
stiv

10

Фактично редагування / etc / hosts вирішило проблему для мене.
Моєму mc знадобилося 10 секунд для запуску через те, що під час запуску mc намагається вирішити локальне ім'я хоста до IP-адреси.
Я додав до / etc / hosts наступний рядок (моє ім'я хоста FOO), 127.0.0.2 FOO.domain FOO який миттєво вирішив проблему.


Чому ви використовували, 127.0.0.2але ні 127.0.0.1?
Дімс

будь-який x, y, z у 127.xyz працюватиме однаково добре (весь діапазон IP зарезервований для локальної машини)
ggpp23

5

Перевірка

host `hostname`

отримати швидкий результат

MC спочатку використовують ім'я хоста для підключення до внутрішньої служби

У подібній ситуації на Fedora 18 я додаю значення імені хоста в / etc / hosts і це допомагає.


mc внутрішня послуга? може ми могли б змінити певну конфігурацію, щоб виправити mc, щоб не вимагати змін / etc / hosts? чи порушено / etc / hosts і mc очікує, що це буде виправлено?
Сила Водолія

ой, я щойно з’ясував, що це працює тут:alias mc='TERM=linux mc'
Водолій Сила

Дійсно / etc / hosts з певної точки зору порушено. Неможливо вирішити власне ім’я хоста, щоб володіти ip. Я не знаю, чому mc там залежить від цього.
mmv-ru

1
Що ви маєте на увазі під host 'hostname'? Він повертає те саме host 'aaaa', що host 'aaab'і нескінченний список неіснуючих хостів. Чи мав на увазі yoy означає, що MC намагається вирішити неіснуючий хост?
Дімс

Вибачте, апостроф повинен бути там замість одинарних лапок. Відповідь фіксована. Якимось чином Так. MC зробить з'єднання з власним сервером за допомогою вашого імені хоста, тому він отримає неіснуючий хост і зробить багато спроб.
mmv-ru

4

Це може початися повільно, оскільки він запускає підпрограму (відображається при натисканні клавіші Ctrl-O) і відображає інтерфейс користувача лише тоді, коли запущена нижня оболонка. Я використовую zsh, і я помітив, коли я видаляю ~/.zshrcфайл, mc починається миттєво.


2
Дивіться опівночі- 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_COMMAND( PROMPT_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
Я знаю, що це стара відповідь і все. Але, можливо, мені пощастило, і ви заперечуєте пояснити, чому ви робите висновок із висновку про те, що щось не так PROMPT_COMMAND. У мене була така ж проблема, і я також вирішив її, видаливши history -aз себе, PROMPT_COMMANDале я не маю уявлення, чому це допомагає, і я не маю уявлення, де зв’язок між цим і select(8, [6,7], ...)(що, очевидно, викликає уповільнення МС з таймаутом). Можливо, ви можете допомогти мені зрозуміти рішення.
дегаль

@degill Перегляньте мою оновлену відповідь.
x-yuri

Дякуємо за оновлення! Ви маєте рацію, просто введення ;в дію PROMPT_COMMANDмає той самий ефект від часу. Я знаю, доданий history -aдо мого PROMPT_COMMAND(всередині ~/.local/share/mc/bashrc) і все працює добре. Все ще цікаво, хоча що до;
деглей

4
Запис про помилку вгору за течією - опівночі-commander.org/ticket/3534 .
Егмонт

2

У мене виникла ця проблема дуже давно, і я більше не використовував Midnight Commander ...

Але я нещодавно знайшов рішення !!! У моєму випадку це стосувалося лише моєї альтернативної оболонки: я вживаю рибу. http://fishshell.com/

Двоє разом не працюють чудово. Я просто змінив свій сценарій, щоб переконатися, що mc використовує bash, а не рибу.


І чому риба викликала б такі проблеми?
контрмод

2

Щойно вирішили ту саму проблему на FreeBSD. Я думаю, що правильніше редагувати /etc/hostsтаким чином:

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

оскільки hostsсинтаксис введення файлів є (див. хости (5) - сторінка керівництва Linux ):

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

МС починається швидко обома способами.


2
mc -X

працював для мене (xterm відключений)


Це було і для мене проблемою. DISPLAYзмінна середовище була встановлена ​​на localhost:10.0, але на цьому сервері не було прослуховування X-сервера без відображення.
fviktor

0

Якщо ви використовуєте MobaXterm для підключення до SSH на своєму сервері, можливо, вам знадобиться вимкнути переадресацію X11, щоб незабаром почати mc. Це те, що уповільнює старт mc.


-1

Спробуйте видалити рядок "пошук у будь-якому. Щось" /etc/resolv.conf

/etc/hosts повинні мати рядки:

127.0.0.1 localhost

127.0.0.2 hostname.domain hostname

"ім'я хоста" - це ваше ім'я хоста, а "домен" - ваш домен.


Це має певний сенс, лише якщо машина ніколи не підключається до мережі. Цей файл заповнюється DHCP (або коли налаштовано підключення до Інтернету).
фонбранд
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.