Медленный запуск Полуночного Командующего

Вообще говоря, всегда работайте своим собственным пользователем, если Вы не делаете что-то с влиянием в масштабе всей системы.

Если существуют файлы, которые Вы хотите поднять на своем веб-сервере, работать Вашим собственным пользователем и затем использовать sudo отбрасывать файлы на месте в веб-области обслуживания Вашей файловой системы. Обычно, это было бы выполнено сценарием установки, и Вы выполните что-то как sudo -u webmaster install-webserver-files, или лучше sudo -u webmaster git update (или система управления версиями по Вашему выбору).

Если Вы работаете над сервером разработки и хотите, чтобы Ваши файлы были доступны немедленно, создали каталог в области веб-сервера, и сделать ее владело или по крайней мере перезаписываемый Вами. После той одноразовой операции (sudo chown … или sudo -u webmaster setfacl …), Вам не будут нужны поднятые полномочия для повседневной эксплуатации.

Иногда удобно позволить многочисленным пользователям писать в каталоге или иначе иметь различные полномочия для нескольких пользователей кроме владельца или для нескольких групп. Списки управления доступом дают Вам эту способность. Посмотрите проблемы Полномочий для общего каталога на сервере или Резервную проблему разрешения сценария.

19
21.11.2017, 17:40
11 ответов

Теперь у меня работает. Я использую

GNU Midnight Commander 4.8.21

Долгое ожидание strace

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 

Ура!

9
27.01.2020, 19:44

Попытайтесь удалить строку, "ищут whatever.something" от /etc/resolv.conf

/etc/hosts должен иметь строки:

127.0.0.1 localhost

127.0.0.2 hostname.domain hostname

"имя хоста" является Вашим именем хоста, и "домен" является Вашим доменом.

-1
27.01.2020, 19:44
  • 1
    Это имеет некоторый смысл, только если машина никогда не подключается к 'сети. Тот файл заполнен в DHCP (или когда Интернет-соединение настроено). –  vonbrand 26.01.2013, 05:38

Проверить

host `hostname`

получите быстрый результат

Имя хоста использования MC сначала для соединения с внутренним сервисом

В аналогичной ситуации на Fedora 18 я добавляю, что имя хоста оценивает/etc/hosts, и это помогает.

5
27.01.2020, 19:44
  • 1
    внутренний сервис? мы можем быть, мог изменить некоторую конфигурацию для фиксации мГц для не требования изменения/etc/hosts? или/etc/hosts повреждается, и мГц ожидает, что это будет исправлено? –  Aquarius Power 22.01.2015, 23:20
  • 2
    , о, я просто нашел, что это работает здесь: alias mc='TERM=linux mc' –  Aquarius Power 22.01.2015, 23:29
  • 3
    Действительно/etc/hosts повреждается с некоторой точки зрения. Невозможный разрешить собственное имя хоста для владения IP. Я не знаю, почему мГц зависит от него там. –  mmv-ru 23.01.2015, 00:32
  • 4
    , Под чем Вы подразумеваете host 'hostname'? Это возвращает то же как host 'aaaa', host 'aaab' и бесконечный список несуществующих хостов. Действительно по сравнению с предыдущим годом означал, что MC пытается разрешить несуществующий хост? –  Dims 23.02.2017, 15:46
  • 5
    Извините, апостроф должен быть там вместо одинарных кавычек. Ответ исправлен. В некотором роде Да. MC устанавливает связь для владения сервером именем хоста, таким образом, это получает несуществующий хост и делает много попыток. –  mmv-ru 23.02.2017, 21:42

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

4
27.01.2020, 19:44

На самом деле редактирование /etc/hosts решило проблему за меня.
На запуск mc ушло 10 секунд в связи с тем, что во время запуска mc пытается разрешить имя локального хоста в IP адрес.
Я добавил в /etc/hosts следующую строку (мое имя хоста - FOO) 127.0.0.2 FOO.domain FOO Это мгновенно решило проблему.

10
27.01.2020, 19:44

Потребовалось около 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 так, что если она содержит ;, то это приводит к ошибке баша. Таким образом, ничто не записывается в дескриптор 8, что блокирует процесс до таймаута. Поправьте меня, если я ошибаюсь.

3
27.01.2020, 19:44

интеграция mc/subshell - частый виновник; чтобы проверить, попробуйте:

alias mc="mc --nosubshell"
12
27.01.2020, 19:44

У меня была эта проблема очень долгое время, и в итоге я перестал использовать Midnight Commander...

Но недавно я нашел решение!!! В моем случае это было связано только с моей альтернативной оболочкой: Я использую fish. http://fishshell.com/

Эти два вместе работают не очень хорошо. Я просто изменил свой скрипт, чтобы убедиться, что mc использует bash, а не fish.

2
27.01.2020, 19:44
mc -X

у меня сработало (xterm отключен)

9
27.01.2020, 19:44

Если вы используете MobaXterm для подключения к SSH на вашем сервере, вам может потребоваться отключить переадресацию X11, чтобы вскоре запустить mc. Это то, что тормозит запуск mc.

0
27.01.2020, 19:44

DISPLAY=;mc

у меня работает. Использование MobaXterm X11 -Переадресация, автоматическое перенаправление DISPLAY.

0
28.02.2020, 04:09

Теги

Похожие вопросы