Linux实验_linux进程管理

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


提示:以下是本篇文章正文内容,下面案例可供参考

一、实验目的

1.掌握Linux下进程管理的命令。
2.掌握Linux下作业管理的命令。

二、实验工具

一台带网卡的已安装好Linux的计算机

三、实验原理

1 进程(process):正在运行的程序,即程序只有再被系统载入了内存并运行后才能够叫做进程。
程序是磁盘文件,而进程则是内存中工作着的程序代码。
进程号:给每个正在运行的程序(进程)唯一一个标号.
进程与程序是有区别的,进程不是程序,虽然它由程序产生。程序只是一个静态的指令集合,不占系统的运行资源;而进程是一个随时都可能发生变化的、动态的、使用系统运行资源的程序,而且一个程序可以启动多个进程
进程Id(pid):指派给启动进程的唯一标识符
子进程:由其他进程所启动的进程
父进程:启动其他进程的进程
父进程id(ppid):创建了当前进程的父进程的pid
2 进程类型
前台进程:一个程序控制着标准输入输出 。
执行时shell暂时挂起,执行完毕退回Shell
后台进程:一个程序不从标准输入接受输入,一般也不将结果输出到标准输出.
守护进程(Daemon):系统服务器以后台方式存在,开机载入,关机结束。
Internet服务器inetd,Web服务器httpd .
没有控制终端 ,或隐藏控制终端
3 作业管理命令
直接将命令放到后台“执行”的&
将“当前”作业放到后台“暂停” 【ctrl】-z
观察当前后台作业的状态:jobs
将后台作业拿到前台处理:fg
让作业在后台运行:bg
管理后台作业:kill

