一、实验目的
- 掌握进程管理的常用命令(
ps
、pstree
、top
、systemctl
、killall
等)。 - 熟悉定时任务(
at
)与调度任务(crontab
)的设置与管理。 - 理解文件特殊权限(SUID、SGID、Sticky)的配置与作用。
二、实验内容
1. 进程管理
(1)练习进程状态查询命令ps、pstree、top
①ps命令练习:
$ ps -el //显示所有进程的详细信息(包括优先级PRI、nice值NI等),适用于查看系统级进程状态。 命令运行结果截图: $ ps -Af | more //以完整格式(包括命令行参数)列出所有进程,并分页显示,便于查看长命令 命令运行结果截图: $ ps -t /dev/tty1 //显示与终端tty1关联的进程,适用于排查特定终端的问题。 命令运行结果截图: $ ps -f -u gjshao //查询整个系统内的进程信息情况 $ ps -axj //显示进程树结构(含父进程PPID、进程组PGID等),结合j参数展示更全面的进程关系。 命令运行结果截图: $ ps aux | grep nginx //查找nginx相关进程 命令运行结果截图: |
②pstree命令练习:
$ pstree -p # 显示PID及层次结构,以树状结构显示进程间父子关系。(需通过apt install psmisc安装。) 命令运行结果截图: $ pstree -p | grep log //查找log进程的树结构 |
③top命令练习:
$ top -u root # 仅显示root用户的进程,实时动态监控进程状态及系统资源(CPU、内存)。按 P(CPU排序)、M(内存排序)、k(终止进程)调整视图 命令运行结果截图: |
(2)练习进程管理命令systemctl、killall、pgrep/pkill、fuser、nice
①systemctl命令练习:
systemctl list-unit-files #列出所用可用单元 命令运行结果截图: systemctl list-units #列出所有运行中的单元 命令运行结果截图: systemctl is-enabled accounts-daemon.service #检查某个单元是否启用 命令运行结果截图: systemctl list-unit-files ?Ctype=service # 列出所有服务 命令运行结果截图: |
②killall命令练习:
killall -l //列出所有支持的信号 killall man //终止所有正在运行的“man” killall -9 bash //强制终止所有bash进程,适用于处理僵死进程 |
③pgrep/pkill命令练习:
pgrep vsftd //查找vsftd进程的PID,结合-u root可过滤用户 pgrep -a vstfd //查找名称或命令行包含vstfd的进程,并显示完整命令行和PID pgrep -u root named //查找属主为root且进程名为named的PID(如DNS守护进程) pgrep -d,-x httpd //精确匹配进程名为httpd的PID,并用逗号分隔输出结果(-d指定分隔符,-x精确匹配) pkill -HUP syslogd //:向syslogd发送HUP信号,使其重新加载配置文件 pkill -9 bash //强制终止所有bash进程(-9对应SIGKILL信号) |
④fuser命令练习:
fuser -k /dev/tty5 //终止占用tty5的进程 fuser telnet/tcp ftp/tcp //尝试列出使用telnet(23/tcp)和ftp(21/tcp)端口的进程。 fuser -u 23/tcp 21/tcp //显示占用23/tcp和21/tcp端口的进程及其所属用户(-u显示用户信息)。 fuser -n tcp 21 //等价于fuser 21/tcp,查看占用21端口的TCP进程(-n指定协议和端口)。 $ fuser -v /var/log/syslog // 显示占用该文件的进程信息 |
⑤nice命令练习:
nice myp & //以默认较低优先级(nice值+10)后台运行myp程序。 nice -15 myp& //启动myp进程,nice值设为15(较低优先级),ps -l可查看NI字段验证。 ps -l | grep myp //列出进程信息并通过grep过滤出myp进程,查看其优先级(NI列)和状态。 |
(3)练习可执行文件的特殊属性操作
①新建文件
使用vim新建文件,结果如下: |
②查看文件权限
使用命令ls -l可以看到文件权限 结果如下: |
③设置、修改、查看文件特殊权限suid、sgid及sticky
①设置、修改、查看文件特殊权限suid 运行chmod u+s lw.txt //为文件 lw.txt 设置 setuid 位(u+s) 运行结果截图如下: ②设置、修改、查看文件特殊权限sgid chmod g+s zhugeliang //为文件或目录 zhugeliang 设置 setgid 位(g+s) 运行结果截图如下: ③设置、修改、查看文件特殊权限sticky chmod o+t zhugeliang //为目录 zhugeliang 设置 粘滞位(sticky bit) (o+t) 运行结果截图如下: |
2. 任务管理
(1)at
定时任务
①安装at:
②启动atd服务
$ systemctl start atd && systemctl status atd # 确保atd运行
运行结果:
③设置任务
$ at now +1 minutes # 1分钟后执行任务
at> date >> /home/my.sh #输入任务
at> <Ctrl+D> # 保存任务
④查看与删除任务
$ atq # 列出待执行任务
$ atrm 1 # 删除任务ID为1的任务
(2)crontab
任务调度
①基本任务设置
-
编辑任务文件:
$ crontab -e # 选择vim编辑器 例如: Select an editor. To change later, run 'select-editor'. 1. /bin/nano 2. /usr/bin/mcedit 3. /usr/bin/vim.basic 4. /usr/bin/vim.tiny Choose 1-4 [1]: 3 //选3
-
添加任务(每分钟记录时间):
* * * * * /usr/bin/date >> /home/lw3613-one(自己的主机名文件)/to.txt # 每分钟追加日期
- 保存退出,提示任务创建成功截图:
- 观察输出内容:
cat /home/lw3613-one(自己的主机名文件)/to.txt
结果截图:
②验证任务执行
$ rm /home/lw3613-one(自己的主机名文件)/to.txt && sleep 60 # 删除文件并等待1分钟
$ ls /home/lw3613-one(自己的主机名文件)/to.txt # 检查文件是否重新生成
结果截图:
③多任务调度(脚本方式)
-
创建脚本
my.sh
:#!/bin/bash date >> /home/mycal cal >> /home/mycal
- 给my.sh增加执行权限:
chmod u+x my.sh //给当前用户分配执行权限
-
赋予执行权限并加入crontab:
$ chmod +x my.sh $ crontab -e */1 * * * * /home/my.sh # 每分钟执行脚本
运行结果:
- 执行命令$ ./my.sh,执行脚本文件,观察输出;执行命令$ cat /home/mycal 查看mycal文件的内容,是否有日期和日历,且每隔一分钟,是否有追加内容:
查看结果:
- 执行命令$ crontab -l ,列出当前定时任务
列出结果截图:
- 执行命令$ crontab-r,删除定时任务,重启crond。
命令运行结果截图:
三、实验总结
-
进程管理核心命令:
ps
/top
用于监控进程状态,pstree
可视化进程树。systemctl
管理服务,kill
/pkill
终止进程,nice
调整优先级。
-
文件权限安全:
- SUID/SGID需谨慎设置(仅限必要程序),Sticky位保护共享目录。
-
定时任务要点:
at
适合一次性任务,crontab
适合周期性任务。- 脚本调用需确保执行权限,任务路径建议使用绝对路径。
-
调试技巧:
- 查看系统日志(
/var/log/cron
)排查任务未执行问题。 - 使用
crontab -e
语法检查工具避免格式错误。
- 查看系统日志(
通过本实验,可全面掌握Linux进程管理与自动化任务的核心技能,为系统运维及脚本开发奠定基础。