前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >实验(十)任务管理、进程管理

实验(十)任务管理、进程管理

原创
作者头像
esse LL
修改2023-05-17 12:37:13
1.3K0
修改2023-05-17 12:37:13
举报
文章被收录于专栏:操作系统实验

1. 新建工作目录

目录命名为班级加姓名的格式,如 1banz3

参考代码:

代码语言:shell
复制
mkdir 1banz3
# 切到 1banz3 目录:
cd 1banz3

2. 后台运行任务

新建 test.sh 脚本,输入以下代码:

代码语言:shell
复制
#!/bin/bash
int=1
while [ $int -le 10 ]
do 
	echo $int
	int=$[$int+1]
	sleep 1s
done

其中,while循环的条件是变量 int<=10 ,每次循环都打出变量int的值,然后int的值增加1,随后程序等待1秒,等待结束后再进入下次循环。

解释运行脚本,脚本名称后加上 & 参数使程序在后台运行(而非采取默认的前台运行方式):

代码语言:shell
复制
bash test.sh &

程序运行后,每打印一个数字,都会暂停一秒。因此,打印10个数字总共暂停了10次,程序一共用时10秒种。类似的,打印 x 个数字,每次暂停 y 秒,则用时 x×y 秒 。

可以使用 jobs 命令查看后台运行的进程。-l 选项表示列出进程ID,-s 选项表示查看后台已暂停的任务,-r 选项表示查看处于运行状态的任务。

3. fg 和 bg 操作

使用fg命令将后台暂停的任务恢复到前台运行,不带参数的情况下,会恢复带有"+"标志的任务,也可以使用参数指定任务ID。

使用bg命令可以让后台暂停的任务继续在后台执行,类似fg操作,不带参数的情况下bg默认恢复带有"+"标志的任务,也可以使用参数指定任务ID。

例如, vi a.sh & 命令会启动vi程序,并在后台运行,通过 jobs 命令可以看到此任务处于挂起(suspend)状态:

使用jobs命令列出所有任务(任务)
使用jobs命令列出所有任务(任务)

运行fg命令,带有+号的任务会恢复到前台运行,恢复后可以照常使用vi文本编辑程序。

4. 暂停和恢复任务

新建 work.sh 脚本,输入以下代码:

代码语言:shell
复制
#!/bin/bash
for((i=1;i<=10;i++))
do 
	echo $i 
	sleep 1s
done
find /usr/ -name lib > findresult.txt

其中,每次循环都会打出变量i的值,然后暂停一秒钟,一共循环10次。

解释运行脚本,按 Ctrl Z 中止(暂停)该进程并放入后台,然后用job命令查看后台的任务。

解释运行程序,中止任务,使用jobs命令查看对应的任务
解释运行程序,中止任务,使用jobs命令查看对应的任务

使用fg命令将后台暂停的任务恢复到前台运行。

再次按 Ctrl Z 中止该进程并放入后台。

使用fg命令回复任务至前台,并再次中止任务
使用fg命令回复任务至前台,并再次中止任务

使用bg命令让后台暂停的任务继续在后台运行。

任务在后台继续运行(打出10表示任务已运行完毕)
任务在后台继续运行(打出10表示任务已运行完毕)

5. 查看进程

pstop 命令可以查看系统进程及相关信息

使用 ps 命令可以用 -l 选项查看进程的详细信息, -u 选项查看进程对应的用户。

6. 查看指定进程

解释运行 work.sh 脚本文件,在运行过程中按 CTRL Z 将此任务放入后台:

将 work.sh 任务放入后台
将 work.sh 任务放入后台

使用 ps 命令查看执行work.sh任务的进程ID:

代码语言:shell
复制
# -aux 选项表示查看所有详细信息
ps -aux | grep "work.sh"
# -ef 选项表示查看全格式信息
ps -ef | grep "work.sh"

7. 监听指定进程

使用ps命令查看work.sh任务,可以看到对应的进程PID是86。(此处按实际运行结果,查看到进程PID有多种可能,注意根据查看到的PID修改命令中对应的PID)

代码语言:shell
复制
top -b -n 10 -p 86 > worklog.txt &
# 注意修改进程PID,这个例子中是86,自己用命令的时候要改成上一步看到的PID

执行top命令,并使其在后台运行,可以通过 jobs 命令看到多出了一条新的任务记录,显然是top命令对应的任务:

使用 fg 命令恢复带“+”号的work.sh任务至前台,运行完毕后,top任务也会随之运行完毕。

可以用 cat 命令查看worklog.txt中top命令的监听结果:

代码语言:shell
复制
cat worklog.txt

执行结果如下:(仅截图部分内容)

8. 杀灭进程(一)

使用 kill 命令可以终止进程, -l 选项表示列出全部信号名称。kill命令实际上是向进程发送信号,信号有很多种,对应多种用途。若不指定信号参数,将发送 SIGTERM(15) 终止指定进程。

kill命令可以使用 -KILL 选项强制结束进程,对应的信号为 SIGKILL(9)

首先,(1)使用yum安装httpd

代码语言:shell
复制
sudo yum install httpd

(2)启动httpd服务

代码语言:shell
复制
systemctl start httpd

(3)查看httpd相关进程

代码语言:shell
复制
ps -aux | grep "httpd" | grep -v "grep"
# 也可以使用pstree命令查看树状图形式的进程关系
pstree -p | grep "httpd" | grep -v "grep"
查看进程树状图
查看进程树状图

(4)使用kill命令终止httpd的一个子进程(668号进程)

代码语言:shell
复制
kill 668
终止668号进程
终止668号进程

(5)重启httpd的主进程(注意参数是阿拉伯数字1)

代码语言:shell
复制
kill -1 663
重启httpd进程
重启httpd进程

(6)使用 killall 命令杀死httpd进程

代码语言:shell
复制
killall httpd

再次查看httpd的相关进程,结果为空:

使用killall杀死httpd进程
使用killall杀死httpd进程

9. 杀灭进程(二)

也可以使用 pkill 命令终止进程

首先,(1)用vi打开 work.sh 脚本,加上&参数使任务在后台运行

代码语言:shell
复制
vi work.sh &
启动vi程序
启动vi程序

(2)使用ps命令查看有关进程

代码语言:shell
复制
ps -aux | grep "work.sh" | grep -v "grep"
使用ps查看进程
使用ps查看进程

(3)使用pkill命令强制关闭进程

代码语言:shell
复制
pkill -9 vi
使用pkill终止进程
使用pkill终止进程

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 新建工作目录
  • 2. 后台运行任务
  • 3. fg 和 bg 操作
  • 4. 暂停和恢复任务
  • 5. 查看进程
  • 6. 查看指定进程
  • 7. 监听指定进程
  • 8. 杀灭进程(一)
  • 9. 杀灭进程(二)
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档