เป็นวิธีที่ดีที่สุดในการเรียกใช้คำสั่ง ssh ระยะไกลในพื้นหลัง แต่ยังคงแสดงอะไร


15

ฉันต้องเรียกใช้คำสั่ง SSH จากระยะไกลด้วยการแสดงผลในเครื่อง แต่ถ้าการเชื่อมต่อขาดฉันต้องการให้คำสั่งยังคงทำงานอยู่

ฉันไม่ได้พูดมากเกี่ยวกับการเข้าสู่ระบบและการดำเนินการ แต่ทำ ssh user @ remotehost 'คำสั่ง && คำสั่ง ฯลฯ '

ฉันจะมั่นใจได้อย่างไรว่าคำสั่งจะทำงานแม้ว่าการเชื่อมต่อจะหยุดชะงัก

คำตอบ:


27

วิธีที่ดีที่สุดในการทำเช่นนี้คือการใช้หน้าจอซึ่งทำให้เซสชันเปิดอย่างต่อเนื่องแม้ว่าการเชื่อมต่อจะหายไป (และหากคุณต้องการเริ่มใช้อีกครั้งคุณสามารถทำได้screen -rและจะเปิดขึ้นอีกครั้ง)

คำนำหน้าสิ่งที่คำสั่งที่คุณต้องการเรียกใช้ด้วยscreen(เช่นssh -t user@host screen command) ควรทำงาน

หากคุณต้องการให้มันทำงานในพื้นหลังของเชลล์คุณสามารถผนวก&สิ่งทั้งปวงได้


คุณอาจจะต้องใช้ ssh -t เพื่อจัดสรรเทอร์มินัลเพื่อให้คำสั่งรันมิฉะนั้นข้อผิดพลาดคือ "ต้องเชื่อมต่อกับเทอร์มินัล"
bonsaiviking

11

คุณกำลังมองหาเซสชันถาวรที่คุณสามารถดำเนินการต่อหรือเพียงแค่หยุดการตัดการเชื่อมต่อจากการฆ่า exection?

สำหรับอดีตใช้สำหรับหลังscreennohup


7

ตามที่กล่าวไว้ก่อนscreenสามารถทำเคล็ดลับทั้งหมด แต่ไม่เพียง แต่สิ่งที่คุณต้องการ ฉันใช้หน้าจอเป็นเวลาหลายปีและตอนนี้ใช้ทุกครั้งที่ฉันเข้าสู่ระบบ ลองติดตั้งscreenและสร้าง~/.screenrcด้วย config ดังกล่าว:

sessionname     vcflists
startup_message off
deflogin        off
vbell           off
msgminwait      0
msgwait         10
log             off
backtick        1 0 0 hostname
caption splitonly "%?%F%{= yk}%:%{= Kk}%? %n %t%="
hardstatus alwayslastline "%{= rY}  %1`  %{= kg} %0c %{= bY}  %-w%{= Yk} %n %t %{-}%+w %=%{g}%l "

screen -Rd vcfจากนั้นเรียก นั่นคือการภาวนาของหน้าจอที่ดีกว่า คุณจะเชื่อมต่อกับเซสชันที่สร้างไว้ก่อนหน้านี้ด้วยชื่อ vcf * (หรือถูกเตือนหากไม่ชัดเจน) หรือหากยังไม่เปิดเซสชันเซสชันนั้นจะถูกสร้างขึ้น CTRL+ Aเป็นเมตาคีย์ที่ทำทุกอย่าง CTRL+A C( CTRL+ Aจากนั้นC) สร้างหน้าต่างใหม่ (หน้าจอ) ภายในเซสชัน CTRL+A SPACEย้ายโฟกัสไปที่หน้าต่างถัดไปในรอบ CTRL+A Dแยกเซสชั่นปัจจุบันทำให้หน้าต่างทั้งหมดทำงานระหว่างการเชื่อมต่อ หากคุณเปิดตัวภารกิจ looooong คุณสามารถแยกออกจากหน้าจอแล้วใส่กลับเข้าไปใหม่ในภายหลังเพื่อดูว่าเกิดอะไรขึ้น สิ่งเดียวกันนี้จะเกิดขึ้นหากเซสชั่น ssh ของคุณสูญหาย - หน้าจอยังคงมีชีวิตอยู่กับหน้าต่างที่เปิดอยู่ทั้งหมดและงานทั้งหมดที่เปิดตัว

หากคุณต้องการปิดหน้าต่างภายในหน้าจอ - เพียงแค่exitจากเปลือกใน หากคุณต้องการปิดเชลล์ / งานทั้งหมดในหน้าต่างและหน้าจอออกทั้งหมด - เพียงแค่กดCTRL+A CTRL+\และกด "Y" เมื่อถูกถาม

สำหรับส่วนที่เหลือทั้งหมดเห็นหน้าจอของผู้ชาย


2

ฉันเห็นทางเลือกนี้กับการเชื่อมต่อ ssh "like" ที่เชื่อถือได้:

http://mosh.mit.edu/


จากเว็บไซต์ mosh (mobile shell) ดูเหมือนเครื่องมือใหม่ที่มีแนวโน้ม มันใหม่มากแม้ว่า
bgvaughan

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