ฉันพยายามสร้างเชลล์สคริปต์ซึ่งจะดำเนินการคำสั่งบางอย่างที่ฉันต้องการบ่อยๆ ฉันทำการล็อกอิน ssh เพื่อข้ามการถามรหัสผ่านโดยใช้คู่คีย์สาธารณะ / ส่วนตัว และหลังจากการค้นหาบางอย่างฉันสามารถรันโค้ดบางอย่างเช่น:
ไฟล์: ssh.sh
ssh -X root@172.16.0.1 << EOF
cd /root/myDir
gedit a.c b.c
EOF
แต่ฉันไม่เห็นความแตกต่างถ้าฉันชอบ:
ssh -X root@172.16.0.1 << EOF
cd /root/myDir
gedit a.c b.c &
EOF
&
ไม่ได้ทำให้ difference.With ใด ๆ&
โดยทั่วไปหลังจากรัน Gedit ก็จะถูกส่งไปยังพื้นหลังและพร้อมรับคำจะมา แต่ฉันไม่ได้รับพรอมต์หลังจาก gedit (แม้ว่าจะมีสิ่งใดในบรรทัดถัดไปที่กำลังถูกประหารชีวิตเช่นเดียวกับที่ฉันใส่echo "Hello"
มันกำลังแสดงHello
อยู่)
เกิดอะไรขึ้นที่นี่? มีวิธีอื่นอีกไหม? ฉันต้องการทำ SSH และดำเนินการคำสั่งผ่านเชลล์สคริปต์ แต่ฉันไม่ต้องการออกจากระบบหลังจากที่สคริปต์เชลล์ทำงานเสร็จสิ้น ฉันต้องการออกจากระบบด้วยตนเองหลังจากดำเนินการคำสั่งของฉันซึ่งไม่ซ้ำเหมือนสคริปต์ด้านบน
&
ฉันจะได้รับพรอมต์โดยการส่งgedit
ภาพพื้นหลัง แต่ฉันไม่ได้รับการตอบกลับ
ssh
ได้รับในEOF
stdin
การเชื่อมต่อยังคงเปิดอยู่เพราะgedit
ยังทำงานอยู่ แต่เชลล์หายไป
tmux
บนเซิร์ฟเวอร์และใช้โปรแกรมแก้ไขโหมดข้อความ คุณสามารถแยกออกtmux
จากเทอร์มินัลและปล่อยให้มันรันหลังจากที่คุณออกจากssh
และแนบอีกครั้ง