นอกจากนี้nohup
คุณสามารถเปิดใช้งานกระบวนการในพื้นหลังโดยใช้ "&" และ subshell:
ต่อท้ายคำสั่งด้วย & และล้อมรอบในวงเล็บ
$ (thecommand args &)
ให้บอกว่ากระบวนการของคุณได้รับ pid 1922:
$ ps -f
UID PID PPID C STIME TTY TIME CMD
usr 11473 2643 0 15:07 pts/1 00:00:00 bash
usr 11922 1 0 15:11 pts/1 00:00:00 thecommand
ดูว่ามันไม่ได้เชื่อมต่อจากกระบวนการเชลล์ 11473 ซึ่งเป็นพาเรนต์ดั้งเดิม ดังนั้นหากคุณออกหรือฆ่าเชลล์ปัจจุบัน (11473) กระบวนการ 11922 จะยังคงทำงานต่อไปและมันจะถูกตัดการเชื่อมต่อจาก pts
ลองออกจากเปลือกและใส่ในเปลือกใหม่ แม้ว่าเชลล์นี้เชื่อมต่อกับ pts เดียวกันคุณสามารถดูกระบวนการได้โดยไม่ต้องใช้ pts:
$ ps -fp 11922
UID PID PPID C STIME TTY TIME CMD
usr 11922 1 0 15:11 ? 00:00:00 thecommand
ฉันไม่ได้เรียกหรือจัดทำเป็นเอกสารใน Posix แต่ฉันใช้วิธีนี้มาตั้งแต่ปี 1990 ใน bsh, ksh และตอนนี้ทุบตี
สุดท้ายคุณสามารถใช้bg
คำสั่ง builtin shell:
เพียงเปิดโปรแกรมของคุณและถ้าคุณตัดสินใจที่จะหยุดชั่วคราวหรือวางแผนที่จะเก็บมันไว้ในพื้นหลังให้พิมพ์ CTRL + Z:
$ thecommand
^Z
[1] Stopped thecommand
ตอนนี้ปล่อยให้มันทำงานในพื้นหลังต่อไป:
$ bg
[1]+ thecommand &
หากคุณดูที่กระบวนการข่าวสารนั้นยังมีกระบวนการหลัก:
$ ps -f
UID PID PPID C STIME TTY TIME CMD
usr 12046 2643 0 15:18 pts/6 00:00:00 bash
usr 12571 12046 0 16:00 pts/6 00:00:00 thecommand
usr 12601 12046 0 16:04 pts/6 00:00:00 ps -f
ดังนั้นออกจากกระบวนการปัจจุบัน กระบวนการทำงานในพื้นหลังไม่ได้เชื่อมต่อจากพาเรนต์ดั้งเดิมและยังคงทำงานในพื้นหลัง:
$ exit
เข้าสู่ระบบอีกครั้งและดูข้อมูลกระบวนการ:
$ ps -f 12571
UID PID PPID C STIME TTY TIME CMD
usr 12571 1 0 16:00 ? 00:00:00 thecommand
disown
คำสั่ง มันกลับมา: bash: คำเตือน: การลบงานที่หยุด 1 กับกลุ่มกระบวนการ 24876 ตอนนี้งานของฉันอยู่ในรายการps -all
แต่ดูเหมือนจะไม่ทำงาน (การใช้งาน CPU คือ 0%)