เริ่มช้าของ Midnight Commander


19

มีวิธีใดบ้างที่จะป้องกันไม่mcให้เปิด 10-30 วินาที?


1
คุณรวบรวมมันด้วย--enable-vfs-smbเหรอ? ลองปิดการใช้งานคุณสมบัติ ดูเหมือนว่าจะมีปัญหาร่วมกันกับเวอร์ชัน 4.8.4: mc เริ่มทำงานช้ามาก
Marco

2
วิ่งstrace -r -tt -o mc.strace mcเพื่อดูว่าต้องใช้เวลาที่ไหน อัปโหลดไฟล์ติดตามหากคุณต้องการความช่วยเหลือในการตีความ โปรดทราบว่าไฟล์การติดตามอาจมีข้อมูลส่วนตัว (อย่างน้อยชื่อไฟล์) ลองดูและทำความสะอาดหากจำเป็นก่อนทำการอัพโหลด
Gilles 'ดังนั้นหยุดความชั่วร้าย'

1
มีปัญหาเดียวกันเพิ่มชื่อโฮสต์ไปยัง / etc / hosts (เช่น 127.0.0.1, แน่นอน) ทั้งหมดกลายเป็นที่สมบูรณ์แบบ

คำตอบ:


5

มันเหมาะกับฉันแล้ว ฉันใช้

ผู้บัญชาการเที่ยงคืน GNU 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 

ไชโย!


12

การรวม mc / subshellเป็นผู้ร้ายบ่อยครั้ง เพื่อยืนยันลอง:

alias mc="mc --nosubshell"

1
นี่เป็นทางออกเดียวที่ได้ผลสำหรับฉัน ฉันเห็นว่าฉันสามารถเข้าถึง cmd-o แต่ฉันไม่สามารถพิมพ์คำสั่งใด ๆ
Panayotis

ไม่ได้ผลสำหรับฉัน
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?
Dims

ใด ๆ 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 เสียแล้วจากมุมมอง ไม่สามารถแก้ไขชื่อโฮสต์ให้เป็นเจ้าของไอพีได้ ฉันไม่รู้ว่าทำไม mc พึ่งพาที่นั่น
mmv-ru

1
คุณหมายถึงhost 'hostname'อะไร ก็จะส่งกลับเช่นเดียวกับhost 'aaaa', host 'aaab'และรายการที่สิ้นสุดของครอบครัวไม่ใช่ที่มีอยู่ yoy หมายถึง MC พยายามแก้ไขโฮสต์ที่ไม่มีอยู่ใช่หรือไม่
Dims

ขออภัยอะพอสโทรฟีต้องอยู่ในที่เดียว แก้ไขคำตอบแล้ว ในบางวิธีใช่ MC ทำการเชื่อมต่อกับเซิร์ฟเวอร์ของคุณโดยใช้ชื่อโฮสต์ของคุณดังนั้นจึงไม่มีโฮสต์อยู่เลยและพยายามหลายครั้ง
mmv-ru

4

มันอาจเริ่มช้าเพราะมันจะเริ่ม subshell (แสดงเมื่อคุณกด Ctrl-O) และแสดง UI เฉพาะเมื่อ subshell เริ่มต้น ฉันใช้ zsh และฉันสังเกตว่าเมื่อฉันลบ~/.zshrcไฟล์ mc เริ่มทันที


2
ดูmidnight-commander.org/ticket/3580สำหรับการปรับปรุงที่เป็นไปได้ด้วยการเปิดตัว subshell ในพื้นหลัง
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ด้วย empty 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เพื่อให้ถ้ามีมัน;ที่ก่อให้เกิดข้อผิดพลาดทุบตี ดังนั้นจะไม่มีการเขียนถึง 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

ฉันมีปัญหานี้มาเป็นเวลานานและฉันไม่ได้ใช้ Midnight Commander อีกต่อไป ...

แต่ฉันเพิ่งพบวิธีแก้ปัญหา !!! ในกรณีของฉันมันเกี่ยวข้องกับกระสุนสำรองของฉันเท่านั้น: ฉันใช้ปลา http://fishshell.com/

ทั้งสองเข้าด้วยกันใช้งานไม่ได้ดี ฉันเพิ่งเปลี่ยนสคริปต์ของฉันเพื่อให้แน่ใจว่า mc ใช้ bash และไม่ใช่ปลา


แล้วทำไมปลาถึงก่อปัญหาเช่นนี้?
Countermode

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

MC เริ่มต้นอย่างรวดเร็วทั้งสองวิธี


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

"hostname" เป็นชื่อโฮสต์ของคุณและ "domain" เป็นโดเมนของคุณ


ที่ทำให้ความรู้สึกบางอย่างเท่านั้นถ้าเครื่องไม่เคยเชื่อมต่อกับ 'สุทธิ ไฟล์นั้นจะถูกเติมด้วย DHCP (หรือเมื่อกำหนดค่าการเชื่อมต่ออินเทอร์เน็ต)
vonbrand
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.