จะควบคุมกลับในกระบวนการแยกต่างหากใน Linux shell ได้อย่างไร?


2

ฉันเพิ่งตั้งเซิร์ฟเวอร์ Minecraft บน VPS สำหรับน้องชายของฉันแล้วฉันก็วิ่งไปพร้อมกับสคริปต์ทุบตี:
sh ./server.sh&

ด้วยวิธีนี้เซิร์ฟเวอร์กำลังทำงานและฉันยังคงสามารถทำงานบนบรรทัดคำสั่งเดียวกันกับผงสำหรับอุดรู แต่ถ้าฉันต้องการป้อนคำสั่งไปยังเซิร์ฟเวอร์ Minecraft ฉันจะกลับมาที่หน้าจอคอนโซลได้อย่างไร:
[10:17:23] [Server thread/INFO]: Starting minecraft server version 1.7.10 [10:17:23] [Server thread/INFO]: Loading properties [10:17:23] [Server thread/INFO]: Default game type: SURVIVAL [10:17:23] [Server thread/INFO]: Generating keypair [10:17:24] [Server thread/INFO]: Starting Minecraft server on *:25565 [10:17:24] [Server thread/INFO]: Preparing level "world" [10:17:24] [Server thread/INFO]: Preparing start region for level 0 [10:17:25] [Server thread/INFO]: Preparing spawn area: 52% [10:17:26] [Server thread/INFO]: Preparing spawn area: 99% [10:17:26] [Server thread/INFO]: Done (2.132s)! For help, type "help" or "?" <input line>

คำตอบ:


6

ฉันไปด้วย จอภาพ . การติดตั้งสามารถทำได้ผ่าน apt-get หลังจากนั้นคุณเพียงพิมพ์ screen ในพรอมต์ให้เริ่มต้นกระบวนการ (แม้จะไม่ส่งไปที่พื้นหลัง) ปิดเซสชันและกระบวนการยังคงทำงานต่อไป หากต้องการกลับไปที่หน้าจอเซสชันอีกครั้งคุณเพียงแค่กลับไปที่เครื่องและพิมพ์ screen -r. คุณสามารถแยกออกจากหน้าจอที่ใช้งานได้โดยกด CTRL+A ติดตามโดย CTRL+D.


ฉันคิดว่านี่เป็นวิธีที่ดีกว่าและทั่วไปกว่า คุณสามารถใส่คำสั่งประวัติย่อใน. bash_profile ของคุณ ฉันมี: ถ้า $ (screen -ls | grep -q pts); จากนั้นหน้าจอ -x; หน้าจออื่น -R; Fi
agtoever

6

ฉันจะนำงานพื้นหลังเข้าสู่เบื้องหน้าได้อย่างไร

ใช้ fg.

FG

ส่งงานไปเบื้องหน้า

วากยสัมพันธ์

fg [PID ... ]

ตัวเลือก :

หากระบุ PID งานที่มี id กลุ่มที่ระบุคือ   ใส่ในเบื้องหน้า

ส่งงานที่ระบุไปยังเบื้องหน้า ในขณะที่ทำงานเบื้องหน้าคือ   ดำเนินการปลาถูกระงับ หากไม่ได้ระบุงานไว้งานสุดท้ายที่จะทำ   ถูกนำมาใช้จะถูกวางไว้ในเบื้องหน้า

PID ของกระบวนการที่ต้องการมักจะพบโดยใช้กระบวนการ   การขยายตัว

ตัวอย่าง

วางงานด้วย id งาน 0 ในเบื้องหน้า:

fg% 0

แหล่ง fg ส่งงานให้เบื้องหน้า


ขอบคุณเพื่อน แต่ตอนนี้ฉันมีปัญหาอื่น ถ้าฉันใช้กระบวนการเซิร์ฟเวอร์ในพื้นหลังด้วย Ctrl + ฉันมีคำเตือนจากเชลล์: [1]+ Stopped sh /.../mineserv.sh และเมื่อฉันนำมันกลับไปเบื้องหน้าด้วย fgเซิร์ฟเวอร์เตือนฉันว่ากำลังใช้งาน xxxx ms อยู่ข้างหลังโดยที่ xxxx คือระยะเวลาที่ทำงานในพื้นหลัง ฉันจะได้รับกระบวนการไม่หยุดเมื่อส่งไปยังพื้นหลังได้อย่างไร
qreon

1
@qreon - หากคุณพิมพ์ bg ทันทีหลังจาก Ctrl-z มันจะทำงานในพื้นหลัง
AFH

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