자정 사령관의 느린 시작


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 -a내 PROMPT_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.