nohup จะไม่แสดงพร้อมต์ถัดไปในเซสชัน SSH
สมมติว่าฉันเชื่อมต่อผ่าน SSH บนระบบ Ubuntu ระยะไกล ฉันต้องการเรียกใช้สคริปต์ที่นั่นโดยใช้nohup
ในกรณีที่การเชื่อมต่ออาจลดลงและเปลี่ยนเส้นทางบันทึกไปยังไฟล์ คำสั่งที่ฉันเรียกใช้คือ
nohup bash myscript.sh > log.txt &
จากนั้นเทอร์มินัลจะพิมพ์ PID ของสคริปต์และข้อความ:
nohup ไม่สนใจอินพุตและเปลี่ยนเส้นทาง stderr ไปที่ stdout
เคอร์เซอร์ค้างที่นั่นและฉันไม่สามารถดำเนินการคำสั่งอื่นได้เว้นแต่ฉันจะออกจากเซสชัน SSH ด้วยCtrl+ Dและเข้าสู่ระบบอีกครั้ง ฉันต้องการให้เซสชัน SSH ยังคงเปิดอยู่และไปยังพร้อมต์เทอร์มินัลถัดไปโดยไม่จำเป็นต้องเข้าสู่ระบบอีกครั้ง มีวิธีใดบ้างที่จะบรรลุสิ่งนี้?
คำตอบ
คำสั่งนี้ทำงานในพื้นหลังตามที่คุณคาดหวัง อย่างไรก็ตามในกรณีนี้มีเงื่อนไขการแข่งขันที่ข้อความผลลัพธ์ถูกเขียนเป็นเศษส่วนหลังจากพร้อมต์เชลล์
ผลลัพธ์ที่เป็นภาพอาจเป็นได้ว่าพร้อมต์เชลล์นำหน้าnohup
ข้อความหรือถูกเขียนทับทั้งหมด
ผลลัพธ์ในทางปฏิบัติคือเนื่องจากเชลล์ได้เขียนพรอมต์จึงพร้อมสำหรับคำสั่งถัดไป คุณสามารถกด Enter เพื่อสร้างพรอมต์ใหม่หรือพิมพ์คำสั่งถัดไปก็ได้