กลุ่มกระบวนการเซสชันและการควบคุมงาน

ในบทนี้เราจะทำความคุ้นเคยกับกลุ่มกระบวนการเซสชันและการควบคุมงาน

Process Group- กลุ่มกระบวนการคือกลุ่มของกระบวนการหนึ่งหรือหลายกระบวนการ กลุ่มกระบวนการประกอบด้วยกระบวนการอย่างน้อยหนึ่งกระบวนการที่ใช้ตัวระบุกลุ่มกระบวนการเดียวกัน (PGID) ID กลุ่มกระบวนการ (PGID) เป็นประเภทเดียวกัน (pid_t) กับ ID กระบวนการ กลุ่มกระบวนการมีหัวหน้ากลุ่มกระบวนการซึ่งเป็นกระบวนการที่สร้างกลุ่มและรหัสกระบวนการของใครจะกลายเป็น ID กลุ่มกระบวนการของกลุ่ม

Sessions - เป็นการรวบรวมกลุ่มกระบวนการต่างๆ

Job Control- อนุญาตให้ผู้ใช้เชลล์รันคำสั่ง (หรืองาน) หลายคำสั่งพร้อมกันโดยคำสั่งหนึ่งอยู่เบื้องหน้าและทั้งหมดที่เหลืออยู่ในพื้นหลัง นอกจากนี้ยังสามารถย้ายงานจากพื้นหน้าไปยังพื้นหลังและในทางกลับกัน

ให้เราเข้าใจสิ่งนี้ด้วยความช่วยเหลือของโปรแกรมตัวอย่างโดยใช้เชลล์ (BASH)

  • เชลล์สคริปต์ (ใน BASH) เพื่อดำเนินการคำสั่งพื้นฐาน (วันที่, เสียงสะท้อน, สลีปและแคล) ที่ชื่อ basic_commands.sh

  • เชลล์สคริปต์ (ใน BASH) เพื่อดำเนินการคำสั่งพื้นฐาน (ps, echo)

#!/bin/bash
#basic_commands.sh

date
echo "Now sleeping for 250 seconds, so that testing job control functionality is smooth"
sleep 250
cal
#!/bin/bash
#process_status.sh

ps
echo "Now sleeping for 200 seconds, so that testing job control functionality is smooth"
sleep 200
ps

ใช้คำสั่ง chmod เพื่อให้ไฟล์มีสิทธิ์ดำเนินการ ตามค่าเริ่มต้นไฟล์ปกติจะได้รับสิทธิ์ในการอ่านและเขียนเท่านั้นและไม่ดำเนินการอนุญาต

ในการหยุดกระบวนการทำงานปัจจุบันคุณต้องป้อน CTRL + Z สิ่งนี้จะให้หมายเลขงานแก่คุณ งานสามารถกลับมาทำงานต่อได้ทั้งในเบื้องหน้าหรือเบื้องหลัง หากจำเป็นในการดำเนินงานต่อในเบื้องหน้าให้ใช้คำสั่ง 'fg' หากจำเป็นในการทำงานต่อในพื้นหลังให้ใช้คำสั่ง 'bg' เมื่อใช้สิ่งนี้จะเรียกใช้เฉพาะกระบวนการที่หยุดล่าสุดเท่านั้น จะเกิดอะไรขึ้นหากคุณต้องการเริ่มต้นอื่นนอกเหนือจากกระบวนการที่หยุดล่าสุด เพียงใช้หมายเลขงานหลัง fg หรือ bg (เช่น bg% 2 หรือ bg% 3 เป็นต้น) หากงานที่กำลังทำงานอยู่อยู่เบื้องหลังคุณสามารถรันงานอื่น ๆ ที่อยู่เบื้องหน้าได้ ในการรับรายชื่องานให้ใช้คำสั่งงาน นอกจากนี้ยังสามารถยุติกระบวนการด้วย CTRL + C หรือคำสั่ง kill คุณสามารถส่งหมายเลขงานขณะใช้คำสั่ง kill

ตรวจสอบผลลัพธ์ต่อไปนี้ซึ่งแสดงให้เห็นถึงการหยุดงานการย้ายงานจากพื้นหน้าไปยังพื้นหลังและในทางกลับกันการยุติงาน ฯลฯ

chmod u+x basic_commands.sh
chmod u+x process_status.sh

./basic_commands.sh
Wed Jul 5 18:30:27 IST 2017
Now sleeping for 250 seconds, so that testing job control functionality is smooth
^Z
[1]+ Stopped ./basic_commands.sh
./process_status.sh
PID   TTY   TIME     CMD
2295  pts/1 00:00:00 bash
4222  pts/1 00:00:00 basic_commands.
4224  pts/1 00:00:00 sleep
4225  pts/1 00:00:00 process_status.
4226  pts/1 00:00:00 ps
Now sleeping for 200 seconds, so that testing job control functionality is smooth
^Z
[2]+ Stopped      ./process_status.sh
jobs
[1]- Stopped      ./basic_commands.sh
[2]+ Stopped      ./process_status.sh
fg
./process_status.sh
^Z
[2]+ Stopped      ./process_status.sh
fg %2
./process_status.sh
^Z
[2]+ Stopped      ./process_status.sh
fg %1
./basic_commands.sh
^Z
[1]+ Stopped      ./basic_commands.sh

jobs
[1]+ Stopped      ./basic_commands.sh
[2]- Stopped      ./process_status.sh

bg %2
[2]- ./process_status.sh &
fg
./basic_commands.sh
^Z
[1]+ Stopped      ./basic_commands.sh
jobs
[1]+ Stopped      ./basic_commands.sh
[2]- Running      ./process_status.sh &
fg %2
./process_status.sh
^Z
[2]+ Stopped      ./process_status.sh
jobs
[1]- Stopped      ./basic_commands.sh
[2]+ Stopped      ./process_status.sh
kill %1 %2
[1]- Stopped      ./basic_commands.sh
[2]+ Stopped      ./process_status.sh

[1]- Terminated   ./basic_commands.sh
[2]+ Terminated   ./process_status.sh