자정 사령관의 느린 시작


19

mc열려면 10-30 초가 걸리지 않도록하는 방법이 있습니까?


1
당신은 그것을 컴파일 했습니까 --enable-vfs-smb? 기능을 비활성화하십시오. 버전 4.8.4의 일반적인 문제인 것 같습니다 : mc가 매우 느리게 시작
Marco

2
실행 strace -r -tt -o mc.strace mc은 시간을 복용 위치를 확인할 수 있습니다. 해석에 도움이 필요하면 추적 파일을 업로드하십시오. 추적 파일에는 개인 정보 (최소한 파일 이름)가 포함되어있을 수 있으며 업로드하기 전에 필요한 경우 살펴보고 소독하십시오.
Gilles 'SO- 악마 중지

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에 액세스 할 수 있지만 명령을 입력 할 수 없습니다.
Panayotis

나를 위해 작동하지 않습니다
stiv

10

실제로 / etc / hosts를 편집하면 문제가 해결되었습니다.
시작하는 동안 mc가 로컬 호스트 이름을 IP 주소로 확인하려고하기 때문에 내 mc가 시작하는 데 10 초가 걸렸습니다.
다음 줄을 / etc / hosts에 추가했습니다 (내 호스트 이름은 FOO입니다) 127.0.0.2 FOO.domain FOO . 즉시 문제를 해결했습니다.


왜 사용 127.0.0.2하지 않았 127.0.0.1습니까?
Dims

127.xyz의 모든 x, y, z는 동일하게 작동합니다 (전체 IP 범위는 로컬 컴퓨터 용으로 예약 됨)
ggpp23

5

검사

host `hostname`

빠른 결과를 얻다

MC는 처음에 호스트 이름을 사용하여 내부 서비스에 연결

Fedora 18의 비슷한 상황에서 / etc / hosts에 호스트 이름 값을 추가하면 도움이됩니다.


맥 내부 서비스? / etc / hosts를 변경할 필요가 없도록 mc를 수정하기 위해 일부 구성을 변경할 수 있습니까? 또는 / etc / hosts가 고장 나고 mc가이를 수정할 것으로 예상합니까?
물병 자리 힘

아, 방금 이것이 여기에서 작동한다는 것을 알았습니다.alias mc='TERM=linux mc'
Aquarius Power

실제로 / etc / hosts는 어떤 관점에서 깨졌습니다. 자신의 호스트 이름을 자신의 IP로 해석 할 수 없습니다. 나는 왜 거기에 mc가 의존하는지 모른다.
mmv-ru

1
무슨 뜻 host 'hostname'인가요? 이 같은 반환 host 'aaaa', host 'aaab'그리고 존재하지 않는 호스트의 끝없는 목록을. MC가 존재하지 않는 호스트를 해결하려고 함을 의미합니까?
Dims

작은 따옴표 대신 아포스트로피가 있어야합니다. 답변이 수정되었습니다. 어떤면에서는 그렇습니다. MC는 호스트 이름으로 자신의 서버에 연결하므로 존재하지 않는 호스트를 얻고 많은 시도를합니다.
mmv-ru

4

서브 쉘을 시작하므로 (Ctrl-O를 누르면 표시됨) 서브 쉘을 시작할 때만 UI를 표시하므로 느리게 시작될 수 있습니다. zsh를 사용하는데 ~/.zshrc파일 mc를 제거하면 즉시 시작됩니다.


2
백그라운드에서 서브 쉘을 실행하여 가능한 개선 사항 은 midnight-commander.org/ticket/3580 을 참조하십시오 .
aleb

다시 컴파일해야합니까?
Panayotis

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 오류가 발생 하도록 변경됩니다 . 따라서 descriptor에 아무것도 기록 8되지 않아서 시간이 초과 될 때까지 프로세스를 차단합니다. 틀린 점 있으면 지적 해주세요.


1
나는 이것이 오래된 대답임을 알고 있습니다. 그러나 어쩌면 운이 좋으며 왜 strace 출력에서 ​​뭔가 잘못되었다고 결론 내릴 수 있는지 설명 할 수 있습니다 PROMPT_COMMAND. 나는 똑같은 문제가 있었고 history -a내 것을 제거하여 해결 PROMPT_COMMAND했지만 왜 그것이 도움이되는지 전혀 알지 못하고 그 사이의 연결이 어디에 있는지 (아마도 select(8, [6,7], ...)시간 초과로 MC가 느려짐) 알 수 없습니다. 어쩌면 당신이 해결책을 이해하도록 도울 수 있습니다.
degill

@degill 업데이트 된 답변을 확인하십시오.
x-yuri

업데이트 해 주셔서 감사합니다! 당신은 퍼팅, 맞다 ;에서 PROMPT_COMMAND시간 초과의 같은 효과를 가지고있다. history -aPROMPT_COMMAND(내 ~/.local/share/mc/bashrc) 에 다시 추가 된 것을 알고 모든 것이 잘 작동합니다. 여전히 흥미롭지 만;
degill

4
업스트림 버그 항목은 midnight-commander.org/ticket/3534에 있습니다.
egmont

2

나는이 문제를 오랫동안 가지고 있었고 더 이상 자정 사령관을 사용하지 않았습니다 ...

하지만 최근에 해결책을 찾았습니다 !!! 제 경우에는 대체 쉘과 관련이 있습니다. 나는 생선을 사용하고 있습니다. http://fishshell.com/

둘이 함께 작동하지 않습니다. 방금 mc가 물고기가 아닌 bash를 사용하도록 스크립트를 변경했습니다.


물고기가 왜 그런 문제를 일으킬까요?
카운터 모드

2

FreeBSD에서 같은 문제를 해결했습니다. /etc/hosts다음과 같은 방법으로 편집하는 것이 더 정확하다고 생각합니다 .

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

hosts파일 입력 구문이 다음과 같기 때문에 ( 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첫 번째 예와 같이 파일 을 편집 하면 올바른 핑 응답이 표시됩니다.

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는 빠른 속도로 시작합니다.


2
mc -X

나를 위해 일했다 (xterm 비활성화)


이것은 나에게도 문제였습니다. DISPLAY환경 변수가로 설정 localhost:10.0되었지만 표시되지 않은 서버에서 X 서버가 수신 대기하지 않았습니다.
fviktor

0

MobaXterm을 사용하여 서버의 SSH에 연결하는 경우 mc를 곧 시작하려면 X11 전달을 해제해야합니다. 이것이 mc 시작 속도를 늦추는 것입니다.


-1

에서 "search whatever.something"줄을 삭제하십시오. /etc/resolv.conf

/etc/hosts 줄이 있어야합니다 :

127.0.0.1 localhost

127.0.0.2 hostname.domain hostname

"hostname"은 호스트 이름이고 "domain"은 도메인입니다.


그것은 기계가 'net에 연결되지 않은 경우 에만 의미 가 있습니다. 해당 파일은 DHCP에 의해 (또는 인터넷 연결이 구성 될 때) 채워집니다.
vonbrand
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.