2026-01-23
最近更新:Linux基础教程 第18课:Linux云计算基础
2026-01-23
2026-01-23
2026-01-23
最近更新:Linux基础教程 第15课:Linux内核和驱动管理
2026-01-21
浏览量:21 次 发布时间:2026-01-15 22:26 作者:明扬工控商城 下载docx
2026-01-23
最近更新:Linux基础教程 第18课:Linux云计算基础
2026-01-23
2026-01-23
2026-01-23
最近更新:Linux基础教程 第15课:Linux内核和驱动管理
2026-01-21
好的,我们继续。第五课我们来学习Linux中非常重要的两个概念:用户管理和进程管理。
第一部分:用户管理
1.1 查看当前用户信息
bash
# 查看当前登录的用户名
whoami
# 查看当前用户的详细信息
id
# 查看所有登录的用户
who
# 查看更详细的登录信息
w
运行id命令,你会看到类似这样的输出:
text
uid=1000(ubuntu) gid=1000(ubuntu) groups=1000(ubuntu),4(adm),20(dialout),24(cdrom),...
uid:用户ID
gid:主组ID
groups:用户所属的所有组
1.2 用户配置文件
Linux用户信息保存在几个重要文件中:
bash
# 查看所有用户(系统用户和普通用户)
cat /etc/passwd
# 查看所有组
cat /etc/group
# 查看用户密码信息(加密的)
sudo cat /etc/shadow
/etc/passwd文件每行的格式:
text
用户名:密码占位符:UID:GID:用户描述:家目录:默认shell
例如:
text
ubuntu:x:1000:1000:Ubuntu:/home/ubuntu:/bin/bash
1.3 创建新用户(需要sudo权限)
bash
# 创建新用户(会交互式提示设置密码等信息)
sudo adduser student1
# 查看新用户是否创建成功
id student1
cat /etc/passwd | grep student1
# 创建用户但不创建家目录(适用于服务账户)
sudo useradd --system --no-create-home serviceuser
# 创建用户并指定UID
sudo useradd -u 1500 user2
# 创建用户并指定家目录
sudo useradd -m -d /home/customhome user3
1.4 修改用户密码
bash
# 修改自己的密码(直接输入passwd)
passwd
# 修改其他用户密码(需要sudo)
sudo passwd student1
# 锁定用户(禁止登录)
sudo passwd -l student1
# 解锁用户
sudo passwd -u student1
# 查看密码状态
sudo passwd -S student1
1.5 修改用户属性
bash
# 修改用户描述信息
sudo usermod -c "Student Account" student1
# 修改用户家目录(需要手动移动文件)
sudo usermod -m -d /home/newhome student1
# 修改用户登录名
sudo usermod -l newname oldname
# 修改用户UID
sudo usermod -u 2000 student1
# 修改用户默认shell
sudo usermod -s /bin/bash student1
# 改为禁止登录
sudo usermod -s /sbin/nologin student1
1.6 删除用户
bash
# 删除用户但保留家目录
sudo deluser student1
# 删除用户同时删除家目录
sudo deluser --remove-home student1
# 另一种方式(userdel命令)
sudo userdel student1 # 只删除用户
sudo userdel -r student1 # 删除用户和家目录
1.7 用户组管理
bash
# 创建新组
sudo groupadd developers
sudo groupadd -g 3000 admins
# 删除组
sudo groupdel developers
# 查看用户属于哪些组
groups
groups ubuntu
# 将用户添加到附加组
sudo usermod -aG sudo student1 # 给sudo权限(谨慎!)
sudo usermod -aG developers student1
# 将用户从组中移除(稍微复杂,需要编辑/etc/group)
# 或者重新设置用户组
sudo usermod -G group1,group2 student1
# 修改文件所属组
sudo chgrp developers filename
1.8 切换用户
bash
# 切换到其他用户(需要密码)
su student1
# 切换到其他用户并加载其环境变量
su - student1
# 执行一个命令后返回原用户
su -c "whoami" student1
# 切换回原用户
exit
# 以其他用户身份运行命令(需要sudo权限)
sudo -u student1 whoami
1.9 练习:用户管理实战
请按顺序执行:
创建一个新用户testuser
bash
sudo adduser testuser
按照提示设置密码和信息
切换到testuser用户
bash
su - testuser
在testuser下创建文件
bash
pwd # 查看当前目录,应该是/home/testuser
touch testfile.txt
ls -la # 查看文件权限
返回原用户
bash
exit
查看testuser的文件
bash
ls -la /home/testuser/
删除testuser
bash
sudo deluser --remove-home testuser
第二部分:进程管理
2.1 什么是进程?
进程就是正在运行的程序。每个进程都有一个唯一的进程ID(PID)。
2.2 查看进程
bash
# 查看当前终端启动的进程
ps
# 查看所有进程(常用)
ps aux
# 查看更详细的进程信息
ps -ef
# 查看特定用户的进程
ps -u ubuntu
# 查看特定进程
ps aux | grep ssh
# 查看进程树(显示父子关系)
pstree
pstree -p # 显示PID
ps aux输出的重要列:
USER:进程所有者
PID:进程ID
%CPU:CPU使用率
%MEM:内存使用率
VSZ:虚拟内存大小
RSS:实际内存大小
TTY:终端
STAT:进程状态
START:启动时间
COMMAND:命令
进程状态STAT:
R:运行中
S:睡眠中(可中断)
D:不可中断的睡眠(通常在进行I/O)
Z:僵尸进程
T:已停止
<:高优先级
N:低优先级
2.3 实时监控进程(top命令)
bash
# 启动top实时监控
top
# 按内存使用排序(在top界面按M)
# 按CPU使用排序(在top界面按P)
# 按进程ID排序(在top界面按N)
# 显示完整命令(在top界面按c)
# 退出top(按q)
# 更好的top(htop,需要安装)
sudo apt install htop
htop
在top界面中的重要信息:
第一行:系统运行时间、登录用户数、负载
第二行:任务数(总进程、运行中、睡眠、停止、僵尸)
第三行:CPU使用情况
第四行:内存使用
第五行:交换空间使用
2.4 控制进程
bash
# 正常终止进程(发送SIGTERM信号)
kill PID
# 强制终止进程(发送SIGKILL信号)
kill -9 PID
# 暂停进程(发送SIGSTOP信号)
kill -STOP PID
# 继续运行暂停的进程(发送SIGCONT信号)
kill -CONT PID
# 根据进程名终止
pkill process_name
killall process_name
# 终止特定用户的进程
pkill -u username
2.5 进程优先级(nice值)
进程的优先级由nice值决定,范围-20(最高)到19(最低)。默认是0。
bash
# 以低优先级启动进程
nice -n 10 command
# 以高优先级启动进程(需要权限)
sudo nice -n -10 command
# 修改运行中进程的优先级
renice -n 10 -p PID
# 修改用户所有进程的优先级
renice -n 5 -u username
2.6 后台和前台任务
bash
# 启动后台任务
sleep 100 &
command &
# 查看后台任务
jobs
jobs -l # 显示PID
# 将后台任务调到前台
fg %1 # %1是作业号
# 将前台任务放到后台(先Ctrl+Z暂停,然后)
bg %1
# 断开连接后保持进程运行
nohup command &
# 或使用screen/tmux(后面会讲)
2.7 查找进程
bash
# 根据名称查找进程
pgrep ssh
# 查找进程并显示详细信息
pgrep -l ssh
# 查找进程并显示完整命令行
pgrep -a ssh
# 根据端口查找进程
sudo lsof -i :22
sudo netstat -tlnp | grep :22
# 查找占用文件的进程
lsof /var/log/syslog
2.8 系统监控命令
bash
# 查看系统运行时间和负载
uptime
# 查看内存使用
free -h
free -m # MB显示
# 查看虚拟内存统计
vmstat 1 # 每1秒刷新一次
# 查看磁盘使用
df -h
# 查看目录大小
du -sh /home
du -h --max-depth=1 /home
# 查看磁盘I/O
iostat 1
# 查看网络连接
ss -tulnp
netstat -tulnp
2.9 练习:进程管理实战
启动几个测试进程
bash
sleep 300 &
sleep 400 &
tail -f /var/log/syslog &
查看这些进程
bash
jobs -l
ps aux | grep sleep
用top查看
bash
top
# 在top中按u,输入你的用户名,只看你的进程
# 按q退出
终止进程
bash
# 先用ps查看sleep进程的PID
ps aux | grep sleep
# 假设PID是1234
kill 1234
# 或者用pkill
pkill sleep
# 终止所有tail进程
killall tail
监控系统
bash
# 在一个终端执行
watch -n 1 "ps aux | grep sleep"
# 在另一个终端执行
stress --cpu 2 --timeout 30s
# 观察top中CPU使用率变化
第三部分:综合案例
案例1:找出占用CPU最高的进程
bash
# 方法1:使用top
top
# 进入后按P(大写)按CPU排序
# 方法2:使用ps
ps aux --sort=-%cpu | head -10
# 方法3:简单查看
ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%cpu | head -20
案例2:找出占用内存最高的进程
bash
ps aux --sort=-%mem | head -10
案例3:监控特定进程
bash
# 每2秒监控一次nginx进程
watch -n 2 "ps aux | grep nginx"
# 持续监控并高亮变化
watch -n 1 -d "pstree | grep nginx"
案例4:批量管理进程
bash
# 启动多个工作进程
for i in {1..5}; do sleep 1000 & done
# 查看所有sleep进程
ps aux | grep sleep
# 批量终止
pkill sleep
# 或
kill $(pgrep sleep)
第四部分:安全注意事项
4.1 用户管理安全
bash
# 1. 定期检查空密码用户
sudo cat /etc/shadow | awk -F: '($2==""){print $1}'
# 2. 检查sudo权限用户
sudo grep -Po '^sudo.+:\K.*$' /etc/group
# 3. 检查UID为0的用户(除了root不应该有)
awk -F: '($3==0){print $1}' /etc/passwd
# 4. 锁定不使用的账户
sudo passwd -l username
4.2 进程管理安全
bash
# 1. 检查异常进程
ps aux --sort=-%cpu | head -20
ps aux --sort=-%mem | head -20
# 2. 检查隐藏进程(ps aux看不到的)
ls -la /proc/*/exe 2>/dev/null | grep deleted
# 3. 检查异常网络连接
sudo netstat -antp
第五部分:今日命令总结
用户管理命令 作用
whoami 显示当前用户名
id 显示用户ID和组信息
sudo adduser 创建新用户
sudo deluser 删除用户
sudo usermod 修改用户属性
passwd 修改密码
su 切换用户
groups 显示用户所属组
进程管理命令 作用
ps aux 查看所有进程
top/htop 实时监控进程
kill 终止进程
pkill 按名称终止进程
jobs 查看后台任务
fg/bg 前后台任务切换
nice/renice 调整进程优先级
free 查看内存使用
df 查看磁盘使用
第六部分:作业练习
练习1:用户管理
创建两个用户:webuser 和 dbuser
创建两个组:webgroup 和 dbgroup
将用户分别加入对应的组
创建一个共享目录 /shared,设置权限使两个组的用户都能读写
分别切换到两个用户,测试是否能读写共享目录
清理:删除用户和组
练习2:进程监控
启动3个sleep 500进程在后台
用ps查看它们的PID
用top监控,按内存排序
用kill终止其中一个进程
用pkill终止剩余的所有sleep进程
用ps aux | grep sleep确认没有sleep进程
练习3:系统状态检查
写一个脚本system_check.sh,显示:
当前登录用户
系统运行时间
内存使用情况
磁盘使用情况
CPU占用最高的前5个进程
当你完成了这些练习,就会对用户和进程管理有基本的掌握了。
有问题吗?或者你完成了练习想继续下一课?下一课我们讲软件包管理和服务管理。
将本文的Word文档下载到电脑
推荐度: