Khởi đầu chậm chạp của Midnight Commander


19

Có cách nào để ngăn không mcmất 10-30 giây để mở không?


1
Bạn đã biên dịch nó với --enable-vfs-smb? Hãy thử tắt tính năng này. Có vẻ là một vấn đề phổ biến với phiên bản 4.8.4: mc bắt đầu rất SLOW
Marco

2
Chạy strace -r -tt -o mc.strace mcđể xem nó mất thời gian ở đâu. Tải lên tệp theo dõi nếu bạn cần trợ giúp để giải thích nó. Lưu ý rằng tệp theo dõi có thể chứa thông tin cá nhân (ít nhất là tên tệp), hãy xem và vệ sinh nó nếu cần thiết trước khi tải lên.
Gilles 'SO- ngừng trở nên xấu xa'

1
có cùng một vấn đề, đã thêm tên máy chủ vào / etc / hosts (tất nhiên là 127.0.0.1), tất cả đều trở nên hoàn hảo

Câu trả lời:


5

Nó làm việc cho tôi bây giờ. tôi đang dùng

GNU Midnight Commander 4.8,21

chờ đợi lâu

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

Tôi đã thử điều này:

# hostname

sử dụng cái này cho /etc/hosts:

nameofhost=hostname

thêm này $nameofhostđến /etc/hoststrên dòng bắt đầu với

127.0.0.1 localhost ... $nameofhost 

Chúc mừng!


12

tích hợp mc / subshell là thủ phạm thường xuyên; để xác minh, hãy thử:

alias mc="mc --nosubshell"

1
Đây là giải pháp duy nhất hiệu quả với tôi. Tôi có thể thấy rằng tôi có quyền truy cập vào cmd-o, nhưng tôi không thể gõ bất kỳ lệnh nào.
Panayotis

không làm việc cho tôi
stiv

10

Trên thực tế chỉnh sửa / etc / hosts đã giải quyết vấn đề cho tôi.
Mc của tôi mất 10 giây để bắt đầu do thực tế là trong quá trình khởi động, mc cố gắng phân giải tên máy chủ cục bộ thành địa chỉ IP.
Tôi đã thêm vào / etc / hosts dòng sau (tên máy chủ của tôi là FOO) 127.0.0.2 FOO.domain FOO Điều đó đã giải quyết ngay vấn đề.


Tại sao bạn sử dụng 127.0.0.2nhưng không 127.0.0.1?
Dims

mọi x, y, z trong 127.xyz sẽ hoạt động tốt như nhau (toàn bộ dải IP được dành riêng cho máy cục bộ)
ggpp23

5

Kiểm tra

host `hostname`

có được kết quả nhanh chóng

MC sử dụng tên máy chủ lúc đầu để kết nối với dịch vụ nội bộ

Trong tình huống tương tự trên Fedora 18, tôi thêm giá trị tên máy chủ vào / etc / hosts và nó giúp.


mc dịch vụ nội bộ? chúng ta có thể thay đổi một số cấu hình để sửa lỗi mc để không yêu cầu thay đổi / etc / hosts không? hoặc là / etc / hosts bị hỏng và mc hy vọng nó sẽ được sửa?
Sức mạnh Bảo Bình

oh, tôi chỉ thấy rằng điều này hoạt động ở đây:alias mc='TERM=linux mc'
Sức mạnh Bảo Bình

Thực sự / etc / hosts bị hỏng, từ một số quan điểm. Không thể giải quyết tên máy chủ riêng để sở hữu ip. Tôi không biết tại sao mc phụ thuộc vào nó ở đó.
mmv-ru

1
Bạn có ý nghĩa host 'hostname'gì? Nó trả về giống như host 'aaaa', host 'aaab'và danh sách vô tận vạn quân không tồn tại. Có phải yoy có nghĩa là MC đang cố gắng giải quyết máy chủ không tồn tại?
dims

Xin lỗi, dấu nháy đơn phải ở đó thay cho dấu ngoặc đơn. Trả lời cố định. Theo một cách nào đó Có. MC tạo kết nối đến máy chủ của riêng bạn bằng tên máy chủ của bạn, để nó nhận được máy chủ không tồn tại và thực hiện nhiều lần thử.
mmv-ru

4

Nó có thể bắt đầu chậm vì nó khởi động một subshell (hiển thị khi bạn nhấn Ctrl-O) và chỉ hiển thị UI khi bắt đầu subshell. Tôi sử dụng zsh và tôi nhận thấy khi tôi xóa ~/.zshrctệp mc của tôi bắt đầu ngay lập tức.


2
Xem midnight-commander.org/ticket35380 để biết sự cải thiện có thể bằng cách khởi chạy subshell trong nền.
aleb

