相关链接:
- 超详细的VMware虚拟机安装Linux图文教程保姆级_vmware虚拟机安装linux教程-CSDN博客
- 技术|Linux 黑话解释:什么是 Linux 发行版?为什么它被称为“发行版”?
- 技术|最适合程序员的 10 款 Linux 发行版
- Linux 命令大全 | 菜鸟教程 (runoob)
- 万字总结Linux常用命令(包含命令的用法、参数、使用示例)-CSDN博客
- Linux下的软件包管理:一文掌握核心工具与操作-CSDN博客
- Linux查看和修改时区_查看时区-CSDN博客
- Linux env命令教程:如何查看、修改和清空环境变量(附案例详解和注意事项)-Linux入门自学网
一、基础知识
Linux是一种开源的、基于Unix的操作系统内核,由Linus Torvalds在1991年首次发布,并由全球的开发者社区共同维护和改进,它是许多流行的操作系统的基础。其稳定性、安全性、处理多并发等已得到业界的认可,目前很多企业级的项目都会部署到Linux系统上。
Linux只是一个内核,不是一个操作系统。而Linux发行版(也称为GNU/Linux)是一个由Linux内核、GNU工具、附加软件和软件包管理器组成的操作系统,它也可能包括显示服务器和桌面环境,以用作常规的桌面操作系统。Linux目前在全球范围内有上百款发行版,常见的主流发行版及其衍生发行版如下:
发行版 | 衍生发行版 |
---|---|
Red Hat | Fedora、CentOS等 |
Debian | Ubuntu,Deepin,Mint,Kali,Pop!_OS等 |
SUSE | openSUSE等 |
Arch | Arch,Manjaro,EndeavourOS,Chakra等 |
1. 目录结构
Linux系统的基本目录结构如下:
其中的一些常见的目录以及它们的基本介绍如下:
目录路径 | 介绍 |
---|---|
/ | 根目录,是文件系统层次结构的起始点,所有其他目录和文件都从这里开始 |
/bin | 存放基本的二进制可执行文件,这些是系统命令,对所有用户都可用 |
/boot | 包含启动Linux系统所需的文件,如内核和启动加载器配置文件 |
/dev | 设备文件目录,包含指向各种硬件设备的文件,如硬盘、键盘、鼠标等 |
/etc | 系统配置文件目录,存放系统启动和运行所需的配置文件 |
/home | 用户主目录,每个用户都有一个以用户名命名的子目录,存放个人文件 |
/root | 超级管理员(也称为root用户)的主目录,通常用于存放系统管理员的文件 |
/sbin | 存放系统二进制文件,这些通常是系统管理员使用的系统管理命令 |
/tmp | 存放临时文件,这些文件在系统重启后可能被删除,用于应用程序或系统进程 |
/usr | 用户相关的应用程序和文件目录,包含应用程序的可执行文件和库文件 |
/usr/bin | 用户级别的应用程序可执行文件存放在这里 |
/usr/sbin | 系统管理员使用的应用程序可执行文件存放在这里 |
/usr/local | 本地安装的软件目录,用于存放从源代码编译安装的软件 |
/var | 存放经常变化的文件,如日志文件、数据库文件、邮件等 |
/mnt | 临时挂载点目录,用于挂载文件系统进行访问,通常由用户或管理员手动挂载 |
/proc | 虚拟文件系统,包含系统和进程的运行时信息,如内存使用、进程状态等 |
/sys | 另一个虚拟文件系统,提供对内核数据结构的直接访问,用于硬件信息 |
/opt | 第三方应用程序安装目录,用于存放非标准途径安装的应用程序 |
/lib | 存放系统库文件,这些库文件被系统程序和应用程序在运行时链接和使用 |
/srv | 服务数据目录,用于存放系统服务提供的数据,如WWW、FTP服务器的数据 |
/selinux | 安全相关的配置文件目录,用于SELinux安全模块,包含安全策略和上下文 |
/lost+found | 文件系统损坏时,fsck 命令尝试恢复的文件存放在这里,通常在文件系统检查后清空 |
2. 用户与用户组
在Linux系统中,用户(users)和用户组(groups)是权限管理的基础。它们共同工作,以控制对系统资源的访问。
保存用户和用户组信息的相关文件有:
/etc/passwd
:保存用户名称、ID、宿主目录、登录shell等基本信息/etc/shadow
:保存用户的密码、账号有效期等信息/etc/group
:保存用户组的名称、ID等基本信息/etc/gshadow
:保存用户组的密码、管理者、成员等信息
2.1 用户
在Linux系统中,每个用户账户都有一个唯一的用户名和用户ID(UID),以及与之关联的HOME目录、登录Shell和个人配置文件。用户账户使个别用户能够访问系统资源,执行程序,以及根据分配的权限管理和创建文件。
默认有以下三类用户:
- 超级用户:也叫root用户,是Linux操作系统中默认的超级用户账号,对本主机拥有最高的权限,系统中超级用户是唯一的
- 普通用户:由root用户或其他管理员用户创建,拥有的权限会受到限制,一般只在用户自己的HOME目录中拥有完整权限
- 程序用户:在安装Linux操作系统及部分应用程序时,会添加一些特定的低权限用户账号,这些用户一般不允许登录到系统,仅用于维持系统或某个程序的正常运行,如bin、daemon、ftp、mail等
超级用户的命令提示符是“#”,普通用户的命令提示符是“$”。
2.2 用户组
在Linux系统中,用户组是一组用户的集合,它们共享相同的文件访问权限和资源。每个用户组都有一个唯一的组名和组ID(GID)。用户可以属于多个组,其中包括一个主要组和若干附加组。用户组是Linux权限管理的核心部分,它允许管理员以组为单位设置文件和目录的访问权限,从而简化权限分配过程并提高系统安全性。
主要组和附加组的区别如下:
- 主要组(私有组) :基本组账号只有一个,一般为创建用户时指定的组
- 附加组(公共组) :用户除了基本组以外,额外添加指定的组。附加组可以有多个,可以在基本组,也可以同时在附加组
3. 文件权限
3.1 文件访问者的分类
在Linux系统中,文件的访问者主要分为以下三类:
- 文件所有者(Owner): 这是文件创建时被分配的初始所有者,通常是创建文件的用户。文件所有者可以对文件执行读取、写入和执行等操作,除非这些权限被明确更改;
- 所属用户组(Group):每个用户可以属于一个或多个组,文件的所属组是文件创建时分配给该文件的用户所属的默认组。同一用户组内的其他用户可以按照该组的权限设置来访问文件;
- 其他用户(Others):这是指既不是文件所有者也不是文件所属组内成员的所有其他用户。对于“其他”类别的访问者,系统管理员可以设置不同的权限,以控制非特定用户对文件的访问
3.2 权限信息
文件和目录的权限信息是通过一组形如drwxr-xr-x
的标识符来表示的,这些标识符表示了该文件的类型和不同用户对文件或目录的访问权限。文件的权限信息共分为10位,这10位信息被分成了以下四部分:
文件类型(第1位)|文件所有者的权限(2~4位)|文件所属组的权限(5~7位)|其他用户的权限(8~10位)
d rwx r-x r-x
其中各部分字母表示的含义如下:
表示的信息 | 对应位数 | 权限符号及含义 |
---|---|---|
文件类型 | 1 | d :文件夹;- :普通文件; l :软链接(类似Windows的快捷方式);b :块设备文件(例如硬盘、光驱等);p :管道文件;c :字符设备文件(例如屏幕等串口设备) ;s :套接口文件 |
用户权限 | 2~10 | r :对文件而言,具有读取文件内容的权限、对目录来说,具有浏览该目录信息的权限;w :对文件而言,具有修改文件内容的权限、对目录来说具有删除移动目录内文件的权限;x :对文件而言,具有执行文件的权限、对目录来说,具有进入目录的权限;- :不具备对应权限 |
3.3 权限信息的数字表示
权限信息中的用户权限也可以简化成三位数字来表示,如rwxr-xr-x
可以简化成755
,其中第一位表示文件所有者的权限、第二位表示文件所属组的权限、第三位表示其他用户的权限。
r记为4、w记为2、x记为1,由此可知各个用户的权限及其对应的数字表示如下:
用户权限 | 8进制数字 | 说明 |
---|---|---|
— | 0 | 无权限 |
–x | 1 | 仅可执行 |
-w- | 2 | 只写 |
-wx | 3 | 可写可执行 |
r– | 4 | 只读 |
r-x | 5 | 可读可执行 |
rw- | 6 | 可读可写 |
rwx | 7 | 可读可写可执行 |
3.4 修改权限信息
我们可以使用chmod命令修改文件、文件夹的权限信息。
语法:
chmod [选项] 权限操作 目标路径
常用参数:
选项 | 说明 |
---|---|
-R | 对当前目录及其子目录进行递归更改 |
-c | 只有在文件权限确实更改时才显示其更改动作 |
-f | 如果文件权限无法更改,不显示错误信息 |
-v | 显示权限变更的详细信息 |
在符号语法下,权限操作的格式为操作对象 操作符 权限信息
,如u=rwx
,其中:
- 操作对象:
u
表示文件所有者,g
表示文件所属组,o
表示其他用户,a
表示所有用户; - 操作符:
+
表示增加权限、-
表示取消权限、=
表示唯一设定权限; - 权限信息:
r
表示可读取,w
表示可写入,x
表示可执行,X
表示只有当文件为目录文件,或者其他类型的用户有可执行权限时,才将文件权限设置为可执行
在八进制语法下,权限操作可以简化成三位数字来表示,如755
表示将目标文件的权限信息设为rwxr-xr-x
。
4. 环境变量
环境变量(environment variables)一般是指在操作系统中用来指定操作系统运行环境的一些参数,是操作系统为了满足不同的应用场景预先在系统内预先设置的一大批全局变量。
在Linux系统中,环境变量按照其作用范围不同大致可以分为以下类型:
- 系统环境变量:由系统设置,对所有用户和进程都有效
- 用户环境变量:仅对特定用户有效,通常在用户的 Shell 配置文件中设置
4.1 常用环境变量配置文件
文件路径 | 说明 |
---|---|
/etc/environment | 系统启动时读取,通常用于配置与系统运行相关但与用户无关的环境变量,如主机名等 |
/etc/profile | 在系统启动后第一个用户登录时读取,使用该文件配置的环境变量将应用于登录到系统的每一个用户 |
/etc/profile.d/ | 包含多个脚本文件的目录,其中的脚本在用户登录时被/etc/profile 或/etc/bashrc 调用,用于添加或修改环境变量 |
/etc/bashrc | 在Debian及其衍生的Linux发行版中为/etc/bash.bashrc 。在每个用户登录时或打开新的Shell时读取(易影响系统效率),是全局的Shell配置文件,对所有用户有效。 |
文件路径 | 说明 |
---|---|
/.profile<br>/.bash_profile ~./bash_login | 对应用户登录时读取,每个用户都可以使用该文件来配置专属于自己的登录Shell信息。三个文件只会加载其中一个,优先级:~/.bash_profile >~./bash_login >~/.profile |
~/.bashrc | 在对应用户登录时或打开新的Shell时读取(易影响系统效率),是用户的Shell配置文件,仅对当前用户有效 |
~/.bash_logout | 对应用户登出时读取 |
4.2 常用环境变量
在Linux系统中,有以下常用的环境变量:
环境变量 | 作用描述 |
---|---|
PATH | 决定了系统在哪些目录中查找可执行文件 |
HOME | 指定当前用户的主目录路径 |
USER | 当前用户的用户名 |
SHELL | 指定当前用户默认使用的Shell |
LANG | 指定系统的默认语言 |
LD_LIBRARY_PATH | 指定系统在哪些目录中查找共享库文件 |
TERM | 指定当前终端的类型 |
PS1 | 定义命令行提示符的格式 |
PS2 | 定义多行命令的提示符的格式 |
TZ | 指定当前的时区 |
4.3 配置环境变量
查看环境变量:
printenv # 查看所有的环境变量
env # 查看对当前用户生效的环境变量
set # 查看Shell的环境变量
echo $PATH # 查看指定环境变量
临时配置环境变量:
# 在当前Shell中有效
VARNAME="value" # 设置环境变量VARNAME的值为value
PATH=$PATH:~/local/ # 在环境变量PATH的末尾追加值~/local/
# 在当前Shell及子Shell中有效
export VARNAME="value" # 设置环境变量VARNAME的值为value
unset VARNAME # 删除环境变量VARNAME
永久配置环境变量:
# 用Vi/Vim编辑器打开指定环境变量配置文件以编辑
vi ~/.bashrc
vim ~/.bashrc
# 新增环境变量到指定环境变量配置文件结尾
echo 'export VARNAME="value"' >> ~/.bashrc
# 从指定环境变量配置文件中删除环境变量
grep -v '^export VARNAME=' ~/.bashrc > temp && mv temp ~/.bashrc
# 重新加载对应的配置文件以应用更改
source ~/.bashrc
二、常用命令
Linux命令的基本格式如下:
command [-options] [parameter]
命令格式说明:
- command :命令名,相应功能的英文单词或单词的缩写
- -options :命令选项,可用来对命令进行控制。短选项通常以短划线
-
开始,例如-l
;长选项通常以双划线--
开始,例如--longoption
。选项可以单独使用,也可以组合使用,如-l -a
、-la
、--create --verbose
- parameter :要传递给命令的参数,可以是零个、一个或者多个
输入/输出重定向:
命令默认情况下会从用户的终端接受输入并将所产生的输出发送回到终端,而命令的输入/输出重定向允许用户控制命令的输入来源和输出目标。通过使用特定的重定向操作符,可以将命令的标准输入(stdin)、标准输出(stdout)和标准错误(stderr)从默认的终端重定向到文件或其他命令。常用的重定向操作如下:
示例 | 说明 |
---|---|
command > file | 将命令command的结果输出到文件file(覆盖原文件) |
command >> file | 将命令command的结果追加输出到文件file的末尾 |
command < file | 将文件file的内容作为命令command的输入 |
command << tag | 将开始标记tag和结束标记tag之间的内容作为命令command的输入 |
command1 | command2 | 将命令command1的输出作为command2的输入 |
上表中>
和>>
默认只对命令的标准输出进行重定向,在它们前面加上2
可对标准错误进行重定向、加上&
可对标准输出和标准错误进行重定向。
特殊字符的作用:
终端中的常用特殊字符及其作用如下:
符号 | 作用 |
---|---|
'...' | 单引号内的任何字符都被视为普通字符,即使是特殊字符或变量名也不会被解析 |
"..." | 双引号允许变量和某些shell特殊字符被解析,但不会解析一些特殊字符如 $ 、反斜杠 \ 等 |
`...` | 反引号用于命令替换,执行反引号内的命令,并将输出替换到当前位置 |
$ | 变量前缀,表示后面跟着的是变量名,shell将替换为变量的值 |
$(...) | 命令替换,与反引号功能相同,但可以嵌套,且在某些情况下更清晰 |
${...} | 参数扩展,用于变量替换,可以包含更复杂的表达式,如 ${var:-default} 表示如果 var 未设置,则使用默认值 |
通配符
Linux中常见的通配符及其作用如下:
通配符 | 作用 | 示例 |
---|---|---|
? | 匹配任意一个字符 | ls ?.log 会列出当前目录下所有以单个字符开头和 .log 结尾的文件 |
* | 匹配任意数量(包括零个)的任意字符 | ls *.txt 会列出当前目录下所有以 .txt 结尾的文件 |
[abc] | 匹配方括号内的任意一个字符(范围或集合) | ls [0-9]* 会列出当前目录下所有以数字开头的文件 |
[!abc] 或[^abc] | 匹配除了方括号内的任意一个字符 | ls [!0-9]* 会列出当前目录下所有不以数字开头的文件 |
{option1,option2,...} | 匹配花括号内的多个选项(选项之间用逗号分隔) | echo {a,b}.txt 会输出 a.txt b.txt |
** | 递归匹配任意数量的目录,包括所有子目录 | find / -name **/*.txt 会从根目录开始查找所有 .txt 文件 |
1. 文件管理命令
命令 | 描述 | 常用选项 | 备注 |
---|---|---|---|
ls [选项] [目录路径] | 看指定目录中的内容,如文件夹、文件 | -l :以列表形式列出文件信息,并展示更多信息;-a :显示所有文件,包括隐藏文件;-h :以易于阅读的格式显示文件大小(需要和-l同时使用);-R :递归列出目录及其子目录中的内容 | 当不输入选项和参数时会以平铺形式列出当前工作目录下的内容 |
cd [目录路径] | 改当前所在的工作目录 | / | 当不输入参数时表示回到当前用户的HOME目录 |
pwd | 看当前所在的工作目录的路径 | / | |
cp [选项] 源路径 目标路径 | 制指定文件或目录 | -r :递归复制目录及其内容;-i :在覆盖文件前提示确认;-u :仅在源文件比目标文件新或目标文件不存在时复制 | |
mv [选项] 源路径 目标路径 | 动或重命名指定文件或目录 | -i :在覆盖文件前提示确认;-u :仅在源文件比目标文件新或目标文件不存在时移动 | |
rm [选项] 目标路径 | 除指定文件或目录 | -r :递归删除目录及其内容;-f :强制删除,不提示确认;-i :删除前逐个文件提示确认 | |
mkdir [选项] 目录路径] | 指定目录下创建新的目录 | -p :递归创建不存在的父目录,用于创建连续的多层级的目录 | |
find [起始路径] [选项] [表达式] | 指定目录下查找文件或目录 | -name 名称 :按名称查找文件;-type 类型 :按类型查找(f 为文件,d 为目录)。-size 文件大小 :按大小查找文件(+、-表示大于和小于;k表示kb,M表示MB,G表示GB);-mtime 时间 :按修改时间查找文件(正数表示在指定天数之前修改过的文件,负数表示指定天数之内修改过的文件,不加符号表示正好在指定的那天修改过的文件);-exec 命令 :对查找到的文件执行指定的命令 | 示例:find /home -name "*.txt" -size +1M -mtime -0.5 |
cat [选项] 文件路径 | 看指定文件的内容 | -n :显示行号;-b :对非空输出行编号;-s :压缩连续的空行;-E :在每行末尾显示 $ | |
more [选项] 文件路径 | 分页查看指定文件的内容 | -d :显示"Press space to continue…"提示;-num :每页显示num行;+num :从第num行开始显示;-s :压缩连续的空行 | 常用操作: 1.按 Space 显示下一页;2.按 B 显示前一页;3.按 Q 退出;4. /字符串 向前搜索指定字符串;5. ?字符串 向后搜索指定字符串 |
less [选项] 文件路径 | 分页查看指定文件的内容(more的升级版) | -N :显示行号;-I :忽略搜索时的大小写;-S :禁止自动换行 | 常用操作: 1.按 ! 调用shell并执行命令;2.按 V 调用Vi/Vim编辑器;3.按 n 搜索下一个匹配项;4.按 N 搜索上一个匹配项;5.按 Down 向下滚动一行;6.按 Up 向上滚动一行(其他操作与 more 基本相同) |
chmod [选项] 权限操作 目标路径 | 改指定文件,文件夹的权限信息 | -R :对当前目录及其子目录进行递归更改;-c :只有在文件权限确实更改时才显示其更改动作;-f :如果文件权限无法更改,不显示错误信息;-v :显示权限变更的详细信息 | 示例:chmod u+x,g-w,o=r file.txt ;chmod 751 file.txt (关于权限操作的详细说明,见 文件权限 中的修改权限信息 ) |
chown [选项] [新所有者][:新组] 目标路径 | 改指定文件的所有者和组 | -R :对当前目录及其子目录进行递归更改;-c :只有在文件权限确实更改时才显示其更改动作;-f :如果文件权限无法更改,不显示错误信息;-v :显示权限变更的详细信息 | |
ln [参数] 源路径 目标路径 | 在源文件或文件夹和目标文件或文件间建立链接 | -b :备份已存在的目标文件;-f :强制执行;-i :交互模式,文件存在则提示用户是否覆盖;-n :把符号链接视为一般目录;-s :软链接(也叫符号链接),不加此选项则建立硬链接;-v : 显示详细的处理过程 | (见ln-硬链接与软连接的区别 ) |
ln-硬链接与软连接的区别
软链接:
- 以路径的形式存在。类似于Windows操作系统中的快捷方式
- 可以对目录进行链接
- 可以对一个不存在的文件名进行链接
- 可以跨文件系统创建
硬链接:
- 以文件副本的形式存在。但不占用实际空间
- 不允许给目录创建硬链接
- 只有在同一个文件系统中才能创建
2. 文本处理命令
命令 | 描述 | 常用选项 | 备注 |
---|---|---|---|
grep [选项] 关键字 文件路径 | 在指定文件中搜索文本 | -i :忽略大小写;-r :递归搜索目录;-v :显示不匹配的行;-n :显示匹配行的行号;-l :只显示包含匹配的文件名;-c :显示匹配的行数;-o :只输出匹配的部分 | 示例:grep -i "hello" example.txt |
wc [选项] 文件路径 | 统计指定文件的行数、字数、字符数等 | -l :显示行数;-w :显示字数/单词数;-c :显示字节数;-m :显示字符数 | 当不输入参数时以行数,单词数,字节数的顺序显示 |
echo 字符串 | 输出字符串 | -e :允许使用\ 进行转义 | 示例:echo "hello world" ;echo -e "hello\nworld" ;echo "hello" "world" ;echo "The value of x is $x" |
head [选项] 文件路径 | 查看指定文件尾部的内容 | -n num :显示文件尾部的num行内容(默认10行;0表示显示整个文件);-c num :显示文件尾部的num个字节内容(无默认值;0表示从文件末尾开始显示); | |
tail [选项] 文件路径 | 查看指定文件尾部的内容;跟踪文件的最新修改 | -n num :显示文件尾部的num行内容(默认10行;0表示显示整个文件);-c num :显示文件尾部的num个字节内容(无默认值;0表示从文件末尾开始显示);-f :实时显示文件内容,常用于查看日志文件(按Ctrl + C 停止追踪);-r :倒序显示文件内容 | |
vi/vim 文件路径 | 使用Vi或Vim编辑器编辑指定文件(文件不存在则会在指定位置创建新文件) | / | 编辑器的详细使用方法见Vi与Vim编辑器 |
3. 用户管理命令
命令 | 描述 | 常用选项 | 备注 |
---|---|---|---|
who [选项] | 显示当前登录的用户 | -H :显示列标题;-q :显示登录用户的数量和名称;-b :显示系统最后的启动时间 | |
id [选项] 用户名 | 显示用户和组信息 | -u :显示用户id;-g :显示所属的主要组id;-G :显示所属的所有附加组id;-n :显示用户、群组的名称而不是数字id | |
su [选项] [用户名] | 切换到指定用户 | -l 或- :加载切换到的用户的环境变量并切换到对应的HOME目录(默认不加载环境变量和切换HOEM目录);-c 命令 :以切换到的用户的身份执行指定命令;-s shell路径 :指定本次用户的登录shell | 1.普通用户切换到其他用户通常要输入对应用户的密码; 2/root用户切换到其他用户无需输入密码; 3.直接使用 su 或su -l 或su - 时默认会切换到root用户;4.切换后,输入 exit 或按Ctrl + D 来退回到上一个用户 |
sudo [参数] [命令] | 以root用户的权限执行命令 | -u 用户名 :以指定用户的身份执行命令;-s :指定本次用户的登录shell;visudo :编辑/etc/sudoers 文件 | 1.只有在/etc/sudoers 文件中指明的用户才能使用sudo命令;2.该用户初次使用sudo命令时需要输入该用户的密码; 3.出于安全考虑,建议使用sudo而不是su,除非你需要一个完整的root shell环境 |
passwd [参数] [用户名] | 修改指定用户的密码 | -l :锁定用户,使其无法使用密码登录;-u :解锁用户,允许用户使用密码登录 | 1.不输入任何选项和参数时,系统会提示输入当前密码(如果已经设置),然后要求输入新密码并确认; 2.只有root用户或有权使用sudo命令的用户才能修改其他用户的密码 |
useradd [选项] 用户名 | 添加新用户 | -m :创建用户的主目录。使用-d 参数时,此参数将被忽略;-d 目录路径 :指定用户的主目录,如果目录不存在则自动创建;-p 密码 :指定用户的密码;-s shell路径 :指定用户的登录shell;-g 组名 :指定用户所属的主要组;-G 组名1, 组名2, ... :指定用户所属的附加组;-u 用户id :指定用户id;-c 描述 :为用户添加描述信息 | 示例:useradd -d /home/customdir -g maingroup -s /bin/bash Jhon |
usermod [选项] 用户名 | 修改指定用户的信息 | -l 用户名 :修改用户名(其他参数同 useradd ) | |
userdel [选项] 用户名 | 删除指定用户 | -r :删除用户的主目录和邮件池 | |
groupadd [选项] 组名 | 添加新组 | -g 组id :指定组id | |
groupmod [选项] 组名 | 修改指定组的信息 | -n 组名 :修改组名(其他参数同 groupadd ) | |
groupdel 组名 | 删除指定组 | / |
5. 网络管理命令
命令 | 描述 | 常用选项 | 备注 |
---|---|---|---|
ifconfig [网络接口] [选项] | 显示或配置网络接口 | up :启动网络接口;down :关闭网络接口;inet IP地址 :设置接口的IP地址;netmask IP地址 :设置接口的子网掩码;broadcast IP地址 :设置接口的广播地址 | 当不输入选项和参数时会列出所有的网络接口及其配置 |
ip [选项] 操作对象 操作 | 显示或配置网络接口、路由等 | -s :输出更详细的信息;-f :强制使用指定的协议族;-4 :指定使用的网络层协议是IPv4协议;-6 :指定使用的网络层协议是IPv6协议;-0 :输出信息每条记录输出一行,即使内容较多也不换行显示;-r :显示主机时,不使用IP地址,而使用主机的域名 | 使用示例:ip link set eth0 up ;ip addr add 192.168.1.100/24 dev eth0 ;ip route show (操作对象及操作见 ip-补充说明 ) |
ping [选项] 目标地址 | 测试与目标主机的网络连接(使用ICMP传输协议) | -c 次数 :指定发送的ICMP请求数;-i 间隔 :指定每次请求间的间隔时间;-s 大小 :指定ICMP数据包的大小 | 使用示例:ping 114.80.174.120 ;ping -c 2 www.example |
traceroute [选项] 目标地址 | 显示数据包到目标主机的路径 | -n :使用IP地址而非主机名;-m 最大跳数 :设置最大跳数 | |
netstat [选项] | 显示网络连接、路由表、接口状态等 | -a :显示所有连接和监听端口;-t :显示TCP连接;-u :显示UDP连接;-n :以数字形式显示地址和端口;-r :显示路由表;-i :显示网络接口信息 |
ip-补充说明
ip命令的常用操作对象及其对应操作如下:
addr
:管理IP地址
show
:显示地址add
:添加地址del
:删除地址
link
:管理网络接口
show
:显示接口set
:设置接口状态(up/down)
route
:管理路由表
show
:显示路由add
:添加路由del
:删除路由
6. 进程管理命令
命令 | 描述 | 常用选项 | 备注 |
---|---|---|---|
ps [选项] | 显示当前系统中运行的进程 | -e 或 -A :显示所有进程;-f :显示完整格式的输出,包括PPID、C、STIME、TTY、TIME、CMD;-u 用户 :显示特定用户的进程;-p PID :显示指定PID的进 | 可使用管道符配合grep对进程的名称、进程号等进行过滤 |
top [选项] | 实时显示系统资源使用情况 | -d 秒数 :指定命令的刷新时间间隔,单位为秒;-n 次数 :指定命令运行的次数后自动退出;-p 进程ID :仅显示指定进程的信息;-u 用户名 :仅显示指定用户名的进程信息;-i :不显示闲置(idle)或无用(zobime)进程;-b :以非交互模式(默认是交互模式)、以批处理模式执行命令(可配合重定向符将内容输出到指定文件);-c :显示产生进程的完整的命令(默认显示进程名) | 使用示例:top -d 2 ;top -b -n 3 > /top.txt (其他信息见 top-补充说明 ) |
kill [选项] 进程ID | 终止指定进程 | -9 :强制终止进程;-15 :发送TERM信号(默认),请求进程终止 |
ps-补充说明
top命令的常见信息及其对应含义如下:
信息 | 含义 |
---|---|
UID | 进程所属用户ID |
PID | 进程ID |
PPID | 父进程ID |
C | 进程CPU占用率 |
STIME | 进程的启动时间 |
TTY | 启动此进程的终端序号(显示? 表示非终端启动) |
TIME | 进程占用的CPU时间 |
CMD | 进程的名称或启动路径或启动命令 |
top-补充说明
top命令的常见信息及其对应含义如下:
信息 | 含义 |
---|---|
PID | 进程ID |
USER | 进程所属用户 |
RR | 进程优先级(越小越高) |
NI | 负值表示高优先级,正值表示低优先级 |
VIRT | 进程使用的虚拟内存,默认单位KB |
RES | 进程使用的物理内存,默认单位KB |
SHR | 进程使用的共享内存,默认单位KB |
S | 进程状态(S休眠,R运行,Z僵死状态,N负数优先级,I空闲状态) |
%CPU | 进程CPU占用率 |
%TIME | 进程内存占用率 |
TIME+ | 进程使用的CPU时间总计,单位10毫秒 |
COMMAND | 进程的命令或程序文件路径 |
当以交互式模式执行top命令(非-b选项启动)时,可以用以下交互式命令控制内容的显示形式:
按键 | 功能 |
---|---|
h | 显示帮助界面 |
c | 显示产生进程的完整的命令行(等同于-c选项) |
f | 选择需要展示的项目 |
M | 根据驻留内存大小(RES)排序 |
P | 根据CPU使用百分比排序 |
T | 根据实际/累计时间排序 |
E | 切换内存显示的单位 |
e | 切换进程内存的显示单位 |
l | 切换显示平均负载和启动时间的信息 |
i | 不显示闲置或无用进程(等同于-i选项) |
t | 切换显示CPU状态信息 |
m | 切换显示内存信息 |
7. 系统管理命令
命令 | 描述 | 常用参数 | 备注 |
---|---|---|---|
systemd 选项 服务名 | 对指定服务进行管理和操作 | start :启动服务;stop :关闭服务;status :查看服务状态;enable :开启服务的开机自启;disable :关闭服务的开机自启 | 需要root权限才能使用此命令 |
date [选项] [格式化字符串] | 查看,设置系统时间 | -d "数字 时间标记" :按照给定的相对时间对当前时间进行加减并显示结果。正/负数分别表示之后/之前的时间。支持的时间标记有year、month、day、hour、minute、second;-s :设定系统时间(需要root权限) | 当不输入选项和参数时显示当前系统时间 使用示例: date "+%Y-%m-%d %H:%M:%S" ;date -d "-3 year" ;date -d "-2 month 15 day" "+%Y%m%d" ;date -s "2024-10-28 10:10:10" (其他信息见 date-补充说明 ) |
date-补充说明
date命令常用的格式化字符串如下:
格式化字符串 | 含义 |
---|---|
%Y | 年(四位数) |
%y | 年后两位 |
%m | 月(01-12) |
%d | 日(01-31) |
%H | 小时(00-23) |
%M | 分钟(00-59) |
%S | 秒(00-59) |
%s | 自1970-01-01 00:00:00 UTC到现在的秒数 |
8. 磁盘管理命令
命令 | 描述 | 常用参数 | 备注 |
---|---|---|---|
df [选项] | 查看磁盘空间使用情况 | -h :以人类可读的格式显示磁盘使用情况。-T :显示文件系统类型 | |
fdisk [选项] 磁盘设备 | 创建和维护磁盘分区 | -l :列出所有磁盘及其分区信息;-u :显示分区大小,以扇区为单位 | 建立新分区后通常要使用mkfs命令在分区上建立新的文件系统 (其他信息见 fdisk-补充说明 ) |
mkfs [参数] 磁盘设备 | 在指定分区上创建文件系统 | -t 文件系统类型 :指定文件系统类型(如ext4,xfs,vfat等) | 使用示例:mkfs -t ext4 /dev/sda1 |
mount [选项] [设备] [挂载点] | 将设备挂载到指定的挂载点 | -t 文件系统类型 :指定文件系统类型;-o 选项 :指定挂载选项(如只读、用户、绑定等) | 当不输入任何选项和参数时会显示当前已挂载的设备 |
umount [选项] 挂载点或设备 | 卸载已挂载的设备 | -f :强制卸载;-l :延迟卸载 |
fdisk-补充说明
fdisk命令是交互式的,可以用以下交互式命令对磁盘分区表进行操作:
按键 | 功能 |
---|---|
m | 显示菜单和帮助信息 |
a | 切换可启动标志 |
p | 打印分区信息 |
l | 显示分区类型 |
d | 删除分区 |
n | 新建分区 |
t | 设置分区号 |
q | 退出不保存 |
w | 保存修改 |
9. 归档和压缩命令
命令 | 描述 | 常用参数 | 备注 |
---|---|---|---|
tar [选项] [归档文件名] [文件或目录路径] | 创建、提取和管理归档文件 | -c :创建新的归档文件;-x :提取归档文件;-t :列出归档文件内容;-r :向现有归档文件中添加文件(保留原始文件);-v :显示详细信息;-f :指定归档文件名;-z :使用 gzip 压缩或解压缩;-j :使用 bzip2 压缩或解压缩;-J :使用 xz 压缩或解压缩;-C :指定提取到的目录 | (见tar-常用操作 ) |
zip [选项] [压缩文件名] [文件或目录路径] | 创建和管理zip压缩文件 | -r :递归压缩目录;-d :从现有压缩文件中删除指定文件(保留原始文件);-u :向现有压缩文件中添加文件(保留原始文件);-m :压缩后删除原文件 | 使用示例:zip -r archive.zip file.txt dir ;zip -u archive.zip newfile.txt ;zip -d archive.zip file.txt |
unzip [选项] [压缩文件] | 查看和解压缩zip压缩文件 | -d :指定解压到的目录;-l :列出压缩文件内容;-o :覆盖已存在的文件 | 使用示例:unzip archive.zip ;unzip -o archive.zip -d /target/directory ;unzip archive.zip -x file.txt |
tar-常用操作
创建一个名为 archive.tar
的归档文件,包含 dir1
和 dir2
目录:
tar -cvf archive.tar dir1 dir2`
提取归档文件 archive.tar
的内容
tar -xvf archive.tar
列出归档文件 archive.tar
的内容:
tar -tvf archive.tar
追加newfile
文件到归档文件archive.tar
中:
tar -rvf archive.tar newfile
在指定位置创建或将归档文件提取到指定目录:
tar -cvf archive.tar dir1 dir2 -C /target/directory
tar -xvf dir1.tar -C /target/directory
结合不同的压缩程序来创建和解压缩归档文件:
# 使用gzip
tar -czvf archive.tar.gz directory
tar -xzvf archive.tar.gz
# 使用bzip2
tar -cjvf archive.tar.bz2 directory
tar -xjvf archive.tar.bz2
# 使用xz
tar -cJvf archive.tar.xz directory
tar -xJvf archive.tar.xz
三、Vi与Vim编辑器
Vi编辑器是一个模式化的文本编辑工具,用于在命令行中编辑指定的文件内容,被广泛用于Unix和类Unix系统中。Vi以其轻量级、高效和键盘友好的设计而受到系统管理员和程序员的青睐,支持基本的文本编辑功能,并可通过简易的命令行操作实现复杂的文本处理任务。Vim(Vi IMproved)是Vi的升级版本,完全兼容Vi,在此基础上还支持代码的语法高亮、正则表达式的搜索、多文件编辑、块复制等功能。
Vi/Vim编辑器有以下三种工作模式:
- 命令模式:此模式下,不能自由进行文本编辑,所有的输入都会被理解为命令,以命令驱动执行不同的功能
- 输入模式:也称为编辑模式、插入模式。此模式下,可以对文本内容进行自由编辑
- 底线命令模式:在此模式下,可以输入单个或多个字符的命令,这些命令都以
:
开头,通常用于文件的保持和退出
以下是Vi/VIm各个模式常用的快捷键:
1. 命令模式
命令 | 描述 |
---|---|
i | 在当前光标位置进入输入模式 |
I | 在当前行的开头进入输入模式 |
a | 在当前光标位置之后进入输入模式 |
A | 在当前行的结尾进入输入模式 |
o | 在当前光标的下一行进入输入模式 |
O | 在当前光标的上一行进入输入模式 |
Up/Down/Left/Right或 k/j/h/l` | 向上/下/左/右移动光标 |
0 | 移动光标到当前行开头 |
$ | 移动光标到当前行结尾 |
pageup | 向上翻页 |
pagedown | 向下翻页 |
/ | 进入搜索模式 |
n | 向下继续搜索 |
N | 向上继续搜索 |
dd | 删除光标所在行内容 |
ndd | 删除当前光标所在行和下面n行 |
yy | 复制当前行 |
nyy | 复制当前光标所在行和下面n行 |
p | 粘贴复制的内容 |
u | 撤销修改 |
Ctrl + R | 反向撤销修改 |
gg | 跳到首行 |
G | 跳到行尾 |
dG | 从当前行开始,向下全部删除 |
dgg | 从当前行开始,向上全部删除 |
d$ | 从光标位置开始,删除到本行结尾 |
d0 | 从光标位置开始,删除到本行开头 |
2. 输入模式
命令 | 描述 |
---|---|
esc | 回到命令模式 |
Up/Down/Left/Right或 k/j/h/l` | 向上/下/左/右移动光标 |
3. 底线命令模式
命令 | 描述 |
---|---|
Enter | 执行命令 |
:wq | 保存并退出 |
:q | 仅退出 |
:q! | 强制退出 |
:w | 仅保存 |
:set nu | 显示行号 |
:set nonu | 不显示行号 |
:set paste | 进入粘贴模式(禁用自动缩进) |
:set nopaste | 退出粘贴模式(重新启用自动缩进) |
四、程序安装和包管理
在Linux系统中,软件包管理器是用户用来安装、更新、配置和卸载应用程序及其依赖项的重要工具。不同的Linux发行版提供了各自的软件包管理器,这些工具有不同的命令(需要在root权限下执行)。
以下是一些常用软件包管理器及其对应的常用Linux发行版:
软件包管理器 | 软件包后缀名 | 发行版 | 支持自动处理包依赖 | 备注 |
---|---|---|---|---|
rpm | .rpm | Red Hat,… | false | 适用于Red Hat及其所有衍生发行版 |
yum | .rpm | Red Hat,Fedora,CentOS | true | 基于rpm |
dnf | .rpm | Red Hat 8,Fedora 18,CentOS 8及以上版本 | true | 基于rpm |
dpkg | .deb | Debian,… | false | 适用于Debian及其所有衍生发行版 |
apt | .deb | Debian,Ubuntu,Deepin,Mint,Kali,Pop!_OS | true | 基于dpkg |
zypper/yast | .rpm | SUSE, openSUSE | true | 适用于SUSE及其所有衍生发行版 |
pacman | .pkg/.tar/.xz | Arch,Manjaro,EndeavourOS,Chakra | true | 适用于Arch及其所有衍生发行版 |
下面以yum和apt为例,介绍它们各自的语法及常用命令:
1. yum语法
yum [选项] 操作 包名
- 选项:
-y
:安装过程中的提示全部选择"yes"-q
:不显示安装的过程
- 操作:
check-update
:检查可用更新update
:升级所有已安装的软件包install
:安装新软件包remove
:卸载软件包clean
:清理缓存list
:列出软件包search
:搜索包含关键字的软件包
2. apt语法
yum [选项] 操作 包名
- 选项:
-y
:安装过程中的提示全部选择"yes"-q
:不显示安装的过程
- 操作:
update
:更新包列表upgrade
:升级所有已安装的软件包install
:安装新软件包remove
:卸载软件包autoremove
:自动卸载不再需要的软件包clean
:清理下载的包文件dist-upgrade
:进行发行版升级search
:搜索包含关键字的软件包
五、常用终端快捷键
下面列出了在Linux的终端中常用的快捷键(大部分适配Mac OS)
1. 光标控制
快捷键 | 描述 | 备注 |
---|---|---|
Ctrl+A | 光标迅速回到行首 | |
Ctrl+E | 光标迅速回到行尾 | |
Ctrl+F | 光标向右移动一个字符 | |
Ctrl+B | 光标向左移动一个字符 | |
Alt+F 或 Ctrl+Right | 光标前进一个单词 | |
Alt+B 或 Ctrl+Left | 光标后退一个单词 |
2. 命令历史
快捷键 | 描述 | 备注 |
---|---|---|
Tab | 命令或路径等的补全键 | 快速自动补全命令或文件名,连续按两次可以列出所有可能的补全 |
Ctrl+P | 上一条命令 | |
Ctrl+N | 下一条命令 | |
Ctrl+R | 搜索命令行历史记录 | 按回车可以立即执行;按Left/Right可以修改匹配到的命令 |
Ctrl+G | 退出Ctrl+R的搜索模式 | |
!! | 执行上一条命令 | |
!num | 执行历史命令列表的第num条命令 | |
!$ | 代表上一条命令的最后一个参数 | 快速插入历史命令的最后一个参数 |
!pw | 执行以特定字符开头的命令 | 使用历史命令的前缀进行搜索 |
!pw:p | 仅打印以特定字符开头的命令 | 不执行命令,只打印匹配的历史命令 |
3. 命令编辑
快捷键 | 描述 | 备注 |
---|---|---|
Ctrl+K | 剪切光标处到行尾的所有字符 | |
Ctrl+U | 剪切光标处到行首的所有字符 | |
Ctrl+W | 剪切光标前的一个字符 | |
Ctrl+Y | 粘贴使用Ctrl+K、Ctrl+U、Ctrl+W删除的字符 | 撤销剪切操作 |
Ctrl+H | 删除光标前的一个字符(退格) | 等同于Backspace键 |
4. 终端控制
快捷键 | 描述 | 备注 |
---|---|---|
Ctrl+C | 中断终端正在执行的任务 | |
Ctrl+L | 清除终端内容并开启新一行 | |
Ctrl+D | 在当前终端中登出当前账户或退出某些程序的特定页面 | 不能用于退出Vi/Vim |
Ctrl+S | 锁定终端 | |
Ctrl+Q | 解锁终端 | |
Ctrl+Z | 暂停终端任务,可使用"fg"恢复 | 将任务放到后台并暂停 |
5. 其他
快捷键 | 描述 | 备注 |
---|---|---|
Ctrl+Insert | 复制命令行内容(仅限非Mac系统) | 复制当前行到剪贴板 |
Shift+Insert | 粘贴命令行内容(仅限非Mac系统) | 从剪贴板粘贴内容到终端 |
Esc+. | 获取上一条命令的最后部分 | 快速插入历史命令的最后部分 |
Esc+B | 移动到当前单词的开头 | 快速编辑当前单词 |
Esc+F | 移动到当前单词的结尾 | 快速编辑当前单词 |
六、常用配置与操作
1. 修改主机名称
可通过以下步骤修改系统的主机名称:
- 使用
hostname
命令查看当前主机名 - 使用
vim /etc/hostname
来使用Vim编辑器修改主机名配置文件的内容,将其中的当前主机名替换为新的主机名并保存 - 使用
vim /etc/hosts
来使用Vim编辑器修改主机名配置文件的内容,将其中的当前主机名替换为新的主机名并保存 - 使用
systemctl restart network
命令或重启系统使修改生效
2. 修改时区
有时Linux系统的默认时区可能不符合用户需求,可以通过以下步骤来手动修改系统时区:
- 使用
data -R
命令查看当前时区 - 使用
tzselect
命令查看目标时区的对应的TZ
环境变量的写法。TZ
的值通常是一个代表特定地理区域的字符串,如Asia/Shanghai
,而tzselect
命令可以通过依次询问大洲-国家-城市,最后告诉你对应时区的TZ
值的写法 - 修改时区
- 临时修改:执行命令
export TZ='查询到的TZ值'
,如export TZ='Asia/Shanghai'
来临时修改环境变量TZ
的值 - 永久修改:执行
ln -sf /usr/share/zoneinfo/查询到的TZ值 /etc/localtime
,如ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
来修改/etc/localtime
指向的软连接,进而永久修改系统的时区
- 临时修改:执行命令
Tip:许多Linux系统自带NTP或Chrony程序(没有可自行安装),可使用它们自动联网校准系统时间,具体使用方法请自行搜索。
3. 配置静态IP
Linux系统的IP通常默认情况下是会根据当前网络自动变化的,但在一些特定的场景下(如远程访问、充当服务器)要求设备具有静态IP,以便远程设备或用户能够准确找到并访问到你的设备。配置静态IP通常有以下步骤:
- 使用
ifconfig
命令查看当前IP相关信息 - 使用
vim /etc/sysconfig/network-scripts/ifcfg-ens33
命令来使用Vim编辑器修改网卡配置文件的内容 - 按要求修改网卡配置文件的如下配置项并保存:
BOOTPROTO="static" # 修改:dhcp修改为static,将IP设为静态
ONBOOT="yes" # 修改:修改为yes, 配置网卡开机自启动
IPADDR="10.193.12.23" # 新增:想要配置的静态IP地址
NETMASK="255.255.255.0" # 新增:静态IP地址的子网掩码
GATEWAY="10.193.12.254" # 新增:静态IP地址的网关
DNS1="8.8.8.8" # 新增:配置DNS服务器
相关链接:
- 超详细的VMware虚拟机安装Linux图文教程保姆级_vmware虚拟机安装linux教程-CSDN博客
- 技术|Linux 黑话解释:什么是 Linux 发行版?为什么它被称为“发行版”?
- 技术|最适合程序员的 10 款 Linux 发行版
- Linux 命令大全 | 菜鸟教程 (runoob)
- 万字总结Linux常用命令(包含命令的用法、参数、使用示例)-CSDN博客
- Linux下的软件包管理:一文掌握核心工具与操作-CSDN博客
- Linux查看和修改时区_查看时区-CSDN博客
- Linux env命令教程:如何查看、修改和清空环境变量(附案例详解和注意事项)-Linux入门自学网
一、基础知识
Linux是一种开源的、基于Unix的操作系统内核,由Linus Torvalds在1991年首次发布,并由全球的开发者社区共同维护和改进,它是许多流行的操作系统的基础。其稳定性、安全性、处理多并发等已得到业界的认可,目前很多企业级的项目都会部署到Linux系统上。
Linux只是一个内核,不是一个操作系统。而Linux发行版(也称为GNU/Linux)是一个由Linux内核、GNU工具、附加软件和软件包管理器组成的操作系统,它也可能包括显示服务器和桌面环境,以用作常规的桌面操作系统。Linux目前在全球范围内有上百款发行版,常见的主流发行版及其衍生发行版如下:
发行版 | 衍生发行版 |
---|---|
Red Hat | Fedora、CentOS等 |
Debian | Ubuntu,Deepin,Mint,Kali,Pop!_OS等 |
SUSE | openSUSE等 |
Arch | Arch,Manjaro,EndeavourOS,Chakra等 |
1. 目录结构
Linux系统的基本目录结构如下:
其中的一些常见的目录以及它们的基本介绍如下:
目录路径 | 介绍 |
---|---|
/ | 根目录,是文件系统层次结构的起始点,所有其他目录和文件都从这里开始 |
/bin | 存放基本的二进制可执行文件,这些是系统命令,对所有用户都可用 |
/boot | 包含启动Linux系统所需的文件,如内核和启动加载器配置文件 |
/dev | 设备文件目录,包含指向各种硬件设备的文件,如硬盘、键盘、鼠标等 |
/etc | 系统配置文件目录,存放系统启动和运行所需的配置文件 |
/home | 用户主目录,每个用户都有一个以用户名命名的子目录,存放个人文件 |
/root | 超级管理员(也称为root用户)的主目录,通常用于存放系统管理员的文件 |
/sbin | 存放系统二进制文件,这些通常是系统管理员使用的系统管理命令 |
/tmp | 存放临时文件,这些文件在系统重启后可能被删除,用于应用程序或系统进程 |
/usr | 用户相关的应用程序和文件目录,包含应用程序的可执行文件和库文件 |
/usr/bin | 用户级别的应用程序可执行文件存放在这里 |
/usr/sbin | 系统管理员使用的应用程序可执行文件存放在这里 |
/usr/local | 本地安装的软件目录,用于存放从源代码编译安装的软件 |
/var | 存放经常变化的文件,如日志文件、数据库文件、邮件等 |
/mnt | 临时挂载点目录,用于挂载文件系统进行访问,通常由用户或管理员手动挂载 |
/proc | 虚拟文件系统,包含系统和进程的运行时信息,如内存使用、进程状态等 |
/sys | 另一个虚拟文件系统,提供对内核数据结构的直接访问,用于硬件信息 |
/opt | 第三方应用程序安装目录,用于存放非标准途径安装的应用程序 |
/lib | 存放系统库文件,这些库文件被系统程序和应用程序在运行时链接和使用 |
/srv | 服务数据目录,用于存放系统服务提供的数据,如WWW、FTP服务器的数据 |
/selinux | 安全相关的配置文件目录,用于SELinux安全模块,包含安全策略和上下文 |
/lost+found | 文件系统损坏时,fsck 命令尝试恢复的文件存放在这里,通常在文件系统检查后清空 |
2. 用户与用户组
在Linux系统中,用户(users)和用户组(groups)是权限管理的基础。它们共同工作,以控制对系统资源的访问。
保存用户和用户组信息的相关文件有:
/etc/passwd
:保存用户名称、ID、宿主目录、登录shell等基本信息/etc/shadow
:保存用户的密码、账号有效期等信息/etc/group
:保存用户组的名称、ID等基本信息/etc/gshadow
:保存用户组的密码、管理者、成员等信息
2.1 用户
在Linux系统中,每个用户账户都有一个唯一的用户名和用户ID(UID),以及与之关联的HOME目录、登录Shell和个人配置文件。用户账户使个别用户能够访问系统资源,执行程序,以及根据分配的权限管理和创建文件。
默认有以下三类用户:
- 超级用户:也叫root用户,是Linux操作系统中默认的超级用户账号,对本主机拥有最高的权限,系统中超级用户是唯一的
- 普通用户:由root用户或其他管理员用户创建,拥有的权限会受到限制,一般只在用户自己的HOME目录中拥有完整权限
- 程序用户:在安装Linux操作系统及部分应用程序时,会添加一些特定的低权限用户账号,这些用户一般不允许登录到系统,仅用于维持系统或某个程序的正常运行,如bin、daemon、ftp、mail等
超级用户的命令提示符是“#”,普通用户的命令提示符是“$”。
2.2 用户组
在Linux系统中,用户组是一组用户的集合,它们共享相同的文件访问权限和资源。每个用户组都有一个唯一的组名和组ID(GID)。用户可以属于多个组,其中包括一个主要组和若干附加组。用户组是Linux权限管理的核心部分,它允许管理员以组为单位设置文件和目录的访问权限,从而简化权限分配过程并提高系统安全性。
主要组和附加组的区别如下:
- 主要组(私有组) :基本组账号只有一个,一般为创建用户时指定的组
- 附加组(公共组) :用户除了基本组以外,额外添加指定的组。附加组可以有多个,可以在基本组,也可以同时在附加组
3. 文件权限
3.1 文件访问者的分类
在Linux系统中,文件的访问者主要分为以下三类:
- 文件所有者(Owner): 这是文件创建时被分配的初始所有者,通常是创建文件的用户。文件所有者可以对文件执行读取、写入和执行等操作,除非这些权限被明确更改;
- 所属用户组(Group):每个用户可以属于一个或多个组,文件的所属组是文件创建时分配给该文件的用户所属的默认组。同一用户组内的其他用户可以按照该组的权限设置来访问文件;
- 其他用户(Others):这是指既不是文件所有者也不是文件所属组内成员的所有其他用户。对于“其他”类别的访问者,系统管理员可以设置不同的权限,以控制非特定用户对文件的访问
3.2 权限信息
文件和目录的权限信息是通过一组形如drwxr-xr-x
的标识符来表示的,这些标识符表示了该文件的类型和不同用户对文件或目录的访问权限。文件的权限信息共分为10位,这10位信息被分成了以下四部分:
文件类型(第1位)|文件所有者的权限(2~4位)|文件所属组的权限(5~7位)|其他用户的权限(8~10位)
d rwx r-x r-x
其中各部分字母表示的含义如下:
表示的信息 | 对应位数 | 权限符号及含义 |
---|---|---|
文件类型 | 1 | d :文件夹;- :普通文件; l :软链接(类似Windows的快捷方式);b :块设备文件(例如硬盘、光驱等);p :管道文件;c :字符设备文件(例如屏幕等串口设备) ;s :套接口文件 |
用户权限 | 2~10 | r :对文件而言,具有读取文件内容的权限、对目录来说,具有浏览该目录信息的权限;w :对文件而言,具有修改文件内容的权限、对目录来说具有删除移动目录内文件的权限;x :对文件而言,具有执行文件的权限、对目录来说,具有进入目录的权限;- :不具备对应权限 |
3.3 权限信息的数字表示
权限信息中的用户权限也可以简化成三位数字来表示,如rwxr-xr-x
可以简化成755
,其中第一位表示文件所有者的权限、第二位表示文件所属组的权限、第三位表示其他用户的权限。
r记为4、w记为2、x记为1,由此可知各个用户的权限及其对应的数字表示如下:
用户权限 | 8进制数字 | 说明 |
---|---|---|
— | 0 | 无权限 |
–x | 1 | 仅可执行 |
-w- | 2 | 只写 |
-wx | 3 | 可写可执行 |
r– | 4 | 只读 |
r-x | 5 | 可读可执行 |
rw- | 6 | 可读可写 |
rwx | 7 | 可读可写可执行 |
3.4 修改权限信息
我们可以使用chmod命令修改文件、文件夹的权限信息。
语法:
chmod [选项] 权限操作 目标路径
常用参数:
选项 | 说明 |
---|---|
-R | 对当前目录及其子目录进行递归更改 |
-c | 只有在文件权限确实更改时才显示其更改动作 |
-f | 如果文件权限无法更改,不显示错误信息 |
-v | 显示权限变更的详细信息 |
在符号语法下,权限操作的格式为操作对象 操作符 权限信息
,如u=rwx
,其中:
- 操作对象:
u
表示文件所有者,g
表示文件所属组,o
表示其他用户,a
表示所有用户; - 操作符:
+
表示增加权限、-
表示取消权限、=
表示唯一设定权限; - 权限信息:
r
表示可读取,w
表示可写入,x
表示可执行,X
表示只有当文件为目录文件,或者其他类型的用户有可执行权限时,才将文件权限设置为可执行
在八进制语法下,权限操作可以简化成三位数字来表示,如755
表示将目标文件的权限信息设为rwxr-xr-x
。
4. 环境变量
环境变量(environment variables)一般是指在操作系统中用来指定操作系统运行环境的一些参数,是操作系统为了满足不同的应用场景预先在系统内预先设置的一大批全局变量。
在Linux系统中,环境变量按照其作用范围不同大致可以分为以下类型:
- 系统环境变量:由系统设置,对所有用户和进程都有效
- 用户环境变量:仅对特定用户有效,通常在用户的 Shell 配置文件中设置
4.1 常用环境变量配置文件
文件路径 | 说明 |
---|---|
/etc/environment | 系统启动时读取,通常用于配置与系统运行相关但与用户无关的环境变量,如主机名等 |
/etc/profile | 在系统启动后第一个用户登录时读取,使用该文件配置的环境变量将应用于登录到系统的每一个用户 |
/etc/profile.d/ | 包含多个脚本文件的目录,其中的脚本在用户登录时被/etc/profile 或/etc/bashrc 调用,用于添加或修改环境变量 |
/etc/bashrc | 在Debian及其衍生的Linux发行版中为/etc/bash.bashrc 。在每个用户登录时或打开新的Shell时读取(易影响系统效率),是全局的Shell配置文件,对所有用户有效。 |
文件路径 | 说明 |
---|---|
/.profile<br>/.bash_profile ~./bash_login | 对应用户登录时读取,每个用户都可以使用该文件来配置专属于自己的登录Shell信息。三个文件只会加载其中一个,优先级:~/.bash_profile >~./bash_login >~/.profile |
~/.bashrc | 在对应用户登录时或打开新的Shell时读取(易影响系统效率),是用户的Shell配置文件,仅对当前用户有效 |
~/.bash_logout | 对应用户登出时读取 |
4.2 常用环境变量
在Linux系统中,有以下常用的环境变量:
环境变量 | 作用描述 |
---|---|
PATH | 决定了系统在哪些目录中查找可执行文件 |
HOME | 指定当前用户的主目录路径 |
USER | 当前用户的用户名 |
SHELL | 指定当前用户默认使用的Shell |
LANG | 指定系统的默认语言 |
LD_LIBRARY_PATH | 指定系统在哪些目录中查找共享库文件 |
TERM | 指定当前终端的类型 |
PS1 | 定义命令行提示符的格式 |
PS2 | 定义多行命令的提示符的格式 |
TZ | 指定当前的时区 |
4.3 配置环境变量
查看环境变量:
printenv # 查看所有的环境变量
env # 查看对当前用户生效的环境变量
set # 查看Shell的环境变量
echo $PATH # 查看指定环境变量
临时配置环境变量:
# 在当前Shell中有效
VARNAME="value" # 设置环境变量VARNAME的值为value
PATH=$PATH:~/local/ # 在环境变量PATH的末尾追加值~/local/
# 在当前Shell及子Shell中有效
export VARNAME="value" # 设置环境变量VARNAME的值为value
unset VARNAME # 删除环境变量VARNAME
永久配置环境变量:
# 用Vi/Vim编辑器打开指定环境变量配置文件以编辑
vi ~/.bashrc
vim ~/.bashrc
# 新增环境变量到指定环境变量配置文件结尾
echo 'export VARNAME="value"' >> ~/.bashrc
# 从指定环境变量配置文件中删除环境变量
grep -v '^export VARNAME=' ~/.bashrc > temp && mv temp ~/.bashrc
# 重新加载对应的配置文件以应用更改
source ~/.bashrc
二、常用命令
Linux命令的基本格式如下:
command [-options] [parameter]
命令格式说明:
- command :命令名,相应功能的英文单词或单词的缩写
- -options :命令选项,可用来对命令进行控制。短选项通常以短划线
-
开始,例如-l
;长选项通常以双划线--
开始,例如--longoption
。选项可以单独使用,也可以组合使用,如-l -a
、-la
、--create --verbose
- parameter :要传递给命令的参数,可以是零个、一个或者多个
输入/输出重定向:
命令默认情况下会从用户的终端接受输入并将所产生的输出发送回到终端,而命令的输入/输出重定向允许用户控制命令的输入来源和输出目标。通过使用特定的重定向操作符,可以将命令的标准输入(stdin)、标准输出(stdout)和标准错误(stderr)从默认的终端重定向到文件或其他命令。常用的重定向操作如下:
示例 | 说明 |
---|---|
command > file | 将命令command的结果输出到文件file(覆盖原文件) |
command >> file | 将命令command的结果追加输出到文件file的末尾 |
command < file | 将文件file的内容作为命令command的输入 |
command << tag | 将开始标记tag和结束标记tag之间的内容作为命令command的输入 |
command1 | command2 | 将命令command1的输出作为command2的输入 |
上表中>
和>>
默认只对命令的标准输出进行重定向,在它们前面加上2
可对标准错误进行重定向、加上&
可对标准输出和标准错误进行重定向。
特殊字符的作用:
终端中的常用特殊字符及其作用如下:
符号 | 作用 |
---|---|
'...' | 单引号内的任何字符都被视为普通字符,即使是特殊字符或变量名也不会被解析 |
"..." | 双引号允许变量和某些shell特殊字符被解析,但不会解析一些特殊字符如 $ 、反斜杠 \ 等 |
`...` | 反引号用于命令替换,执行反引号内的命令,并将输出替换到当前位置 |
$ | 变量前缀,表示后面跟着的是变量名,shell将替换为变量的值 |
$(...) | 命令替换,与反引号功能相同,但可以嵌套,且在某些情况下更清晰 |
${...} | 参数扩展,用于变量替换,可以包含更复杂的表达式,如 ${var:-default} 表示如果 var 未设置,则使用默认值 |
通配符
Linux中常见的通配符及其作用如下:
通配符 | 作用 | 示例 |
---|---|---|
? | 匹配任意一个字符 | ls ?.log 会列出当前目录下所有以单个字符开头和 .log 结尾的文件 |
* | 匹配任意数量(包括零个)的任意字符 | ls *.txt 会列出当前目录下所有以 .txt 结尾的文件 |
[abc] | 匹配方括号内的任意一个字符(范围或集合) | ls [0-9]* 会列出当前目录下所有以数字开头的文件 |
[!abc] 或[^abc] | 匹配除了方括号内的任意一个字符 | ls [!0-9]* 会列出当前目录下所有不以数字开头的文件 |
{option1,option2,...} | 匹配花括号内的多个选项(选项之间用逗号分隔) | echo {a,b}.txt 会输出 a.txt b.txt |
** | 递归匹配任意数量的目录,包括所有子目录 | find / -name **/*.txt 会从根目录开始查找所有 .txt 文件 |
1. 文件管理命令
命令 | 描述 | 常用选项 | 备注 |
---|---|---|---|
ls [选项] [目录路径] | 看指定目录中的内容,如文件夹、文件 | -l :以列表形式列出文件信息,并展示更多信息;-a :显示所有文件,包括隐藏文件;-h :以易于阅读的格式显示文件大小(需要和-l同时使用);-R :递归列出目录及其子目录中的内容 | 当不输入选项和参数时会以平铺形式列出当前工作目录下的内容 |
cd [目录路径] | 改当前所在的工作目录 | / | 当不输入参数时表示回到当前用户的HOME目录 |
pwd | 看当前所在的工作目录的路径 | / | |
cp [选项] 源路径 目标路径 | 制指定文件或目录 | -r :递归复制目录及其内容;-i :在覆盖文件前提示确认;-u :仅在源文件比目标文件新或目标文件不存在时复制 | |
mv [选项] 源路径 目标路径 | 动或重命名指定文件或目录 | -i :在覆盖文件前提示确认;-u :仅在源文件比目标文件新或目标文件不存在时移动 | |
rm [选项] 目标路径 | 除指定文件或目录 | -r :递归删除目录及其内容;-f :强制删除,不提示确认;-i :删除前逐个文件提示确认 | |
mkdir [选项] 目录路径] | 指定目录下创建新的目录 | -p :递归创建不存在的父目录,用于创建连续的多层级的目录 | |
find [起始路径] [选项] [表达式] | 指定目录下查找文件或目录 | -name 名称 :按名称查找文件;-type 类型 :按类型查找(f 为文件,d 为目录)。-size 文件大小 :按大小查找文件(+、-表示大于和小于;k表示kb,M表示MB,G表示GB);-mtime 时间 :按修改时间查找文件(正数表示在指定天数之前修改过的文件,负数表示指定天数之内修改过的文件,不加符号表示正好在指定的那天修改过的文件);-exec 命令 :对查找到的文件执行指定的命令 | 示例:find /home -name "*.txt" -size +1M -mtime -0.5 |
cat [选项] 文件路径 | 看指定文件的内容 | -n :显示行号;-b :对非空输出行编号;-s :压缩连续的空行;-E :在每行末尾显示 $ | |
more [选项] 文件路径 | 分页查看指定文件的内容 | -d :显示"Press space to continue…"提示;-num :每页显示num行;+num :从第num行开始显示;-s :压缩连续的空行 | 常用操作: 1.按 Space 显示下一页;2.按 B 显示前一页;3.按 Q 退出;4. /字符串 向前搜索指定字符串;5. ?字符串 向后搜索指定字符串 |
less [选项] 文件路径 | 分页查看指定文件的内容(more的升级版) | -N :显示行号;-I :忽略搜索时的大小写;-S :禁止自动换行 | 常用操作: 1.按 ! 调用shell并执行命令;2.按 V 调用Vi/Vim编辑器;3.按 n 搜索下一个匹配项;4.按 N 搜索上一个匹配项;5.按 Down 向下滚动一行;6.按 Up 向上滚动一行(其他操作与 more 基本相同) |
chmod [选项] 权限操作 目标路径 | 改指定文件,文件夹的权限信息 | -R :对当前目录及其子目录进行递归更改;-c :只有在文件权限确实更改时才显示其更改动作;-f :如果文件权限无法更改,不显示错误信息;-v :显示权限变更的详细信息 | 示例:chmod u+x,g-w,o=r file.txt ;chmod 751 file.txt (关于权限操作的详细说明,见 文件权限 中的修改权限信息 ) |
chown [选项] [新所有者][:新组] 目标路径 | 改指定文件的所有者和组 | -R :对当前目录及其子目录进行递归更改;-c :只有在文件权限确实更改时才显示其更改动作;-f :如果文件权限无法更改,不显示错误信息;-v :显示权限变更的详细信息 | |
ln [参数] 源路径 目标路径 | 在源文件或文件夹和目标文件或文件间建立链接 | -b :备份已存在的目标文件;-f :强制执行;-i :交互模式,文件存在则提示用户是否覆盖;-n :把符号链接视为一般目录;-s :软链接(也叫符号链接),不加此选项则建立硬链接;-v : 显示详细的处理过程 | (见ln-硬链接与软连接的区别 ) |
ln-硬链接与软连接的区别
软链接:
- 以路径的形式存在。类似于Windows操作系统中的快捷方式
- 可以对目录进行链接
- 可以对一个不存在的文件名进行链接
- 可以跨文件系统创建
硬链接:
- 以文件副本的形式存在。但不占用实际空间
- 不允许给目录创建硬链接
- 只有在同一个文件系统中才能创建
2. 文本处理命令
命令 | 描述 | 常用选项 | 备注 |
---|---|---|---|
grep [选项] 关键字 文件路径 | 在指定文件中搜索文本 | -i :忽略大小写;-r :递归搜索目录;-v :显示不匹配的行;-n :显示匹配行的行号;-l :只显示包含匹配的文件名;-c :显示匹配的行数;-o :只输出匹配的部分 | 示例:grep -i "hello" example.txt |
wc [选项] 文件路径 | 统计指定文件的行数、字数、字符数等 | -l :显示行数;-w :显示字数/单词数;-c :显示字节数;-m :显示字符数 | 当不输入参数时以行数,单词数,字节数的顺序显示 |
echo 字符串 | 输出字符串 | -e :允许使用\ 进行转义 | 示例:echo "hello world" ;echo -e "hello\nworld" ;echo "hello" "world" ;echo "The value of x is $x" |
head [选项] 文件路径 | 查看指定文件尾部的内容 | -n num :显示文件尾部的num行内容(默认10行;0表示显示整个文件);-c num :显示文件尾部的num个字节内容(无默认值;0表示从文件末尾开始显示); | |
tail [选项] 文件路径 | 查看指定文件尾部的内容;跟踪文件的最新修改 | -n num :显示文件尾部的num行内容(默认10行;0表示显示整个文件);-c num :显示文件尾部的num个字节内容(无默认值;0表示从文件末尾开始显示);-f :实时显示文件内容,常用于查看日志文件(按Ctrl + C 停止追踪);-r :倒序显示文件内容 | |
vi/vim 文件路径 | 使用Vi或Vim编辑器编辑指定文件(文件不存在则会在指定位置创建新文件) | / | 编辑器的详细使用方法见Vi与Vim编辑器 |
3. 用户管理命令
命令 | 描述 | 常用选项 | 备注 |
---|---|---|---|
who [选项] | 显示当前登录的用户 | -H :显示列标题;-q :显示登录用户的数量和名称;-b :显示系统最后的启动时间 | |
id [选项] 用户名 | 显示用户和组信息 | -u :显示用户id;-g :显示所属的主要组id;-G :显示所属的所有附加组id;-n :显示用户、群组的名称而不是数字id | |
su [选项] [用户名] | 切换到指定用户 | -l 或- :加载切换到的用户的环境变量并切换到对应的HOME目录(默认不加载环境变量和切换HOEM目录);-c 命令 :以切换到的用户的身份执行指定命令;-s shell路径 :指定本次用户的登录shell | 1.普通用户切换到其他用户通常要输入对应用户的密码; 2/root用户切换到其他用户无需输入密码; 3.直接使用 su 或su -l 或su - 时默认会切换到root用户;4.切换后,输入 exit 或按Ctrl + D 来退回到上一个用户 |
sudo [参数] [命令] | 以root用户的权限执行命令 | -u 用户名 :以指定用户的身份执行命令;-s :指定本次用户的登录shell;visudo :编辑/etc/sudoers 文件 | 1.只有在/etc/sudoers 文件中指明的用户才能使用sudo命令;2.该用户初次使用sudo命令时需要输入该用户的密码; 3.出于安全考虑,建议使用sudo而不是su,除非你需要一个完整的root shell环境 |
passwd [参数] [用户名] | 修改指定用户的密码 | -l :锁定用户,使其无法使用密码登录;-u :解锁用户,允许用户使用密码登录 | 1.不输入任何选项和参数时,系统会提示输入当前密码(如果已经设置),然后要求输入新密码并确认; 2.只有root用户或有权使用sudo命令的用户才能修改其他用户的密码 |
useradd [选项] 用户名 | 添加新用户 | -m :创建用户的主目录。使用-d 参数时,此参数将被忽略;-d 目录路径 :指定用户的主目录,如果目录不存在则自动创建;-p 密码 :指定用户的密码;-s shell路径 :指定用户的登录shell;-g 组名 :指定用户所属的主要组;-G 组名1, 组名2, ... :指定用户所属的附加组;-u 用户id :指定用户id;-c 描述 :为用户添加描述信息 | 示例:useradd -d /home/customdir -g maingroup -s /bin/bash Jhon |
usermod [选项] 用户名 | 修改指定用户的信息 | -l 用户名 :修改用户名(其他参数同 useradd ) | |
userdel [选项] 用户名 | 删除指定用户 | -r :删除用户的主目录和邮件池 | |
groupadd [选项] 组名 | 添加新组 | -g 组id :指定组id | |
groupmod [选项] 组名 | 修改指定组的信息 | -n 组名 :修改组名(其他参数同 groupadd ) | |
groupdel 组名 | 删除指定组 | / |
5. 网络管理命令
命令 | 描述 | 常用选项 | 备注 |
---|---|---|---|
ifconfig [网络接口] [选项] | 显示或配置网络接口 | up :启动网络接口;down :关闭网络接口;inet IP地址 :设置接口的IP地址;netmask IP地址 :设置接口的子网掩码;broadcast IP地址 :设置接口的广播地址 | 当不输入选项和参数时会列出所有的网络接口及其配置 |
ip [选项] 操作对象 操作 | 显示或配置网络接口、路由等 | -s :输出更详细的信息;-f :强制使用指定的协议族;-4 :指定使用的网络层协议是IPv4协议;-6 :指定使用的网络层协议是IPv6协议;-0 :输出信息每条记录输出一行,即使内容较多也不换行显示;-r :显示主机时,不使用IP地址,而使用主机的域名 | 使用示例:ip link set eth0 up ;ip addr add 192.168.1.100/24 dev eth0 ;ip route show (操作对象及操作见 ip-补充说明 ) |
ping [选项] 目标地址 | 测试与目标主机的网络连接(使用ICMP传输协议) | -c 次数 :指定发送的ICMP请求数;-i 间隔 :指定每次请求间的间隔时间;-s 大小 :指定ICMP数据包的大小 | 使用示例:ping 114.80.174.120 ;ping -c 2 www.example |
traceroute [选项] 目标地址 | 显示数据包到目标主机的路径 | -n :使用IP地址而非主机名;-m 最大跳数 :设置最大跳数 | |
netstat [选项] | 显示网络连接、路由表、接口状态等 | -a :显示所有连接和监听端口;-t :显示TCP连接;-u :显示UDP连接;-n :以数字形式显示地址和端口;-r :显示路由表;-i :显示网络接口信息 |
ip-补充说明
ip命令的常用操作对象及其对应操作如下:
addr
:管理IP地址
show
:显示地址add
:添加地址del
:删除地址
link
:管理网络接口
show
:显示接口set
:设置接口状态(up/down)
route
:管理路由表
show
:显示路由add
:添加路由del
:删除路由
6. 进程管理命令
命令 | 描述 | 常用选项 | 备注 |
---|---|---|---|
ps [选项] | 显示当前系统中运行的进程 | -e 或 -A :显示所有进程;-f :显示完整格式的输出,包括PPID、C、STIME、TTY、TIME、CMD;-u 用户 :显示特定用户的进程;-p PID :显示指定PID的进 | 可使用管道符配合grep对进程的名称、进程号等进行过滤 |
top [选项] | 实时显示系统资源使用情况 | -d 秒数 :指定命令的刷新时间间隔,单位为秒;-n 次数 :指定命令运行的次数后自动退出;-p 进程ID :仅显示指定进程的信息;-u 用户名 :仅显示指定用户名的进程信息;-i :不显示闲置(idle)或无用(zobime)进程;-b :以非交互模式(默认是交互模式)、以批处理模式执行命令(可配合重定向符将内容输出到指定文件);-c :显示产生进程的完整的命令(默认显示进程名) | 使用示例:top -d 2 ;top -b -n 3 > /top.txt (其他信息见 top-补充说明 ) |
kill [选项] 进程ID | 终止指定进程 | -9 :强制终止进程;-15 :发送TERM信号(默认),请求进程终止 |
ps-补充说明
top命令的常见信息及其对应含义如下:
信息 | 含义 |
---|---|
UID | 进程所属用户ID |
PID | 进程ID |
PPID | 父进程ID |
C | 进程CPU占用率 |
STIME | 进程的启动时间 |
TTY | 启动此进程的终端序号(显示? 表示非终端启动) |
TIME | 进程占用的CPU时间 |
CMD | 进程的名称或启动路径或启动命令 |
top-补充说明
top命令的常见信息及其对应含义如下:
信息 | 含义 |
---|---|
PID | 进程ID |
USER | 进程所属用户 |
RR | 进程优先级(越小越高) |
NI | 负值表示高优先级,正值表示低优先级 |
VIRT | 进程使用的虚拟内存,默认单位KB |
RES | 进程使用的物理内存,默认单位KB |
SHR | 进程使用的共享内存,默认单位KB |
S | 进程状态(S休眠,R运行,Z僵死状态,N负数优先级,I空闲状态) |
%CPU | 进程CPU占用率 |
%TIME | 进程内存占用率 |
TIME+ | 进程使用的CPU时间总计,单位10毫秒 |
COMMAND | 进程的命令或程序文件路径 |
当以交互式模式执行top命令(非-b选项启动)时,可以用以下交互式命令控制内容的显示形式:
按键 | 功能 |
---|---|
h | 显示帮助界面 |
c | 显示产生进程的完整的命令行(等同于-c选项) |
f | 选择需要展示的项目 |
M | 根据驻留内存大小(RES)排序 |
P | 根据CPU使用百分比排序 |
T | 根据实际/累计时间排序 |
E | 切换内存显示的单位 |
e | 切换进程内存的显示单位 |
l | 切换显示平均负载和启动时间的信息 |
i | 不显示闲置或无用进程(等同于-i选项) |
t | 切换显示CPU状态信息 |
m | 切换显示内存信息 |
7. 系统管理命令
命令 | 描述 | 常用参数 | 备注 |
---|---|---|---|
systemd 选项 服务名 | 对指定服务进行管理和操作 | start :启动服务;stop :关闭服务;status :查看服务状态;enable :开启服务的开机自启;disable :关闭服务的开机自启 | 需要root权限才能使用此命令 |
date [选项] [格式化字符串] | 查看,设置系统时间 | -d "数字 时间标记" :按照给定的相对时间对当前时间进行加减并显示结果。正/负数分别表示之后/之前的时间。支持的时间标记有year、month、day、hour、minute、second;-s :设定系统时间(需要root权限) | 当不输入选项和参数时显示当前系统时间 使用示例: date "+%Y-%m-%d %H:%M:%S" ;date -d "-3 year" ;date -d "-2 month 15 day" "+%Y%m%d" ;date -s "2024-10-28 10:10:10" (其他信息见 date-补充说明 ) |
date-补充说明
date命令常用的格式化字符串如下:
格式化字符串 | 含义 |
---|---|
%Y | 年(四位数) |
%y | 年后两位 |
%m | 月(01-12) |
%d | 日(01-31) |
%H | 小时(00-23) |
%M | 分钟(00-59) |
%S | 秒(00-59) |
%s | 自1970-01-01 00:00:00 UTC到现在的秒数 |
8. 磁盘管理命令
命令 | 描述 | 常用参数 | 备注 |
---|---|---|---|
df [选项] | 查看磁盘空间使用情况 | -h :以人类可读的格式显示磁盘使用情况。-T :显示文件系统类型 | |
fdisk [选项] 磁盘设备 | 创建和维护磁盘分区 | -l :列出所有磁盘及其分区信息;-u :显示分区大小,以扇区为单位 | 建立新分区后通常要使用mkfs命令在分区上建立新的文件系统 (其他信息见 fdisk-补充说明 ) |
mkfs [参数] 磁盘设备 | 在指定分区上创建文件系统 | -t 文件系统类型 :指定文件系统类型(如ext4,xfs,vfat等) | 使用示例:mkfs -t ext4 /dev/sda1 |
mount [选项] [设备] [挂载点] | 将设备挂载到指定的挂载点 | -t 文件系统类型 :指定文件系统类型;-o 选项 :指定挂载选项(如只读、用户、绑定等) | 当不输入任何选项和参数时会显示当前已挂载的设备 |
umount [选项] 挂载点或设备 | 卸载已挂载的设备 | -f :强制卸载;-l :延迟卸载 |
fdisk-补充说明
fdisk命令是交互式的,可以用以下交互式命令对磁盘分区表进行操作:
按键 | 功能 |
---|---|
m | 显示菜单和帮助信息 |
a | 切换可启动标志 |
p | 打印分区信息 |
l | 显示分区类型 |
d | 删除分区 |
n | 新建分区 |
t | 设置分区号 |
q | 退出不保存 |
w | 保存修改 |
9. 归档和压缩命令
命令 | 描述 | 常用参数 | 备注 |
---|---|---|---|
tar [选项] [归档文件名] [文件或目录路径] | 创建、提取和管理归档文件 | -c :创建新的归档文件;-x :提取归档文件;-t :列出归档文件内容;-r :向现有归档文件中添加文件(保留原始文件);-v :显示详细信息;-f :指定归档文件名;-z :使用 gzip 压缩或解压缩;-j :使用 bzip2 压缩或解压缩;-J :使用 xz 压缩或解压缩;-C :指定提取到的目录 | (见tar-常用操作 ) |
zip [选项] [压缩文件名] [文件或目录路径] | 创建和管理zip压缩文件 | -r :递归压缩目录;-d :从现有压缩文件中删除指定文件(保留原始文件);-u :向现有压缩文件中添加文件(保留原始文件);-m :压缩后删除原文件 | 使用示例:zip -r archive.zip file.txt dir ;zip -u archive.zip newfile.txt ;zip -d archive.zip file.txt |
unzip [选项] [压缩文件] | 查看和解压缩zip压缩文件 | -d :指定解压到的目录;-l :列出压缩文件内容;-o :覆盖已存在的文件 | 使用示例:unzip archive.zip ;unzip -o archive.zip -d /target/directory ;unzip archive.zip -x file.txt |
tar-常用操作
创建一个名为 archive.tar
的归档文件,包含 dir1
和 dir2
目录:
tar -cvf archive.tar dir1 dir2`
提取归档文件 archive.tar
的内容
tar -xvf archive.tar
列出归档文件 archive.tar
的内容:
tar -tvf archive.tar
追加newfile
文件到归档文件archive.tar
中:
tar -rvf archive.tar newfile
在指定位置创建或将归档文件提取到指定目录:
tar -cvf archive.tar dir1 dir2 -C /target/directory
tar -xvf dir1.tar -C /target/directory
结合不同的压缩程序来创建和解压缩归档文件:
# 使用gzip
tar -czvf archive.tar.gz directory
tar -xzvf archive.tar.gz
# 使用bzip2
tar -cjvf archive.tar.bz2 directory
tar -xjvf archive.tar.bz2
# 使用xz
tar -cJvf archive.tar.xz directory
tar -xJvf archive.tar.xz
三、Vi与Vim编辑器
Vi编辑器是一个模式化的文本编辑工具,用于在命令行中编辑指定的文件内容,被广泛用于Unix和类Unix系统中。Vi以其轻量级、高效和键盘友好的设计而受到系统管理员和程序员的青睐,支持基本的文本编辑功能,并可通过简易的命令行操作实现复杂的文本处理任务。Vim(Vi IMproved)是Vi的升级版本,完全兼容Vi,在此基础上还支持代码的语法高亮、正则表达式的搜索、多文件编辑、块复制等功能。
Vi/Vim编辑器有以下三种工作模式:
- 命令模式:此模式下,不能自由进行文本编辑,所有的输入都会被理解为命令,以命令驱动执行不同的功能
- 输入模式:也称为编辑模式、插入模式。此模式下,可以对文本内容进行自由编辑
- 底线命令模式:在此模式下,可以输入单个或多个字符的命令,这些命令都以
:
开头,通常用于文件的保持和退出
以下是Vi/VIm各个模式常用的快捷键:
1. 命令模式
命令 | 描述 |
---|---|
i | 在当前光标位置进入输入模式 |
I | 在当前行的开头进入输入模式 |
a | 在当前光标位置之后进入输入模式 |
A | 在当前行的结尾进入输入模式 |
o | 在当前光标的下一行进入输入模式 |
O | 在当前光标的上一行进入输入模式 |
Up/Down/Left/Right或 k/j/h/l` | 向上/下/左/右移动光标 |
0 | 移动光标到当前行开头 |
$ | 移动光标到当前行结尾 |
pageup | 向上翻页 |
pagedown | 向下翻页 |
/ | 进入搜索模式 |
n | 向下继续搜索 |
N | 向上继续搜索 |
dd | 删除光标所在行内容 |
ndd | 删除当前光标所在行和下面n行 |
yy | 复制当前行 |
nyy | 复制当前光标所在行和下面n行 |
p | 粘贴复制的内容 |
u | 撤销修改 |
Ctrl + R | 反向撤销修改 |
gg | 跳到首行 |
G | 跳到行尾 |
dG | 从当前行开始,向下全部删除 |
dgg | 从当前行开始,向上全部删除 |
d$ | 从光标位置开始,删除到本行结尾 |
d0 | 从光标位置开始,删除到本行开头 |
2. 输入模式
命令 | 描述 |
---|---|
esc | 回到命令模式 |
Up/Down/Left/Right或 k/j/h/l` | 向上/下/左/右移动光标 |
3. 底线命令模式
命令 | 描述 |
---|---|
Enter | 执行命令 |
:wq | 保存并退出 |
:q | 仅退出 |
:q! | 强制退出 |
:w | 仅保存 |
:set nu | 显示行号 |
:set nonu | 不显示行号 |
:set paste | 进入粘贴模式(禁用自动缩进) |
:set nopaste | 退出粘贴模式(重新启用自动缩进) |
四、程序安装和包管理
在Linux系统中,软件包管理器是用户用来安装、更新、配置和卸载应用程序及其依赖项的重要工具。不同的Linux发行版提供了各自的软件包管理器,这些工具有不同的命令(需要在root权限下执行)。
以下是一些常用软件包管理器及其对应的常用Linux发行版:
软件包管理器 | 软件包后缀名 | 发行版 | 支持自动处理包依赖 | 备注 |
---|---|---|---|---|
rpm | .rpm | Red Hat,… | false | 适用于Red Hat及其所有衍生发行版 |
yum | .rpm | Red Hat,Fedora,CentOS | true | 基于rpm |
dnf | .rpm | Red Hat 8,Fedora 18,CentOS 8及以上版本 | true | 基于rpm |
dpkg | .deb | Debian,… | false | 适用于Debian及其所有衍生发行版 |
apt | .deb | Debian,Ubuntu,Deepin,Mint,Kali,Pop!_OS | true | 基于dpkg |
zypper/yast | .rpm | SUSE, openSUSE | true | 适用于SUSE及其所有衍生发行版 |
pacman | .pkg/.tar/.xz | Arch,Manjaro,EndeavourOS,Chakra | true | 适用于Arch及其所有衍生发行版 |
下面以yum和apt为例,介绍它们各自的语法及常用命令:
1. yum语法
yum [选项] 操作 包名
- 选项:
-y
:安装过程中的提示全部选择"yes"-q
:不显示安装的过程
- 操作:
check-update
:检查可用更新update
:升级所有已安装的软件包install
:安装新软件包remove
:卸载软件包clean
:清理缓存list
:列出软件包search
:搜索包含关键字的软件包
2. apt语法
yum [选项] 操作 包名
- 选项:
-y
:安装过程中的提示全部选择"yes"-q
:不显示安装的过程
- 操作:
update
:更新包列表upgrade
:升级所有已安装的软件包install
:安装新软件包remove
:卸载软件包autoremove
:自动卸载不再需要的软件包clean
:清理下载的包文件dist-upgrade
:进行发行版升级search
:搜索包含关键字的软件包
五、常用终端快捷键
下面列出了在Linux的终端中常用的快捷键(大部分适配Mac OS)
1. 光标控制
快捷键 | 描述 | 备注 |
---|---|---|
Ctrl+A | 光标迅速回到行首 | |
Ctrl+E | 光标迅速回到行尾 | |
Ctrl+F | 光标向右移动一个字符 | |
Ctrl+B | 光标向左移动一个字符 | |
Alt+F 或 Ctrl+Right | 光标前进一个单词 | |
Alt+B 或 Ctrl+Left | 光标后退一个单词 |
2. 命令历史
快捷键 | 描述 | 备注 |
---|---|---|
Tab | 命令或路径等的补全键 | 快速自动补全命令或文件名,连续按两次可以列出所有可能的补全 |
Ctrl+P | 上一条命令 | |
Ctrl+N | 下一条命令 | |
Ctrl+R | 搜索命令行历史记录 | 按回车可以立即执行;按Left/Right可以修改匹配到的命令 |
Ctrl+G | 退出Ctrl+R的搜索模式 | |
!! | 执行上一条命令 | |
!num | 执行历史命令列表的第num条命令 | |
!$ | 代表上一条命令的最后一个参数 | 快速插入历史命令的最后一个参数 |
!pw | 执行以特定字符开头的命令 | 使用历史命令的前缀进行搜索 |
!pw:p | 仅打印以特定字符开头的命令 | 不执行命令,只打印匹配的历史命令 |
3. 命令编辑
快捷键 | 描述 | 备注 |
---|---|---|
Ctrl+K | 剪切光标处到行尾的所有字符 | |
Ctrl+U | 剪切光标处到行首的所有字符 | |
Ctrl+W | 剪切光标前的一个字符 | |
Ctrl+Y | 粘贴使用Ctrl+K、Ctrl+U、Ctrl+W删除的字符 | 撤销剪切操作 |
Ctrl+H | 删除光标前的一个字符(退格) | 等同于Backspace键 |
4. 终端控制
快捷键 | 描述 | 备注 |
---|---|---|
Ctrl+C | 中断终端正在执行的任务 | |
Ctrl+L | 清除终端内容并开启新一行 | |
Ctrl+D | 在当前终端中登出当前账户或退出某些程序的特定页面 | 不能用于退出Vi/Vim |
Ctrl+S | 锁定终端 | |
Ctrl+Q | 解锁终端 | |
Ctrl+Z | 暂停终端任务,可使用"fg"恢复 | 将任务放到后台并暂停 |
5. 其他
快捷键 | 描述 | 备注 |
---|---|---|
Ctrl+Insert | 复制命令行内容(仅限非Mac系统) | 复制当前行到剪贴板 |
Shift+Insert | 粘贴命令行内容(仅限非Mac系统) | 从剪贴板粘贴内容到终端 |
Esc+. | 获取上一条命令的最后部分 | 快速插入历史命令的最后部分 |
Esc+B | 移动到当前单词的开头 | 快速编辑当前单词 |
Esc+F | 移动到当前单词的结尾 | 快速编辑当前单词 |
六、常用配置与操作
1. 修改主机名称
可通过以下步骤修改系统的主机名称:
- 使用
hostname
命令查看当前主机名 - 使用
vim /etc/hostname
来使用Vim编辑器修改主机名配置文件的内容,将其中的当前主机名替换为新的主机名并保存 - 使用
vim /etc/hosts
来使用Vim编辑器修改主机名配置文件的内容,将其中的当前主机名替换为新的主机名并保存 - 使用
systemctl restart network
命令或重启系统使修改生效
2. 修改时区
有时Linux系统的默认时区可能不符合用户需求,可以通过以下步骤来手动修改系统时区:
- 使用
data -R
命令查看当前时区 - 使用
tzselect
命令查看目标时区的对应的TZ
环境变量的写法。TZ
的值通常是一个代表特定地理区域的字符串,如Asia/Shanghai
,而tzselect
命令可以通过依次询问大洲-国家-城市,最后告诉你对应时区的TZ
值的写法 - 修改时区
- 临时修改:执行命令
export TZ='查询到的TZ值'
,如export TZ='Asia/Shanghai'
来临时修改环境变量TZ
的值 - 永久修改:执行
ln -sf /usr/share/zoneinfo/查询到的TZ值 /etc/localtime
,如ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
来修改/etc/localtime
指向的软连接,进而永久修改系统的时区
- 临时修改:执行命令
Tip:许多Linux系统自带NTP或Chrony程序(没有可自行安装),可使用它们自动联网校准系统时间,具体使用方法请自行搜索。
3. 配置静态IP
Linux系统的IP通常默认情况下是会根据当前网络自动变化的,但在一些特定的场景下(如远程访问、充当服务器)要求设备具有静态IP,以便远程设备或用户能够准确找到并访问到你的设备。配置静态IP通常有以下步骤:
- 使用
ifconfig
命令查看当前IP相关信息 - 使用
vim /etc/sysconfig/network-scripts/ifcfg-ens33
命令来使用Vim编辑器修改网卡配置文件的内容 - 按要求修改网卡配置文件的如下配置项并保存:
BOOTPROTO="static" # 修改:dhcp修改为static,将IP设为静态
ONBOOT="yes" # 修改:修改为yes, 配置网卡开机自启动
IPADDR="10.193.12.23" # 新增:想要配置的静态IP地址
NETMASK="255.255.255.0" # 新增:静态IP地址的子网掩码
GATEWAY="10.193.12.254" # 新增:静态IP地址的网关
DNS1="8.8.8.8" # 新增:配置DNS服务器