Cygwin tmux:“ ไม่สามารถเชื่อมต่อกับเซิร์ฟเวอร์: ไม่มีข้อผิดพลาด”


7

เช่นเดียวกับชื่อเรื่องบอกว่าเมื่อใดก็ตามที่ฉันพยายามเริ่ม tmux ใน Cygwin 64-bit (Win7) โดยมีข้อโต้แย้งใด ๆ หรือไม่มีเลย --helpฉันได้รับข้อผิดพลาดต่อไปนี้:

$ tmux
failed to connect to server: No error

ฉันไม่สามารถทำซ้ำได้บน Linux ความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชมอย่างมาก.

ขอบคุณ!

คำตอบ:


6

สิ่งนี้ใช้ได้กับฉันด้วยเช่นกันบน 32-bit Win7 แต่ฉันต้องลบไดเรกทอรีทุกครั้งก่อนเปิดตัว tmux ดังนั้นฉันเพิ่งเพิ่มนามแฝงใน. bashrc

alias tmux='rm -rf /tmp/tmux* && tmux'

ดูเหมือนว่า cygwin จะไม่ใช้ / tmp สำหรับไดเรกทอรี temp เสมอไป ไดเรกทอรีชั่วคราวของฉันคือ /cygdrive/c/Users/<username>/AppData/Local/Temp/tmux-1000/ และบันทึกไว้ในตัวแปรที่ต่างกันเล็กน้อย: $TMPDIR, $tempและ $tmp. ฉันไม่แน่ใจว่า tmux ตัวใดที่ใช้งานจริง แต่ถ้าคำตอบนี้ไม่เหมาะกับใครบางคนที่นั่นให้ตรวจสอบตัวแปรเหล่านี้เพื่อดูว่า tmux กำลังจัดเก็บ dir ที่ทำงานอยู่ที่อื่น
Matthew

4

วิธีการนามแฝงที่แนะนำโดยช่างดัดไม่ได้ผลจริงๆถ้าคุณพยายามที่จะใส่กลับเข้าไปใหม่เพราะมันฆ่าเซสชันที่มีอยู่ ต่อไปนี้ดูเหมือนว่าจะแก้ไขปัญหาให้ฉันได้:

  1. บันทึกสคริปต์ Perl ที่ http://pastebin.com/nN6zX37K ถึง "~ / bin / tmux" หรือที่อื่น ๆ ในเส้นทางของคุณหน้า / usr / bin

  2. ให้สิทธิ์เรียกใช้: "chmod + x ~ / bin / tmux"

  3. ออกและเปิด Cygwin อีกครั้ง

  4. รันคำสั่ง tmux ตามปกติ

สิ่งนี้ทำงานได้เพราะตรวจพบสถานะที่ tmux ปิดทั้งหมด แต่ไม่ได้ลบไดเร็กทอรีชั่วคราวซึ่งแก้ไขได้โดยลบไดเร็กทอรี temp (ตามที่แนะนำโดย bender) แต่รันคำสั่งที่ต้องการ


2

ลองคำสั่ง strace -f -o strace.out tmux new จากนั้นตรวจสอบไฟล์ strace.out ด้วยเหตุผลที่เป็นไปได้ ฉันมีข้อผิดพลาดเดียวกันและลบโฟลเดอร์ / tmp / tmux-XXXXX มันมีสิทธิ์ที่ไม่ถูกต้อง


ขอบคุณ!! strace แสดงให้ฉันเห็นว่า tmux สร้างไดเรกทอรีชั่วคราวใน / cygdrive / c / ผู้ใช้ / & lt; ชื่อผู้ใช้ & gt; / AppData / Local / Temp / tmux-1000 / แทน / tmp ซึ่งดูเหมือนว่าจะเป็นสำหรับคนอื่น ๆ หลังจากฉันลบไดเรกทอรี tmux นั้นสามารถเริ่มต้นได้ตามปกติ
Matthew

2

โซลูชันจำนวนมากที่เพิ่งลบไฟล์ tmux ใน / tmp จะแบ่งการติดตั้งซ้ำไปยังเซสชันที่แยกออกหาก tmux ทำงานได้จริง

โซลูชันนี้คล้ายกับโซลูชัน perl เนื่องจากมีผู้ดูแลบางส่วนก่อนที่จะลบเนื้อหาใน / tmp แต่มีการนำไปใช้ใน bash

เพิ่มลงใน ~ / .bashrc ของคุณ

tmux() {
  local tmux_cmd
  if ! tmux_cmd=$(which tmux); then
    echo "error: tmux not installed" >&2
    return 1
  fi
  if ! $tmux_cmd ls > /dev/null 2>&1; then
    # tmux ls returned error, so lets try cleaning up /tmp
    /bin/rm -rf /tmp/tmux*
  fi
  $tmux_cmd "$@"
}

คุณยังสามารถลบไฟล์และ SIGUSR1 กระบวนการ tmux เพื่อให้มันสร้างขึ้นใหม่ซ็อกเก็ต tmux-XXXXX / default
Jay R. Wren

-1

เพียงลบโฟลเดอร์ / tmp / tmux- * เมื่อเริ่มต้น:

cat rm -r / tmp / tmux- * & gt; & gt; ~ / .bashrc


2
โปรดอธิบายอย่างละเอียดในคำตอบว่าทำไมสิ่งนี้จะแก้ปัญหาได้ นอกจากนี้คำสั่งไม่ทำงานจริง ๆ คุณอาจต้องการใช้ echo ด้วยคำพูดเดียว
mtak
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.