Vì vậy, có cần phải biên dịch lại không?
Panayotis

3

Mất khoảng 10 giây để bắt đầu mc. Chạy strace -r -tt -o mc.strace mctôi có:

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

Nhìn vào đầu ra này, tôi quyết định bắt đầu mcvới khoảng trống PROMPT_COMMAND( PROMPT_COMMAND= mc) và nó bắt đầu ngay lập tức. Tôi đã có ở đó được cho là phổ biến:

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

CẬP NHẬT Sau khi đào thêm, hóa ra nó không liên quan gì đến lịch sử ( 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

Kết hợp của tôi là sai lầm mcvới PROMPT_COMMANDmột cách sai lầm. Nó thay đổi PROMPT_COMMANDđể nếu nó chứa ;, điều đó gây ra lỗi bash. Như vậy, không có gì được ghi vào bộ mô tả 8, nó chặn quá trình cho đến khi hết thời gian. Đúng tôi, nếu tôi sai.


1
Tôi biết đây là một câu trả lời cũ và tất cả. Nhưng có lẽ tôi may mắn và bạn nhớ giải thích lý do tại sao bạn kết luận từ đầu ra bước đi mà có gì đó không ổn PROMPT_COMMAND. Tôi đã có cùng một vấn đề và tôi cũng đã giải quyết nó bằng cách xóa history -akhỏi tôi PROMPT_COMMANDnhưng tôi không biết tại sao điều đó lại có ích và tôi không biết mối liên hệ giữa điều đó và select(8, [6,7], ...)(điều này rõ ràng gây ra sự chậm chạp của MC với thời gian chờ). Có lẽ bạn có thể giúp tôi hiểu giải pháp.
xuống cấp

@degill Xin vui lòng xem câu trả lời cập nhật của tôi.
x-yuri

Cảm ơn các cập nhật! Bạn nói đúng, chỉ cần đặt; vào PROMPT_COMMANDkhông có tác dụng tương tự như thời gian ra. Tôi biết thêm vào history -alại PROMPT_COMMAND(trong ~/.local/share/mc/bashrc) của tôi và mọi thứ hoạt động tốt. Vẫn thú vị mặc dù những gì đang xảy ra với;
degill 30/08/2015

4
Mục nhập lỗi ngược dòng là vào lúc nửa đêm-commander.org/ticket/3534 .
egmont

2

Tôi đã gặp vấn đề này trong một thời gian rất dài và cuối cùng tôi đã không sử dụng Midnight Commander nữa ...

Nhưng gần đây tôi đã tìm ra giải pháp !!! Trong trường hợp của tôi, nó chỉ liên quan đến lớp vỏ thay thế của tôi: Tôi đang sử dụng cá. http://fishshell.com/

Cả hai không làm việc tuyệt vời. Tôi chỉ thay đổi tập lệnh của mình để đảm bảo mc sử dụng bash chứ không phải cá.


Và tại sao cá lại gây ra vấn đề như vậy?
phản biện

2

Chỉ cần giải quyết vấn đề tương tự trên FreeBSD. Tôi nghĩ, sẽ đúng hơn khi chỉnh sửa /etc/hoststheo cách sau:

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

hosts cú pháp nhập tệp là (xem máy chủ (5) - trang hướng dẫn Linux ):

IP_address canonical_hostname [aliases...]

Vì vậy, nếu bạn chỉ cần thêm vào hoststập tin của bạn một cái gì đó như

127.0.0.2 myhost.my.domain myhost

sau đó bạn sẽ nhận được

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

Nhưng nếu bạn chỉnh sửa hosts tệp như trong ví dụ đầu tiên, bạn sẽ nhận được câu trả lời ping chính xác:

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 bắt đầu nhanh cả hai cách.


2
mc -X

làm việc cho tôi (xterm bị vô hiệu hóa)


Đây là vấn đề đối với tôi là tốt. DISPLAYbiến môi trường được đặt thành localhost:10.0, nhưng không có máy chủ X nào nghe trên máy chủ đó mà không hiển thị.
fviktor

-1

Cố gắng xóa dòng "tìm kiếm bất cứ điều gì" từ /etc/resolv.conf

/etc/hosts nên có các dòng:

127.0.0.1 localhost

127.0.0.2 hostname.domain hostname

"Tên máy chủ" là tên máy chủ của bạn và "tên miền" là tên miền của bạn.


Điều đó có ý nghĩa chỉ khi máy không bao giờ được kết nối với mạng. Tập tin đó được điền bởi DHCP (hoặc khi kết nối Internet được cấu hình).
vonbrand
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.