nohup เทียบกับหน้าจอ


39

ก่อนหน้านี้ฉันเคยnohupทำงานที่มีพื้นหลังใหญ่ แต่ฉันสังเกตเห็นว่ามีผู้คนจำนวนมากที่ใช้งานscreenในบริบทนี้ ไม่screenให้ชนิดของความได้เปรียบการทำงานบางอย่างที่ผมไม่รู้หรือมันเป็นเพียงเรื่องของการตั้งค่าหรือไม่?

คำตอบ:


25

ทั้งสองมี plusses และ minuses ของตัวเอง:

nohup:

  1. nohup เป็นสิ่งที่ดีที่จะใช้สำหรับการเรียกใช้กระบวนการในพื้นหลังเมื่อกระบวนการไม่จำเป็นต้องใส่ผู้ใช้ใด ๆ เช่นเว็บเซิร์ฟเวอร์หรือกระบวนการเซิร์ฟเวอร์อื่น ๆ เช่นนั้น
  2. nohup สร้างบันทึกในไดเรกทอรีของการดำเนินการ nohup.outชื่อแฟ้มบันทึกเป็น
  3. มันหลีกเลี่ยงกระบวนการที่ถูกฆ่าเนื่องจากการเข้าใจผิด Ctrl+ Cหรือการรวมกันของคีย์ที่คล้ายกัน เพียงป้องกัน
  4. โดยปกติจะติดตั้งตามค่าเริ่มต้นด้วยการตั้งค่าพื้นฐาน ไม่จำเป็นต้องติดตั้งแยกต่างหากเหมือนหน้าจอ
  5. ฟังก์ชันนี้มีความเฉพาะเจาะจงมากในการทำงานในพื้นหลังและเอาท์พุทการทุ่มตลาด หน่วยความจำเหลือน้อย

หน้าจอ:

  1. ต้องติดตั้งแยกต่างหาก คุณไม่สามารถไปที่ศูนย์ข้อมูลหรือเข้าสู่กล่องใด ๆ และหน้าจอคาดว่าจะปรากฏ
  2. เหมาะสำหรับการจัดการเทอร์มินัลหลาย ๆ ตัวแยกกันและตั้งชื่อให้
  3. ตัวจัดการเทอร์มินัลมากกว่านั้นไม่ใช่คำสั่งให้เรียกใช้กระบวนการสำหรับเวลาที่ไม่มีที่สิ้นสุดเช่น nohup
  4. จะเหมาะสมกว่าหากกระบวนการต้องการอินพุตของผู้ใช้ เช่นเดียวกับสคริปต์การติดตั้งแจ้งเตือนใช่ / ไม่ใช่
  5. ด้วยคุณสมบัติมากมายตันหน่วยความจำมาพร้อม แต่ตกลงบางคุณสมบัติที่ยอดเยี่ยมจริงๆ

@rahmu ฉันจะไม่เดา pid ถ้าต้องการจะฆ่ามัน ต้องแน่ใจก่อนฆ่าใครบางคน / บางสิ่ง;)

วิธีที่ดีที่สุดในทั้งสองกรณีสำหรับหน้าจอและ nohup ps -eaf | grep "nohup" | grep "your proc name/keyword"คือ:

ใช้หน้าจอและตรวจสอบสิ่งที่กำลังทำงานอยู่

เพื่อสรุปว่าพวกเขาเป็นสองสิ่งที่แตกต่างกันที่ทำกับวาระที่แตกต่างกันดังนั้นการเปรียบเทียบเป็นเรื่องยาก


20

หน้าจอมีคุณสมบัติมากมาย ไม่เพียงแค่ "daemonize" กระบวนการ แต่เป็นโปรแกรมจัดการหน้าต่างสำหรับเทอร์มินัล

มันสามารถใช้ถ้ากระบวนการต้องการอินพุตในบางจุดคุณสามารถไปและตรวจสอบผลลัพธ์ของกระบวนการเชื่อมต่อกับเทอร์มินัล ...

ดังนั้นไม่มันไม่ใช่แค่เรื่องของความชอบพวกเขาไม่เหมือนกันเลย


4
คุณสามารถตรวจสอบผลลัพธ์ด้วยnohup [...] > fileName.log 2>&1เช่นกัน บวกนั่นหมายความว่าเอาต์พุตไม่ได้หายไป
Sardathrion - Reinstate Monica

1
ฉันชอบคำอธิบายของหน้าจอ: "ผู้จัดการหน้าต่างสำหรับอาคาร"!
rickumali

7

screen ช่วยให้คุณ:

  1. กลับมาที่หน้าจอการทำงานจริงส่งสัญญาณดูว่ามันไปเร็วแค่ไหนดูว่ามีข้อความผิดพลาดหรือไม่
  2. กระบวนการชื่อที่มีชื่อที่มีความหมาย ถ้าคุณต้องการที่จะฆ่าหนึ่งกระบวนการคุณไม่จำเป็นต้องคาดเดาเกี่ยวกับรหัสกระบวนการของมัน

-2
  1. ความคืบหน้ากระบวนการสามารถตรวจสอบได้โดยการnohupดีบักเขตข้อมูล
  2. ps ax | grep nohup จะแสดงรหัสของกระบวนการและคุณสามารถฆ่ามันได้
  3. nohupเร็วกว่า. เหตุผลง่าย ๆ ก็คือมันขึ้นอยู่กับการเชื่อมต่ออินเทอร์เน็ตระหว่างพีซีของคุณกับเซิร์ฟเวอร์ เมื่อใดก็ตามที่อินเทอร์เน็ตช้าลงกระบวนการก็จะช้าเช่นกัน

2
ฉันไม่เข้าใจประเด็นที่ 3 คุณช่วยอธิบายได้ไหม?
mattdm

1
จุดที่ 2 ไม่ถูกต้อง
jiggunjer

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