实验7 - 进程管理 服务管理
学习目标
- 进程管理
- 进程查看、显示命令的执行时间
- 杀死、调整运行优先级
- 在后台执行进程,注销后保证进程继续执行
- 实施作业控制
服务管理
使用
systemctl
显示、启动和停止服务- 使用
systemctl
实现服务的持久化管理使用
service
和chkconfig/update-rc.d
管理服务cron 服务
修改配置文件安排 cron 任务
- 使用
crontab
命令安排 cron 任务- 控制使用 cron 的人员
*提交时间
- 网络工程221-4班,2024年5月25日(第12周 周六)23:00 与下次实验报告合并提交
*补交时间(补交满分80计算)
- 2024年5月26日(第12周 周日)23:00 与下次实验报告合并提交
*提交方法
- 电子版:在CG平台上提交
- 打印版:2024年5月27-28日(第13周 周一、周二)(网络221-224)
任务1:显示进程
显示出当前用户在shell下所运行的进程的信息
ps
常见的选项:
a:显示当前终端下的所有进程信息,包括其他用户的进程。
u:使用以用户为主的格式输出进程信息。
x:显示当前用户在所有终端下的进程。
-e:显示系统内的所有进程信息。
-l:使用长(long)格式显示进程信息。
-f:使用完整的(full)格式显示进程信息。
只查看用户 学生姓名 (如没有自行创建)的进程的信息(pgrep) ( 结果截图 )
列出系统中正在运行的所有进程的详细信息
列出系统中正在运行的所有进程的详细信息,并想看清所运行的进程的完整命令行 结果截图 )
ps aux
- 列出系统中正在运行的所有进程的详细信息,对 -pcpu 输出列进行排序
ps aux --sort=-pcpu
显示系统进程树 ( 结果截图 )
列出 系统中任意 组运行的所有进程的PID (ps -G)( 结果截图 )
列出 root 用户或 daemon 用户运行的所有进程的PID ( 结果截图 )
任务2:进程管理
- 在前台运行第1个 sleep 进程(1小时),然后以交互方式挂起之
sleep 3600
<ctrl-z>
jobs #查看
在后台运行第2个 sleep 进程(2小时)
列出所有正在运行的作业状态 (jobs -r)
列出所有正在运行的作业状态,同时列出进程PID (jobs -rp)( 结果截图 )
将第1个 sleep 进程调度到后台继续执行 (jobs 查看)
bg %sleep\ 3600
- 列出所有正在运行的作业状态,同时列出进程PID ( 结果截图 )
jobs -rp
- 显示所有名为 sleep 进程的 pid 和 nice 值 ( 结果截图 )
ps -o pid,ni,command | grep "sleep"
581 0 sleep 3600
611 5 sleep 7200
1185 0 grep --color=auto --exclude-dir=.bzr --exclude-dir=CVS --exclude-dir=.git --exclude-dir=.hg --exclude-dir=.svn sleep
ps -o pid,ni,command | egrep "sleep|PID"
PID NI COMMAND
581 0 sleep 3600
611 5 sleep 7200
1247 0 grep -E sleep|PID
尝试调高第1个 sleep 进程的优先级(renice)
尝试调低第1个 sleep 进程的优先级(#注意!调低nice值需要root权限)( sleep进程 nice值 结果截图 )
尝试再次调高第1个 sleep 进程的优先级 ( sleep进程 nice值 结果截图 )
将第1个 sleep 进程调度到前台
fg %sleep\ 3600
- 终止第1个 sleep 进程的执行
<ctrl-c> #交互的方式
- 杀死第2个 sleep 进程
kill 611
- 强行杀死名为 bash 的进程,发生了什么?为什么?
kill -s 9 6837
终端关闭,因为终端正在使用bash
提示 请使用 学生姓名 和 root 身份分别执行上面的作业控制,找出不同之处
任务3:守护进程(服务)管理
显示当前已运行的所有服务(systemctl--type service)( 结果截图 )
查看所有服务是否在启动系统时启用(-t)( 结果截图 )
显示 cron 服务是否正在运行 ( 结果截图 )
显示 cron 服务是否在启动时运行
显示 cron 服务的运行状态( 结果截图 )
关闭正在运行的 cron 服务
显示 cron 服务的运行状态 ( 结果截图 )
启动 cron 服务
禁止 cron 服务在启动时运行
启用 cron 服务在启动时运行
任务4:修改配置文件安排 cron 任务
- 请在 /etc/cron.d/test 文件中完成下列任务
- 每小时第1分钟将系统平均负载信息以追加方式写入 /root/load 文件
- 每隔3小时的30分时将磁盘剩余信息以追加方式写入 /root/du 文件
- 每周1-5晚10点将 /data/work 目录中的内容向 /backup/data/work 同步一次
- 每月1日和15日凌晨1:30重新启动一次 httpd 服务
- 每天凌晨 0:30 找出 /backup 目录下 90 天以前修改过的文件并将其删除
vim /etc/cron.d/test
1 * * * * uptime>>/root/load
30 */3 * * * df -hl>>/root/du
* 22 * * 1-5 cp -r /data/work /backup/data/work
30 1 1,15 * * systemctl restart httpd
30 0 * * * find /backup -mtime +90 -type f -name "*" -exec rm -rf {} \;
任务时间结束后,( 将上述文件结果截图 )
- 提示 此文件修改后需要重新 restart/reload cron 服务吗?
- 无需重启cron
任务5:使用 crontab
命令安排 cron 任务
切换 学生姓名 用户身份,完成如下任务
每天 7:00 找出 ~/学生姓名 目录下尺寸最大的 10 个文件列表写入 ~/学生姓名/maxsize 文件
每隔 5 天凌晨的 2 点删除 ~/学生姓名/temp 目录下的所有文件
每周日凌晨的 2 点将 ~/学生姓名/data 同步到 ~/学生姓名/bak/data
crontab -e
0 7 * * * find ~/学生姓名 -type f -print0 | xargs -0 du -h | sort -rh | head -n 10 0 2 */5 * * rm -rf ~/学生姓名/temp 0 2 * * 0 cp -r ~/学生姓名/data ~/学生姓名/bak/data
任务时间结束后,( 将上述文件结果截图 )
配置仅允许 学生姓名1 和 学生姓名2 用户安排 cron 任务 ( 结果截图 )
vim /etc/cron.allow
学生姓名1 学生姓名2
任务6:启动界面管理
切换启动界面为文本模式(init 3)
切换启动界面为图形界面(init 5)
任务7:AT任务
查看系统当前时间(date)( 结果截图 )
使用at安排一个任务1分钟后执行
$ at now + 1 minutes
at> []
at> <ctrl+D> #退出
查看at任务(atq)
查看任务是否成功执行( 结果截图 )
$ at now + 1 minutes
at> echo "姓名" > /学号.txt
at> <ctrl+D> #退出
如果成功会在根目录下生成 学号.txt ,内容为 学生姓名
习题
- 解释:
systemctl set-default graphical.target
与ps -ef
- 写出命令:强行中止进程号为5581的进程