程序組、會話和作業控制



本章我們將學習程序組、會話和作業控制。

程序組 − 程序組是一個或多個程序的集合。一個程序組包含一個或多個共享相同程序組識別符號 (PGID) 的程序。程序組 ID (PGID) 與程序 ID (pid_t) 型別相同。一個程序組有一個程序組組長,它是建立該組的程序,其程序 ID 成為該組的程序組 ID。

會話 − 它是由多個程序組組成的集合。

作業控制 − 這允許 shell 使用者同時執行多個命令(或作業),一個在前臺,其餘的在後臺。也可以將作業從前臺移動到後臺,反之亦然。

讓我們透過使用 shell (BASH) 的示例程式來理解這一點。

  • 執行基本命令(date、echo、sleep 和 cal)的 shell 指令碼(在 BASH 中),命名為 basic_commands.sh

  • 執行基本命令(ps、echo)的 shell 指令碼(在 BASH 中)

#!/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 等)。如果正在執行的作業在後臺,則可以在前臺執行任何其他任務。要獲取作業列表,請使用命令 jobs。也可以使用 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
廣告
© . All rights reserved.