Linux 基础教程第五课:用户管理和进程管理

浏览量:21 次 发布时间:2026-01-15 22:26 作者:明扬工控商城 下载docx

最近更新:Linux基础教程 第15课:Linux内核和驱动管理


好的,我们继续。第五课我们来学习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个进程


当你完成了这些练习,就会对用户和进程管理有基本的掌握了。


有问题吗?或者你完成了练习想继续下一课?下一课我们讲软件包管理和服务管理。


明扬工控商城

推荐阅读:

Linux基础教程 第20课:Linux安全攻防和渗透测试基础

Linux基础教程 第19课:性能调优和容量规划

Linux基础教程 第18课:Linux云计算基础

Linux基础教程 第17课:自动化运维工具

Linux基础教程 第16课:集群和高可用性

Linux基础教程 第15课:Linux内核和驱动管理

热门标签:
Linux 基础教程第五课:用户管理和进程管理.docx

将本文的Word文档下载到电脑

推荐度:

下载

全部评论

请登录
产业新闻-明扬资讯网
科技资讯-明扬资讯网