4进程管理命令
进程查看:ps aux(静态)
进程查看:top(动态)
进程列表pstree
删除进程kill,killall
调整优先级:nice,renice
进程数据存放: /proc/*
5 [root@localhost ~]# grep ‘kcq’ /etc/passwd &
直接将命令放到后台“执行”的&
[1] 2905 -------------------------------------------- 》PID

[root@localhost ~]# kcq:x:0:0::/home/kcq:/bin/bash
kcqkcq:x:500:501::/home/kcqkcq:/bin/bash
光标
bg
bash: bg: job has terminated
[1]+  Done                    grep 'kcq' /etc/passwd
1
bash: 1: command not found
[1]+  Done                    grep 'kcq' /etc/passwd
grep 'kcq' /etc/passwd & >text.txt
[2] 2916
[1]   Done                    grep 'kcq' /etc/passwd
[root@localhost ~]# kcq:x:0:0::/home/kcq:/bin/bash
fg
bash: fg: job has terminated
[2]+  Done                    grep 'kcq' /etc/passwd
[root@localhost ~]# 

6 root@localhost ~]# vi ~/.bashrc
将“当前”作业放到后台“暂停” 【ctrl】-z
[1]+ Stopped vi ~/.bashrc
You have new mail in /var/spool/mail/root
[root@localhost ~]#

7观察当前后台作业的状态:jobs
[root@localhost ~]# jobs
[1]+ Stopped vi ~/.bashrc
[root@localhost ~]# jobs -l
[1]+ 3129 停止 vi ~/.bashrc
jobs - l 表示列出作业号,PID
jobs -r (run)列出运行的作业
jobs -s (stop)停止列出的作业
+表示默认的作业
root@localhost ~]# grep ‘kcq’ /etc/passwd &
[2] 28978

[root@localhost ~]# kcq:x:0:0::/home/kcq:/bin/bash
jobs -r
[2]-  Done                    grep 'kcq' /etc/passwd
[root@localhost ~]# jobs -s
[1]+  Stopped                 vi ~/.bashrc

8将后台作业拿到前台处理:fg
fg % jobnumber
[root@localhost ~]# jobs -l
[1]+ 3129 停止 vi ~/.bashrc
[root@localhost ~]# fg
vi ~/.bashrc
进入VI编辑界面
[1]+ Stopped vi ~/.bashrc
9让作业在后台运行:bg
[root@localhost ~]# find / -perm +7000
/var/gdm
Ctrl+Z
[2]+ Stopped find / -perm +7000
[root@localhost ~]# jobs;bg %2;jobs
[1]- Stopped vi ~/.bashrc
[2]+ Stopped find / -perm +7000
[2]+ find / -perm +7000 &
[1]+ Stopped vi ~/.bashrc
[2]- Running find / -perm +7000 &
[root@localhost ~]# /var/spool/vbox
/var/spool/cups/tmp
10.管理后台作业:kill
kill signal %jobnumber
signal :-9立即强制删除
-15 正常程序结束
-l 列出可用信号
-1 重读参数设置文件
[root@localhost ~]# jobs
[1]+ Stopped vi ~/.bashrc
[root@localhost ~]#
[root@localhost ~]# kill -9 %1

[1] 已杀死 vi ~/.bashrc
  11.进程查看:ps
ps:察看当前所有运行中的所有进程的情况,它给出的是某一时刻静态的信息
ps a :显示所有终端上的进程,包括其他用户的
ps x :显示所有程序,不以终端机来区分
ps w:输出内容更详细
ps u:以面向用户的格式显示输出结果
ps f:可以显示进程之间的父子关系
ps aux 比较常用
root@localhost ~]# ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.1 2040 632 ? Ss 21:47 0:02 init [5

字段名意义
USER进程所有者的用户名
PID进程号,可以唯一标识该进程
%CPU进程自最近一次刷新以来所占用的CPU时间和总时间的百分比
%MEM进程使用内存的百分比
VSZ进程使用的虚拟内存大小,以K为单位
RSS进程占用的物理内存的总数量,以K为单位
TTY进程相关的终端
STAT进程状态,用下表代码中的一个给出
TIME进程使用的总CPU时间
COMMAND被执行的命令行
NI进程的优先级值,较小的数字意味着占用较少的CPU时间
PRI进程优先级
PPID父进程ID
WCHAN进程等待的内核事件名

12显示的进程列表pstree
[root@localhost ~]# pstree -A
13 进程查看:top(动态)
[root@localhost ~]# top -d 2

14 其他命令的使用(参考书本)
free
uname
netstat
dmesg
sar

15调整优先级:nice,renice

四、实验过程

1.进程管理
(1)使用ps命令查看和控制进程

  1. 显示本用户的进程:#ps。
  2. 显示所有用户的进程:#ps -au。
  3. 在后台运行cat命令:#cat &。
  4. 查看进程cat :# ps aux |grep cat。
  5. 杀死进程cat:#kill –9 cat。
  6. 再次查看查看进程cat,看看是否被杀死。

(2)使用top命令查看和控制进程

  1. 用top命令动态显示当前的进程。
  2. 只显示用户user01的进程(利用u键)。
  3. 利用k键,杀死指定进程号的进程。

(3)挂起和恢复进程

  1. 执行命令cat。
  2. 按Ctrl+z键,挂起进程cat。
  3. 输入jobs命令,查看作业。
  4. 输入bg,把cat切换到后台执行。
  5. 输入fg,把cat切换到前台执行。
  6. 按Ctrl+c键,结束进程cat。

(4)使用at命令定时执行某命令 下午4点,用户找出系统中所有的以.c为后缀的文件,将结果保存到/etc/result文件中,然后向user1发邮件告知用户已经完成。
1) #at 4pm
2) 出现at>提示符,输入;
at> find / -name “*.c” >/etc/result
at>echo “user1:All code file have been seached out.You can take them over.Bye”|mail –s “job done” user1
3) 按Ctl+D键结束at命令的输入

(5)安排计划任务
1) 查看crontab命令的帮助信息:#crontab -help。
2) 查看用户的计划任务列表:#crontab –l。
3) 建立一个crontab文件:#echo “45 11 22 7 * ls /etc” >cronfile。
7月22日11点45分执行ls /etc
4) 使用crontab命令安装crontab文件,安排计划任务:#crontab cronfile。
5) 查看计划任务表,看看计划任务是否已被安排:#crontab –l。
6) 删除计划任务列表,并进行确认。

(6)进程文件系统PROC;
1) 查看/proc目录下的内容;
2) 查看某进程的详细情况。

2.内存管理
使用free命令监视内存使用情况;使用vmstat命令监视虚拟内存情况;
  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Linux进程调度器是一个负责管理进程的代码模块,它负责从就绪队列中选择一个进程来运行,并将CPU时间片分配给该进程Linux进程调度器使用多种调度算法来决定哪个进程应该被选中运行。下面介绍几种常见的调度算法。 1. 时间片轮转调度算法 时间片轮转调度算法是一种基于时间片的调度算法。在这种算法中,每个进程被分配一个固定大小的时间片,当时间片用完后,进程将被放回就绪队列中,然后选择下一个进程来运行。这种算法确保了所有进程在一定时间内都能获得CPU时间。 2. 最短作业优先调度算法 最短作业优先调度算法是一种基于进程执行时间的调度算法。在这种算法中,进程被按照它们的执行时间排序,然后从最短的进程开始运行。这种算法可以确保短进程优先,但会导致长进程等待时间过长。 3. 优先级调度算法 优先级调度算法是一种基于进程优先级的调度算法。每个进程都有一个优先级值,较高优先级的进程将被优先选择运行。这种算法可以确保高优先级进程优先,但会导致低优先级进程饥饿。 4. 多级反馈队列调度算法 多级反馈队列调度算法是一种基于进程优先级和时间片的调度算法。在这种算法中,进程被分配到多个队列中,每个队列具有不同的优先级和时间片大小。当进程在当前队列中使用完其时间片时,它将被放在下一个队列中,直到完成为止。这种算法可以平衡短进程和长进程的等待时间。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

玄九Coral

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值