1.查看进程树
问题
1)以用户zhangsan登入,完成下列操作
2)使用vim打开abc.txt文件,不要编辑、不退出
3)以用户root登入另一个终端,完成下列操作
4)查看整个系统的进程树,输出PID号、完整命令行
5)查找用户zhangsan的进程树
6)查找用户zhangsan的进程树,并显示PID与完整命令
方案
PID:既标识了一个进程,也说明了这个进程启动的顺序。
程序:保存在磁盘中的可执行文件,是静态保存的代码。
进程:在CPU及内存中运行的程序指令或是动态执行的代码。
父/子进程:进程可以创建一个或多个子进程。
Linux运行的用第一个进程为init进程号为1。
步骤
实现此案例需要按照如下步骤进行。
步骤一:以用户zhangsan登入,完成下列操作
分析: 按Ctrl+Shift+t再开一个终端,利用su命令切换进行操作,如图所示。
使用vim打开abc.txt文件,不要编辑、不退出
命令操作如下所示:
[zhangsan@localhost ~]$ vim abc.txt //按Enter回车即可
步骤二:以用户root登入另一个终端,完成下列操作
分析: 上题中zhangsan打开abc.txt的终端开着不用动,以供测试。
查看整个系统的进程树,输出PID号、完整命令行,命令操作如下所示:
[root@localhost ~]# pstree –aup //内容较多,简单看一下,可以结合管道
给less查看
查找用户zhangsan的进程树,命令操作如下所示:
[root@localhost ~]# pstree zhangsan
bash───vim
[root@localhost ~]#
查找用户zhangsan的进程树,并显示PID与完整命令,命令操作如下所示:
[root@localhost ~]# pstree -ap zhangsan
bash,2814
└─vim,3108 abc.txt
[root@localhost ~]#
2.查看进程快照
问题
1)以用户lisi登入,完成下列操作
2)使用vim打开nsd.txt文件,不要编辑、不退出
3)以用户root登入另一个终端,完成下列操作
4)查找用户lisi使用的bash进程的父进程名称、PID
5)根据查找结果,列出该父进程的进程树
方案
ps命令主要记住两个组合:一个是“aux”,记住前面没有“-”,另一个是“-elf”。要记住一点“-elf”,显示结果中有PPID为父ID值。
步骤
实现此案例需要按照如下步骤进行。
步骤一:以用户lisi登入,完成下列操作
分析: 按Ctrl+Shift+t再开一个终端,利用su命令切换进行操作,如图所示。
使用vim打开nsd.txt文件,不要编辑、不退出,命令操作如下所示:
[lisi@localhost ~]$ vim nsd.txt //按Enter回车即可
步骤二:以用户root登入另一个终端,完成下列操作
分析: 上题中lisi打开nsd.txt的终端开着不用动,以供测试。查找的是父进程,所以选项应是-elf。
查找用户lisi使用的bash进程的父进程名称、PID,命令操作如下所示:
[root@localhost ~]# ps -elf | grep lisi
4 S root 3260 2767 0 80 0 - 40936 wait 10:49 pts/1 00:00:00 su - lisi
4 S lisi 3261 3260 0 80 0 - 27084 n_tty_ 10:49 pts/1 00:00:00 -bash
0 S root 3340 2786 0 80 0 - 25814 pipe_w 10:55 pts/2 00:00:00 grep lisi
//其中3260为父进程的PID
根据查找结果,列出该父进程的进程树,命令操作如下所示:
[root@localhost ~]# pstree -aup 3260
su,3260 - lisi
└─bash,3261,lisi
[root@localhost ~]#
3.进程动态排名
问题
1)安装cpuburn测试软件
2)运行cpuburn测试软件10分钟
3)再开启另一个终端,输入top动态查看
4)按CPU占用率降序排列
5)杀掉其中CPU占用最高的进程
6)查看原终端cpuburn程序是否已杀死
方案
top命令是Linux中动态查看进程的命令,可以输入“P”(大写),来进行CPU占用率降序排列,我们可以按快捷键Ctrl+Shift+t在开启一个终端,在其中运行cpuburn程序,该程序会持续占用CPU。
我们可以在原终端运行top命令,观察cpuburn进程状态。可以输入“k”,在写上该进程的PID,将其杀死。
步骤
实现此案例需要按照如下步骤进行。
步骤一:安装cpuburn测试软件
分析: 上传该软件可以使用VMware tools工具,该软件解压完了就可直接使用。此软件是一个测试软件,运行后会耗用CPU非常高。
命令操作如下所示:
[root@localhost ~]# ls
anaconda-ks.cfg install.log 公共的 视频 文档 音乐
cpuburn-in.tar.gz install.log.syslog 模板 图片 下载 桌面
[root@localhost ~]# rm -rf /opt/*
[root@localhost ~]# tar -zxf /root/cpuburn-in.tar.gz -C /opt/
[root@localhost ~]# ls /opt/
cpuburn-in README
[root@localhost ~]#
步骤二:运行cpuburn测试软件10分钟
分析: 按Ctrl+Shift+t再开一个终端,运行cpuburn程序,如图所示。
命令操作如下所示:
[root@localhost ~]# ls /opt/
cpuburn-in README
[root@localhost ~]# grep cpuburn-in /opt/README //在README里有使用方式的介绍
"./cpuburn-in 10" will run the test for ten minutes.
[root@localhost ~]# /opt/cpuburn-in 10 //以绝对路径方式执行
-bash: /opt/cpuburn-in: /lib/ld-linux.so.2: bad ELF interpreter: 没有那个文件或目录 //出现报错看报错提示,缺少 ld-linux.so.2文件,利用yum安装即可
[root@localhost /]# yum -y install ld-linux.so.2
[root@localhost ~]# /opt/cpuburn-in 10
CPU Burn-in v1.00 - Linux
-------------------------
Michal Mienik (c) 2000. cluster2k@hotmail.com
0 iterations complete.
5000 iterations complete.
10000 iterations complete
.. ..
步骤三:再开启另一个终端,输入top动态查看
命令操作如下所示:
[root@localhost /]# top
top - 12:43:18 up 1:08, 2 users, load average: 0.91, 0.57, 0.28
Tasks: 117 total, 2 running, 115 sleeping, 0 stopped, 0 zombie
Cpu(s):100.0%us, 0.0%sy, 0.0%ni, 0.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 486284k total, 350248k used, 136036k free, 24260k buffers
Swap: 8388600k total, 0k used, 8388600k free, 203716k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
23592 root 20 0 2416 1004 328 R 99.7 0.2 1:25.26 cpuburn-in
23564 root 20 0 98.0m 4016 3044 S 0.3 0.8 0:00.21 sshd
23595 root 20 0 15036 1220 944 R 0.3 0.3 0:00.02 top
1 root 20 0 19356 1448 1140 S 0.0 0.3 0:01.10 init
……
按Shift+p可以按CPU使用率排序
按k键杀死CPU使用率最高者,按两次回车
top - 12:44:45 up 1:09, 2 users, load average: 0.98, 0.67, 0.34
Tasks: 117 total, 2 running, 115 sleeping, 0 stopped, 0 zombie
Cpu(s): 94.7%us, 2.6%sy, 0.0%ni, 0.0%id, 0.0%wa, 0.0%hi, 2.6%si, 0.0%st
Mem: 486284k total, 350248k used, 136036k free, 24268k buffers
Swap: 8388600k total, 0k used, 8388600k free, 203716k cached
PID to kill: 23592
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
23592 root 20 0 2416 1004 328 R 99.7 0.2 1:25.26 cpuburn-in
.. ..
步骤四:查看原终端cpuburn程序是否已杀死
命令操作如下所示:
2755000 iterations complete.
已终止
[root@localhost ~]#
4.检索进程信息
问题
1)以用户student登入,完成下列操作
2)使用vim打开student.txt,不编辑、不退出
3)切换到tty3终端,登入后执行top命令
4)以用户root登入另一个终端,完成下列操作
5)找出用户student所运行的进程名称、PID号
6)找出tty3终端上运行的进程名称、PID号
方案
检索进程命令为pgrep,基本格式:pgrep 关键词。
常用选项:-U 用户名、-t 终端名。
加选项 -l 可同时输出进程名,否则只输出PID。
步骤
实现此案例需要按照如下步骤进行。
步骤一:以用户student登入,完成下列操作
分析: 按Ctrl+Shift+t再开一个终端,利用su命令切换进行操作,如图所示。
使用vim打开student.txt文件,不要编辑、不退出,命令操作如下所示:
[student@localhost ~]$ vim student.txt //按Enter回车即可
切换到tty3终端,登入后执行top命令
分析: 要先给student设置一个密码,命令操作如下所示:
[root@localhost /]# passwd student
更改用户 student 的密码 。
新的 密码:
无效的密码: WAY 过短
无效的密码: 是回文
重新输入新的 密码:
passwd: 所有的身份验证令牌已经成功更新。
[root@localhost /]#
按Ctrl+Alt+F3进入第三个终端,如图所示登录。
命令操作如下所示:
[student@localhost ~]$ top
步骤二:以用户root登入另一个终端,完成下列操作
找出用户student所运行的进程名称、PID号。
命令操作如下所示:
[root@localhost /]# pgrep -l -U student
24312 bash
24355 bash
24379 vim
24423 bash
24467 top
[root@localhost /]#
找出tty3终端上运行的进程名称、PID号。
命令操作如下所示:
[root@localhost /]# pgrep -t tty3 -l
24423 bash
24467 top
[root@localhost /]#
5.进程的前后台调度
问题
1)测试xsnow软件的安装运行
2)调整PATH设置,直接执行xsnow即可运行此软件
3)在桌面环境启动xsnow程序,查看效果
4)进程前后台调度
5)将xsnow转入后台运行
6)列出后台运行了哪些程序,并显示PID
7)将后台的xsnow恢复到前台运行
8)挂起当前的xsnow程序
9)让后台的xsnow程序继续运行
方案
Ctrl+z 组合键,挂起当前进程(暂停并转入后台),要注意与“&”符号的区别,加“&”是不会暂停的。
jobs 命令:查看后台任务列表。
fg 命令:将后台任务恢复到前台运行。
bg 命令:激活后台被挂起的任务。
步骤
实现此案例需要按照如下步骤进行。
步骤一:测试xsnow软件的安装运行
分析: 利用VMware tools上传软件,搭建yum安装xsnow图形工具。
命令操作如下所示:
[root@localhost ~]# yum -y localinstall /root/xsnow-1.42-10.i386.rpm
调整PATH设置,直接执行xsnow即可运行此软件。
命令操作如下所示:
[root@localhost ~]# rpm -ql xsnow //查看xsnow软件安装清单
/usr/X11R6/bin/xsnow
/usr/X11R6/man/man1/xsnow.1x.gz
/usr/share/doc/xsnow-1.42
/usr/share/doc/xsnow-1.42/README
/usr/share/pixmaps/xsnow.png
[root@localhost ~]#/usr/X11R6/bin/xsnow //以绝对路径执行,图形终端会飘起雪花
[root@localhost ~]# echo $PATH //输出PATH变量的值
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
[root@localhost ~]# cp /usr/X11R6/bin/xsnow /bin/ //将可执行文件复制到PATH路径里
[root@localhost ~]# xsnow //不加路径直接运行测试
步骤二:进程前后台调度
将xsnow转入后台运行。
命令操作如下所示:
[root@localhost ~]# xsnow &
列出后台运行了哪些程序,并显示PID。
命令操作如下所示:
[root@localhost 桌面]# jobs -l
[1]+ 2389 Running xsnow &
[root@localhost 桌面]#
将后台的xsnow恢复到前台运行。
命令操作如下所示:
[root@localhost 桌面]# jobs
[1]+ Running xsnow &
[root@localhost 桌面]#
[root@localhost 桌面]# jobs
[1]+ Running xsnow &
[root@localhost 桌面]# fg 1
xsnow
挂起当前的xsnow程序。
命令操作如下所示:
[root@localhost 桌面]# fg 1
Xsnow
按ctrl+z暂停挂入后台
[root@localhost 桌面]# fg 1
xsnow
^Z
[1]+ Stopped xsnow
[root@localhost 桌面]#
让后台的xsnow程序继续运行。
命令操作如下所示:
[root@localhost 桌面]# jobs
[1]+ Stopped xsnow
[root@localhost 桌面]# bg 1
[1]+ xsnow &
[root@localhost 桌面]# jobs
[1]+ Running xsnow &
[root@localhost 桌面]#
6.终止进程的运行
问题
1)运行“sleep 600”命令
2)再开一个终端,查出sleep程序的PID并杀死
3)运行多个xsnow程序并都放入后台
4)杀死所有xsnow进程
5)su切换为zhangsan用户
6)再开一个终端,强制踢出zhangsan用户
方案
杀死进程的命令一般有kill、killall、pkill。
kill:只能针对PID来进行查杀。
killall:可以针对进程名来进行查杀,但进程名字必须是完整的,可以杀死多个。
pkill:可以进行模糊查杀,进程名字可以不写完整。
步骤
实现此案例需要按照如下步骤进行。
步骤一:运行“sleep 600”命令
分析: 按Ctrl+Shift+t再开一个终端,运行sleep命令,如图所示。
再另起一个终端操作,查出sleep程序的PID并杀死,命令操作如下所示:
[root@localhost 桌面]# ps aux | grep sleep
root 2738 0.0 0.0 100904 560 pts/1 S+ 14:16 0:00 sleep 600
root 2743 0.0 0.0 103256 848 pts/0 S+ 14:18 0:00 grep sleep
[root@localhost 桌面]# kill 2738
[root@localhost 桌面]#
返回运行sleep命令的终端查看,命令操作如下所示:
[root@localhost 桌面]# sleep 600
已终止
[root@localhost 桌面]#
步骤二:运行多个xsnow程序并都放入后台
命令操作如下所示:
[root@localhost 桌面]# xsnow & //加“&”放入后台运行
[1] 2771
[root@localhost 桌面]# Xsnow-1.42, December 14th 2001 by Rick Jansen (rja@euronet.nl)
WWW: http://www.euronet.nl/~rja/Xsnow/
[root@localhost 桌面]# xsnow &
[2] 2772
[root@localhost 桌面]# Xsnow-1.42, December 14th 2001 by Rick Jansen (rja@euronet.nl)
WWW: http://www.euronet.nl/~rja/Xsnow/
[root@localhost 桌面]# xsnow &
[3] 2773
[root@localhost 桌面]# Xsnow-1.42, December 14th 2001 by Rick Jansen (rja@euronet.nl)
WWW: http://www.euronet.nl/~rja/Xsnow/
[root@localhost 桌面]# jobs //查询后台进程
[1] Running xsnow &
[2]- Running xsnow &
[3]+ Running xsnow &
[root@localhost 桌面]#
杀死所有xsnow进程。
命令操作如下所示:
[root@localhost 桌面]# jobs //查询后台进程
[1] Running xsnow &
[2]- Running xsnow &
[3]+ Running xsnow &
[root@localhost 桌面]# killall xsnow //杀死进程名为xsnow
步骤三:su切换为zhangsan用户。
分析: 按ctrl+shift+t再开一个终端,通过su命令进行操作,如图所示。
再开一个终端,强制踢出zhangsan用户。
命令操作如下所示:
[root@localhost 桌面]# pkill -9 -U zhangsan
返回zhangsan登录终端查看:
[root@localhost 桌面]# su - zhangsan
[zhangsan@localhost ~]$ 已杀死 (core dumped)
[root@localhost 桌面]#
7.破解密码练习
问题
1)关闭计算机
2)启动计算机,在出现grub菜单时,按键盘上下键停在grub菜单
3)通过操作进入单用户模式,修改root密码为tarena
方案
启动Linux–>在grub菜单选择上下键按e–>选择kernel这行,在选择e -->在最后空格加上1,回车–>按b键启动。
进入单用户模式,修改密码。
步骤
实现此案例需要按照如下步骤进行。
步骤一:启动Linux在grub菜单选择上下键
如图所示,在此处按上下键停止在此界面(如果虚拟机总是很卡跳过此界面,可选择“开机到BIOS”再按F10保存退出即可看见),按e进入编辑。
如图所示,选择kernel这行,在选择e。
如图所示,在最后空格加上1,回车。
如图所示,按b键启动。
如图所示,执行passwd修改密码即可。切换运行级别5。