Linux 命令(2):权限、进程与网络管理
本节继续学习 Linux 常用命令,首先整理文件权限、所有者和用户组的修改方法,以及文件查找、内容检索、软件包管理、磁盘挂载和压缩包操作。
随后学习命令手册、用户与进程管理、环境变量配置和网络管理命令,并结合服务器环境说明权限提升、作业控制、信号处理和网络故障排查的基本思路。
一、查看当前用户:whoami
查看当前命令是以哪个用户的身份执行:
whoami它会输出当前有效用户名。执行涉及权限的命令前,可以先用它确认当前是普通用户还是 root 用户。
二、文件权限、所有者和用户组
1. chmod:修改权限
ls -l 显示结果的第一列是文件类型和权限。chmod 用于修改权限:
chmod 权限值 文件名示例:
chmod 0664 kernel.cpp2. 不是文件所有者时不能随意修改权限
把 kernel.cpp 的所有者改为 root 后,普通用户再次执行:
chmod 0777 kernel.cpp系统会提示“不允许的操作”,原因是当前普通用户已经不是该文件的所有者。
需要临时使用 root 权限时,可以写成:
sudo chmod 0777 kernel.cpp3. chown:修改所有者和所属组
基本格式:
chown 新所有者:新用户组 文件名示例:
chown root:root kernel.cpp普通用户执行时会失败,因此改用:
sudo chown root:root kernel.cpp执行后再用 ls -l 查看,可以看到 kernel.cpp 的所有者和所属组都变成了 root。
4. sudo 的含义
sudo 写在另一条命令之前,让该命令临时获得管理员权限:
sudo 原命令注意:
sudo只提升紧随其后的这一条命令;- 输入密码时终端不会显示星号或圆点,但键盘输入已经被接收;
- 不要因为看不到字符而反复输入。
三、查找文件和检索文件内容
1. find:按文件名查找
基本格式:
find 查找路径 -name 文件名或匹配模式在当前目录及其子目录中精确查找:
find . -name aa使用 * 进行模糊匹配:
find . -name 'a*'find . -name '*a'find . -name '*a*'| 模式 | 含义 |
|---|---|
a* | 名字以 a 开头 |
*a | 名字以 a 结尾 |
*a* | 名字中包含 a |
* 可以匹配任意长度的内容。模式加引号,可以避免通配符先被当前 Shell 展开。
查找范围越大,遍历的文件越多,耗时越长。没有必要时不要直接从根目录 / 开始查找。
2. grep:按内容查找
find 查的是文件名,grep 查的是文件中的内容。
基本格式:
grep [选项] 匹配内容 文件或目录在当前目录中递归查找包含 kernel 的内容:
grep -niR 'kernel' ./常用选项:
| 选项 | 含义 |
|---|---|
-n | 显示匹配内容所在的行号 |
-i | 忽略英文字母大小写 |
-R | 连同子目录中的文件一起递归查找 |
四、软件包安装与卸载
1. 安装软件包
sudo apt-get install 软件包名2. 卸载软件包
sudo apt-get remove 软件包名3. 更新软件包索引
sudo apt-get update五、磁盘与挂载
1. 什么是挂载
Windows 通常会自动为磁盘分区分配盘符。Linux 没有盘符,存储设备需要挂载到某个目录,之后通过这个目录访问设备中的文件。
关系可以理解为:
设备文件 --mount--> 挂载目录 --> 通过目录访问设备内容挂载点本质上是一个已经存在的目录,例如 /mnt。
2. 查看磁盘和分区
sudo fdisk -l它用于列出磁盘及分区信息。设备文件通常位于 /dev 下,例如 /dev/sda1。
3. 挂载设备
基本格式:
sudo mount 设备文件 挂载点示例:
sudo mount /dev/sda1 /mnt4. 卸载设备
sudo umount /mnt注意命令名是 umount,不是 unmount。
六、压缩包管理
1. ZIP
压缩文件或目录:
zip -r kernel.zip kernel.cpp解压:
unzip kernel.zip-r 表示递归处理目录内容。
2. RAR
创建 RAR 压缩包:
rar a kernel.rar kernel.cpp解压:
rar x kernel.rar其中:
a:把目标添加到压缩包;x:按原目录结构解压。
3. TAR 归档
只打包,不额外使用 gzip 或 bzip2 压缩:
tar cvf kernel.tar kernel.cpp解包:
tar xvf kernel.tar4. .tar.gz
使用 gzip 算法打包并压缩:
tar zcvf kernel.tar.gz kernel.cpp解压:
tar zxvf kernel.tar.gz5. .tar.bz2
使用 bzip2 算法打包并压缩:
tar jcvf kernel.tar.bz2 kernel.cpp解压:
tar jxvf kernel.tar.bz26. TAR 常用选项含义
| 选项 | 含义 |
|---|---|
c | 创建归档包 |
x | 解开归档包 |
v | 显示处理过程 |
f | 指定归档文件名,后面紧跟包名 |
z | 使用 gzip 算法 |
j | 使用 bzip2 算法 |
7. 关于压缩率
不同算法的压缩率不同,因此同一文件生成的 .zip、.rar、.tar.gz 和 .tar.bz2 大小可能不同。很小的文件还可能因为压缩包自身的结构信息而出现“压缩后反而更大”的现象。
七、关机、重启和内存查看
1. 关机
poweroff2. 重启
reboot也可以使用:
shutdown -r now3. 查看内存
free -m-m 让结果以 MB 为单位显示。
八、命令帮助与手册
1. 查看命令手册
man ls进入手册后按 q 退出。
2. 查看函数手册
man 不仅能查看命令,也能查看函数。不同类型的内容位于不同章节:
man 2 函数名man 3 函数名- 第 2 章通常是系统调用;
- 第 3 章通常是库函数。
man printfman 2 printfman 3 printfprintf 不属于第 2 章,因此 man 2 printf 会提示没有对应手册页;man 3 printf 可以打开 C 库函数的说明。
当命令、系统调用和库函数出现同名时,明确指定章节可以避免查错对象。
九、别名、日期和权限掩码
1. alias:命令别名
查看当前别名:
alias定义别名的基本格式:
alias 别名='原命令'例如:
alias ll='ls -l'直接在终端中设置的别名只对当前 Shell 临时有效。若希望每次打开终端都生效,应把配置写入当前用户的 Bash 配置文件:
~/.bashrc系统中的 ls 常被配置为带颜色显示的别名,例如:
alias ls='ls --color=auto'2. date:查看时间
date输出当前日期、星期、时间和时区。
3. umask:权限掩码
查看当前权限掩码:
umask显示:
0002创建对象时使用的基础权限:
| 对象 | 基础权限 |
|---|---|
| 普通文件 | 0666 |
| 目录 | 0777 |
umask 的作用是从基础权限中屏蔽对应权限位。例如 0002:
普通文件:0666 屏蔽 0002 后得到 0664,即 rw-rw-r--目录: 0777 屏蔽 0002 后得到 0775,即 rwxrwxr-x它不是普通十进制减法。如果基础权限本来就没有某个权限位,掩码也无法再拿走这个不存在的权限。
在终端中临时修改:
umask 0002这种修改只影响当前 Shell 以及由它创建的子进程;另一个已经打开的终端不会同步改变。
十、终端快捷键
| 快捷键 | 功能 |
|---|---|
Ctrl+Shift+T | 新建终端标签页 |
Alt+1、Alt+2 | 切换到对应编号的终端标签页 |
Ctrl+Shift+N | 新建一个终端窗口 |
Ctrl+- | 缩小终端字体 |
Ctrl+Shift++ | 放大终端字体 |
标签页位于同一个窗口中;新终端窗口则是独立窗口。
十一、服务器软件的一般配置流程
部署服务时通常遵循同一套流程:
安装软件包 → 修改配置文件 → 启动或重启服务 → 验证连接配置文件通常在服务启动时读取,所以修改配置后往往需要重启服务才能生效。
十二、用户管理
1. 创建用户:useradd
创建用户需要管理员权限,命令结构为:
sudo useradd -s /bin/bash -d /home/用户名 -m 用户名参数含义:
| 参数 | 含义 |
|---|---|
-s /bin/bash | 指定登录后使用 Bash |
-d /home/用户名 | 指定用户家目录 |
-m | 家目录不存在时创建它 |
| 最后的用户名 | 要创建的账户名 |
2. 设置用户密码:passwd
sudo passwd 用户名按提示连续输入两次新密码。输入密码时终端不显示字符。
使用 sudo 修改其他用户密码时,验证的是当前用户的 sudo 权限,而不是先要求知道目标用户的旧密码。
3. 切换用户:su
su 用户名切换到普通用户时,需要输入目标用户的密码。
先切换到 root:
sudo suroot 再执行 su 用户名 时,不需要输入目标用户密码。
4. 删除用户:userdel
sudo userdel -r 用户名-r 表示删除用户的同时,连同其家目录一起删除。
不能在某个用户仍处于登录状态或仍有进程运行时直接删除该用户。应先退出该用户的终端或终止相关进程,再使用另一个有管理员权限的账号执行删除。
5. 查看在线用户
查看当前终端使用者:
whoami查看已经登录系统的用户:
whowho 的结果中还会显示用户使用的终端以及登录时间。终端名称中的 tty、pts 用于区分不同终端会话。
十三、进程管理
1. 查看进程:ps aux
ps aux选项含义:
| 选项 | 说明 |
|---|---|
a | 显示其他用户及终端相关进程 |
u | 使用以用户为中心的详细格式显示 |
x | 显示没有控制终端的进程 |
2. ps aux 主要列
| 列 | 含义 |
|---|---|
USER | 启动进程的用户 |
PID | 进程编号 |
%CPU | CPU 使用率 |
%MEM | 内存使用率 |
VSZ | 进程使用的虚拟内存大小 |
RSS | 当前驻留在物理内存中的大小 |
TTY | 进程关联的终端 |
STAT | 进程状态 |
START | 进程启动时间 |
TIME | 累计占用 CPU 的时间 |
COMMAND | 启动进程的命令 |
3. 常见进程状态
STAT 可以同时出现多个字母。常见的主状态:
| 状态 | 含义 |
|---|---|
R | 正在运行或可运行 |
S | 可中断睡眠,正在等待某个事件 |
I | 空闲状态 |
D | 不可中断睡眠 |
T | 已停止或被跟踪 |
Z | 僵尸进程 |
还可能出现附加标记,例如:
| 标记 | 含义 |
|---|---|
< | 高优先级 |
N | 低优先级 |
L | 有内存页被锁定 |
s | 会话首进程 |
l | 多线程进程 |
+ | 位于前台进程组 |
4. 前台、后台和挂起作业
查看当前 Shell 中的作业:
jobs作业编号写在方括号中。+ 表示当前作业,- 表示上一个作业。
把指定作业切换到前台继续运行:
fg %1让指定作业在后台继续运行:
bg %2常用控制键:
| 按键 | 作用 |
|---|---|
Ctrl+Z | 暂停前台进程 |
Ctrl+C | 向前台进程发送中断信号,通常用于结束进程 |
5. 查看信号
kill -l它会列出系统支持的信号及编号。
6. 向进程发送信号
基本格式:
kill -信号编号 PID比较:
kill -15 PIDkill -9 PID| 信号 | 名称 | 说明 |
|---|---|---|
| 15 | SIGTERM | 请求进程正常结束,进程有机会处理或忽略 |
| 9 | SIGKILL | 由内核强制终止,进程无法捕获或忽略 |
先在另一个终端中用 ps aux 查出目标进程的 PID,再分别发送 15 和 9 号信号。普通结束优先考虑 15;无法正常结束时再考虑 9。
十四、用户环境变量与系统环境变量
1. 查看当前进程环境变量
env2. 当前用户配置文件
~/.bashrc使用下面的形式编辑当前用户配置:
vim ~/.bashrc这里的设置主要影响当前用户。
3. 系统配置文件
/etc/profile编辑示意:
sudo vim /etc/profile系统级配置影响范围更大,修改时需要 root 权限。
4. 添加 PATH
export PATH=$PATH:新路径$PATH 保留原有搜索路径,冒号后追加新目录。
用户配置会影响对应用户的环境;系统配置面向全部用户;同一变量同时配置时,用户自己的配置会在其会话中产生更直接的影响。
十五、网络管理命令
1. ifconfig:查看网卡信息
ifconfig它与 Windows 的 ipconfig 作用相近,可以查看网络接口信息,包括:
- 网卡名称;
- IPv4、IPv6 地址;
- 子网掩码和广播地址;
- MAC 地址;
- MTU;
- 接收和发送的数据统计。
2. 回环接口 lo
lo 是 loopback(回环)接口,常见地址是:
127.0.0.1访问 127.0.0.1 时,数据在本机协议栈内部完成传输,不经过物理网卡。lo 的 MTU 常见值为 65536。
3. 启用和停用网卡
sudo ifconfig 网卡名 downsudo ifconfig 网卡名 updown 停用接口,up 启用接口。远程操作服务器时不能随意停用正在使用的网卡,否则远程连接会立即断开。
4. 配置网卡地址
sudo ifconfig 网卡名 IP地址 netmask 子网掩码5. ping:测试连通性
ping IP地址ping 域名开发网络程序时,应先用 ping 判断基础网络是否连通。
如果物理连接、地址配置或网络路由本身不通,就不应直接从应用层代码开始排查。
6. netstat:查看网络状态
netstat可用于查看网络连接、路由表、接口统计等网络状态信息。
7. 内网地址与公网地址
ifconfig看到的通常是当前网卡在局域网中的地址;- 访问互联网时,对方看到的可能是路由器或运营商转换后的公网地址;
- 公网出口地址可能发生变化,不能把本机局域网地址和公网地址混为一谈。
8. nslookup:域名解析
nslookup 域名它用于查询域名对应的 IP 地址。一个域名可能解析到多个 IP,服务器可以借此分担访问压力或提供容错能力。
9. finger:查看用户信息
finger 用户名可以查询用户的登录名、家目录、Shell、终端和登录时间等信息。
某些系统默认没有安装 finger,需要先安装相应软件包。
如果这篇文章对你有帮助,欢迎分享给更多人!





