提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
提示:以下是本篇文章正文内容,下面案例可供参考
一、实验目的
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命令查看和控制进程
- 显示本用户的进程:#ps。
- 显示所有用户的进程:#ps -au。
- 在后台运行cat命令:#cat &。
- 查看进程cat :# ps aux |grep cat。
- 杀死进程cat:#kill –9 cat。
- 再次查看查看进程cat,看看是否被杀死。
(2)使用top命令查看和控制进程
- 用top命令动态显示当前的进程。
- 只显示用户user01的进程(利用u键)。
- 利用k键,杀死指定进程号的进程。
(3)挂起和恢复进程
- 执行命令cat。
- 按Ctrl+z键,挂起进程cat。
- 输入jobs命令,查看作业。
- 输入bg,把cat切换到后台执行。
- 输入fg,把cat切换到前台执行。
- 按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命令的输入
![](https://img-blog.csdnimg.cn/4d21303ac6da4a3c822c7c397e240d91.png)
(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) 删除计划任务列表,并进行确认。
![](https://img-blog.csdnimg.cn/0189fecb6f974fd38d1673fbac7aa386.png)
(6)进程文件系统PROC;
1) 查看/proc目录下的内容;
2) 查看某进程的详细情况。
![](https://img-blog.csdnimg.cn/ed0f03347762458ea764ffd11139e2e0.png)
![](https://img-blog.csdnimg.cn/e6b4798b4f5e4a6cb96dab84c2385404.png)
2.内存管理
使用free命令监视内存使用情况;使用vmstat命令监视虚拟内存情况;