ฉันจะใช้ ssh เพื่อรันคำสั่งบนเครื่อง Unix ระยะไกลและออกก่อนที่คำสั่งจะเสร็จสมบูรณ์ได้อย่างไร


17

ฉันจะใช้ ssh เพื่อรันคำสั่งบนเครื่อง Unix และออกก่อนที่คำสั่งจะเสร็จสมบูรณ์ได้อย่างไร?

ตัวอย่างเช่นถ้าฉันพิมพ์

ssh localhost 'sleep 60 &'

ssh ค้างที่เทอร์มินัลของฉันจนกว่าการนอนหลับจะเสร็จสิ้นแม้ว่า sleep จะทำงานในพื้นหลัง


คุณอาจต้องการ&คำพูดนอก
Brad Gilbert

1
ไม่เพียงแค่ใส่ชุดและ kaboodle ทั้งหมดในพื้นหลังและฉันไม่สามารถพิมพ์รหัสผ่านของฉันได้
Richard Hoskins

คำตอบ:


19

SSH มีสวิตช์ -f ซึ่งทำงานเหมือนกับการใช้ nohup บนไคลเอ็นต์ของคุณ แต่ทำให้เป็นไปได้ที่ ssh จะขอรหัสผ่าน ใช้มันเหมือนที่:

ssh localhost -f 'command'

แต่ : SSH จะยังคงอยู่ในพื้นหลังดังนั้นหากคุณปิดไคลเอนต์ก่อนคำสั่งบนเซิร์ฟเวอร์เสร็จแล้วมันจะถูกยกเลิก หากคุณต้องการปิดการเชื่อมต่อ ssh หลังจากดำเนินการคำสั่งคุณสามารถใช้หน้าจอที่ฝั่งเซิร์ฟเวอร์:

ssh localhost -f 'screen -d -m sleep 60'

หากฉันทำ 'ssh remotemachine -n' คำสั่งที่รันเป็นเวลานาน> withremoteredirects 2> & 1 </ dev / null & 'และไคลเอ็นต์ปิดการทำงานคำสั่งจะเสร็จสมบูรณ์หรือไม่
Richard Hoskins

หมายเลข Afaik ฉันสูญเสียการเชื่อมต่อ ssh, ssh daemon ควรยกเลิกเทอร์มินัลทั้งหมด "ภายใน" ssh ตอบตั้งแต่เทอร์มินัลเริ่มต้นคำสั่งพวกเขาจะถูกยกเลิกตั้งแต่กระบวนการหลักสิ้นสุดลง แต่มันก็คุ้มค่าที่จะลอง;)
Martin

แล้ว 'nohup' แทนที่จะเป็น 'หน้าจอ' ทางฝั่งเซิร์ฟเวอร์ล่ะ
Richard Hoskins

@Brad Gilbert ไม่มีอะไร? ฉันนึกถึงบางสิ่ง แต่สิ่งหนึ่งที่ไม่มีเหมือนกันคือ 'หน้าจอ' ไม่สามารถใช้ได้กับเครื่อง POSIX ทั้งหมด
Richard Hoskins


6

ใช้ nohup เปลี่ยนเส้นทาง stdout / stderr และเรียกใช้คำสั่งในพื้นหลัง:

 nohup ssh localhost 'sleep 60' >/dev/null 2>/dev/null &

แก้ไข: หรือดียิ่งขึ้นเพียงใช้พารามิเตอร์ -sh ของ ssh:

ssh -f localhost 'sleep 60'

คุณอาจรวมการเปลี่ยนเส้นทางทั้งสองเข้าด้วย&>/dev/nullกัน
แบรดกิลเบิร์

@BradGilbert ไวยากรณ์นั้นไม่รองรับ POSIX เป็นการยากที่จะโต้แย้งว่าต้องเสียสละความเข้ากันได้เพื่อประหยัดอักขระบางตัว
tripleee

2

หรือหลังจากเข้าสู่ระบบโดยใช้sshให้เริ่มscreenถ้าคุณอาจต้องการกลับมาใหม่ในภายหลังเพื่อดูความคืบหน้าหรือผลลัพธ์


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