mobile wallpaper 1mobile wallpaper 2mobile wallpaper 3mobile wallpaper 4
3328 字
15 分钟
Linux 网络编程(22):Linux 命令(2)——权限、进程与网络管理

Linux 命令(2):权限、进程与网络管理#

本节继续学习 Linux 常用命令,首先整理文件权限、所有者和用户组的修改方法,以及文件查找、内容检索、软件包管理、磁盘挂载和压缩包操作。

随后学习命令手册、用户与进程管理、环境变量配置和网络管理命令,并结合服务器环境说明权限提升、作业控制、信号处理和网络故障排查的基本思路。

一、查看当前用户:whoami#

查看当前命令是以哪个用户的身份执行:

whoami

它会输出当前有效用户名。执行涉及权限的命令前,可以先用它确认当前是普通用户还是 root 用户。

二、文件权限、所有者和用户组#

1. chmod:修改权限#

ls -l 显示结果的第一列是文件类型和权限。chmod 用于修改权限:

chmod 权限值 文件名

示例:

chmod 0664 kernel.cpp

2. 不是文件所有者时不能随意修改权限#

kernel.cpp 的所有者改为 root 后,普通用户再次执行:

chmod 0777 kernel.cpp

系统会提示“不允许的操作”,原因是当前普通用户已经不是该文件的所有者。

需要临时使用 root 权限时,可以写成:

sudo chmod 0777 kernel.cpp

3. 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 /mnt

4. 卸载设备#

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.tar

4. .tar.gz#

使用 gzip 算法打包并压缩:

tar zcvf kernel.tar.gz kernel.cpp

解压:

tar zxvf kernel.tar.gz

5. .tar.bz2#

使用 bzip2 算法打包并压缩:

tar jcvf kernel.tar.bz2 kernel.cpp

解压:

tar jxvf kernel.tar.bz2

6. TAR 常用选项含义#

选项含义
c创建归档包
x解开归档包
v显示处理过程
f指定归档文件名,后面紧跟包名
z使用 gzip 算法
j使用 bzip2 算法

7. 关于压缩率#

不同算法的压缩率不同,因此同一文件生成的 .zip.rar.tar.gz.tar.bz2 大小可能不同。很小的文件还可能因为压缩包自身的结构信息而出现“压缩后反而更大”的现象。

七、关机、重启和内存查看#

1. 关机#

poweroff

2. 重启#

reboot

也可以使用:

shutdown -r now

3. 查看内存#

free -m

-m 让结果以 MB 为单位显示。

八、命令帮助与手册#

1. 查看命令手册#

man ls

进入手册后按 q 退出。

2. 查看函数手册#

man 不仅能查看命令,也能查看函数。不同类型的内容位于不同章节:

man 2 函数名
man 3 函数名
  • 第 2 章通常是系统调用;
  • 第 3 章通常是库函数。
man printf
man 2 printf
man 3 printf

printf 不属于第 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+1Alt+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 su

root 再执行 su 用户名 时,不需要输入目标用户密码。

4. 删除用户:userdel#

sudo userdel -r 用户名

-r 表示删除用户的同时,连同其家目录一起删除。

不能在某个用户仍处于登录状态或仍有进程运行时直接删除该用户。应先退出该用户的终端或终止相关进程,再使用另一个有管理员权限的账号执行删除。

5. 查看在线用户#

查看当前终端使用者:

whoami

查看已经登录系统的用户:

who

who 的结果中还会显示用户使用的终端以及登录时间。终端名称中的 ttypts 用于区分不同终端会话。

十三、进程管理#

1. 查看进程:ps aux#

ps aux

选项含义:

选项说明
a显示其他用户及终端相关进程
u使用以用户为中心的详细格式显示
x显示没有控制终端的进程

2. ps aux 主要列#

含义
USER启动进程的用户
PID进程编号
%CPUCPU 使用率
%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 PID
kill -9 PID
信号名称说明
15SIGTERM请求进程正常结束,进程有机会处理或忽略
9SIGKILL由内核强制终止,进程无法捕获或忽略

先在另一个终端中用 ps aux 查出目标进程的 PID,再分别发送 15 和 9 号信号。普通结束优先考虑 15;无法正常结束时再考虑 9。

十四、用户环境变量与系统环境变量#

1. 查看当前进程环境变量#

env

2. 当前用户配置文件#

~/.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 网卡名 down
sudo ifconfig 网卡名 up

down 停用接口,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,需要先安装相应软件包。

分享

如果这篇文章对你有帮助,欢迎分享给更多人!

Linux 网络编程(22):Linux 命令(2)——权限、进程与网络管理
https://joyanblog.com/posts/linux-network-programming-22-linux-commands-2-process-network-management/
作者
Joyan
发布于
2026-08-14
许可协议
CC BY-NC-SA 4.0
相关文章 智能推荐

目录