鍍金池/ 教程/ Linux/ 進程組,會話和作業(yè)控制
命名管道
消息隊列
進程創(chuàng)建與終止
信號量
進程組,會話和作業(yè)控制
共享內(nèi)存
進程間通信簡介
子進程監(jiān)視
其他進程
覆蓋進程映像
進程信息
進程映像
內(nèi)存映射
相關(guān)系統(tǒng)調(diào)用(System V)
進程資源
System V & Posix
信號
進程間通信教程
管道

進程組,會話和作業(yè)控制

在本章中,我們將學(xué)習(xí)進程組,會話和作業(yè)控制。

進程組 - 進程組是一個或多個進程的集合。 進程組由共享相同進程組標(biāo)識符(PGID)的一個或多個進程組成。 進程組ID(PGID)與進程ID具有相同的類型(pid_t)。 進程組有一個進程組領(lǐng)導(dǎo),即創(chuàng)建組的進程,進程ID變?yōu)榻M的進程組標(biāo)識。

會話 - 它是各種進程組的集合。

作業(yè)控制 - 這允許shell用戶同時執(zhí)行多個命令(或作業(yè)),一個在前臺,另一個在后臺。 也可以將作業(yè)從前臺移動到后臺,反之亦然。

讓我們通過使用shell(BASH)的例子程序的幫助來理解這一點。

  • Shell腳本(在BASH中)執(zhí)行名為basic_commands.sh的基本命令(日期,回顯,睡眠和校準(zhǔn))
  • Shell腳本(在BASH中)執(zhí)行基本命令(ps,echo)

兩個Shell腳本如下 -

#!/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命令給文件執(zhí)行權(quán)限。 默認(rèn)情況下,普通文件只能讀取和寫入權(quán)限而不能執(zhí)行權(quán)限。

要停止當(dāng)前正在運行的進程,需要輸入CTRL + Z。 這給一個作業(yè)編號。 作業(yè)可以在前臺或后臺恢復(fù)。 如果需要,在前臺使用“fg”命令恢復(fù)作業(yè)。 如果需要,要在后臺恢復(fù)作業(yè),請使用“bg”命令。 通過使用它,它將只運行最后一個停止的進程。 如果您想要啟動除最后一個停止的進程之外呢? 只需使用fgbg(例如bg%2或bg%3等)之后的作業(yè)編號即可。 如果正在運行的作業(yè)在后臺,則可以在前臺運行任何其他任務(wù)。 要獲取作業(yè)列表,請使用命令 - jobs。 也可以用CTRL + Ckill命令終止進程。 您可以使用kill命令之后指定作業(yè)編號來終止作業(yè)。

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

上一篇:管道下一篇:子進程監(jiān)視