Nhóm Quy trình, Phiên & Kiểm soát Công việc

Trong chương này, chúng ta sẽ làm quen với Nhóm quy trình, Phiên và Kiểm soát công việc.

Process Group- Nhóm quá trình là tập hợp của một hoặc nhiều quá trình. Nhóm quy trình bao gồm một hoặc nhiều quy trình chia sẻ cùng một định danh nhóm quy trình (PGID). ID nhóm quy trình (PGID) cùng loại (pid_t) với ID quy trình. Một nhóm quy trình có một trưởng nhóm quy trình, là quy trình tạo ra nhóm và ID quy trình của nó trở thành ID quy trình của nhóm.

Sessions - Nó là một tập hợp của nhiều nhóm quy trình khác nhau.

Job Control- Điều này cho phép người dùng trình bao thực hiện đồng thời nhiều lệnh (hoặc công việc), một lệnh ở nền trước và tất cả các lệnh còn lại ở chế độ nền. Cũng có thể di chuyển các công việc từ nền trước sang nền sau và ngược lại.

Hãy để chúng tôi hiểu điều này với sự trợ giúp của / các chương trình ví dụ sử dụng shell (BASH).

  • Tập lệnh Shell (trong BASH) để thực hiện các lệnh cơ bản (ngày, tiếng vang, giấc ngủ và cal) có tên basic_commands.sh

  • Tập lệnh Shell (trong BASH) để thực hiện các lệnh cơ bản (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

Sử dụng lệnh chmod để cấp cho tệp quyền thực thi. Theo mặc định, tệp bình thường sẽ chỉ nhận được quyền đọc và ghi chứ không thực thi quyền.

Để dừng quá trình đang chạy hiện tại, bạn cần nhập CTRL + Z. Điều này cung cấp cho bạn một số công việc. Công việc có thể được tiếp tục ở nền trước hoặc nền sau. Nếu cần, để tiếp tục công việc ở phía trước, hãy sử dụng lệnh 'fg'. Nếu cần, để tiếp tục công việc trong nền, hãy sử dụng lệnh 'bg'. Bằng cách sử dụng này, nó sẽ chỉ chạy quá trình dừng cuối cùng. Điều gì sẽ xảy ra nếu bạn muốn bắt đầu khác với quá trình đã dừng cuối cùng? Chỉ cần sử dụng số công việc sau fg hoặc bg (giả sử bg% 2 hoặc bg% 3, v.v.). Nếu công việc đang chạy ở chế độ nền, bạn có thể chạy bất kỳ tác vụ nào khác trong nền trước. Để lấy danh sách các công việc, hãy sử dụng lệnh, các công việc. Cũng có thể kết thúc quá trình bằng CTRL + C hoặc lệnh kill. Bạn có thể chuyển số công việc trong khi sử dụng lệnh giết.

Kiểm tra kết quả đầu ra sau đây cho thấy việc dừng công việc, chuyển công việc từ nền trước sang nền sau và ngược lại, kết thúc công việc, v.v.

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