ทำงานเบื้องหลัง SSH / งานเมื่อปิด SSH


27

ฉันมีคำถามเดียวกันกับที่นี่แต่ยิ่งไปกว่านั้น

ถ้าฉันออกจากระบบ / ออกจากการเชื่อมต่อ SSH ฉันต้องการให้โปรแกรมของฉันทำงานในพื้นหลัง ก่อนออกฉันพิมพ์bgและjobsตรวจสอบงานที่ทำงานอยู่เบื้องหลัง แต่หลังจากออกจาก SSH โปรแกรมไม่ทำงานมันจะปิดลงเมื่อฉันปิดหน้าต่าง SSH

ฉันจะทำอย่างไรถ้าฉันต้องการให้โปรแกรมของฉันยังทำงานอยู่หลังจากปิดหน้าต่าง SSH ฉันใช้nohup screenแต่มันใช้งานไม่ได้หรือฉันขาดอะไรไป?


ยินดีต้อนรับสู่ Super User! โปรดอย่าใส่คำตอบลงในคำถาม โพสต์เป็นคำตอบด้านล่างเมื่อคุณสามารถ (ในเวลาประมาณ 7 ชั่วโมง) โดยใช้ที่ตอบคำถามของคุณปุ่ม ขอขอบคุณ. (โปรดทราบว่าไม่จำเป็นต้องเพิ่ม<br/>s ในโพสต์ของคุณเพียงแค่ทำย่อหน้าตามที่ต้องการและในขณะที่คุณอยู่โปรดใช้การใช้ตัวพิมพ์ใหญ่ให้ถูกต้องซึ่งจะทำให้โพสต์ของคุณอ่านง่ายขึ้น)
slhck

BTW ไม่จำเป็นต้องใช้bgหรือเมื่อใช้nohup screenนอกจากนี้คำถามนี้เกี่ยวข้อง
justbrowsing

คุณตรวจสอบกระทู้นี้ @ stack overflow stackoverflow.com/questions/285015/…
Ashildr

คำตอบ:


46

เมื่อคุณใช้screenคุณต้องแยกกับCTRL+A+ ก่อนที่คุณจะออกจากDssh

อีกวิธีหนึ่งถ้าคุณต้องการเรียกใช้กระบวนการโดยตรงด้วยหน้าจอคุณสามารถใช้

screen -dmSL [session name] [commands]
  • -d เริ่มเซสชันของหน้าจอและแยกออกจากทันที
  • -m บังคับให้สร้างเซสชันหน้าจอใหม่
  • -S ให้คุณตั้งชื่อเซสชั่น
  • -L เปิดการเข้าสู่ระบบ ~/screenlog.0

ตัวอย่าง:

screen -dmSL workstuff myscript.sh

จากนั้นคุณสามารถ:

ใช้งานต่อในภายหลัง screen -x workstuff

หรือ

ตรวจสอบไฟล์บันทึก less -r ~/screenlog.0


14

tmuxใช้ ฉันไม่แน่ใจว่าscreenจะยังอยู่ภายใต้การพัฒนาที่ใช้งานอยู่ มันเป็นสิ่งที่ชอบ แต่ในฐานะคนที่ใช้tmuxฉันสามารถยืนยันได้ว่ามันใช้เวลาประมาณ 5 นาทีและทำงานได้อย่างสมบูรณ์

บนระบบที่ใช้ Debian (บนเครื่องรีโมต):

sudo apt-get install tmux

จากนั้นป้อนtmuxเพื่อป้อนเรียกใช้กระบวนการที่คุณต้องการและกดCtrl+ Bจากนั้นD(นี่จะออกจากเซสชัน tmux) จากนั้นคุณสามารถออกจาก SSH

เมื่อคุณต้องการที่จะกลับมา / ตรวจสอบเกี่ยวกับมันอีกครั้งเริ่มต้นขึ้น SSH tmux attachและป้อน มันจะนำคุณกลับไปที่tmuxเซสชั่นของคุณ

tmuxมีความสามารถเพิ่มเติมมากมายตามรายละเอียดที่นี่ แต่สิ่งนี้ควรแก้ปัญหาเฉพาะหน้าของคุณ

โชคดี!


7

ในที่สุดฉันแก้ไขโดยใช้screen:

CtrlADในโหมดหน้าจอถอดได้โดยใช้ จากนั้นคุณสามารถปิดหน้าต่าง SSH


5

nohup use: คำสั่งแรกด้านล่างเริ่มโปรแกรม abcd ในพื้นหลังในลักษณะที่ออกจากระบบที่ตามมาไม่ได้หยุดมัน

$ nohup abcd &

$ exit

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