LInux基础 1:Linux 系统重要命令拾遗
声明
笔记内容参考了B站UP主 泷羽sec 的学习视频,如有侵权,将立即删除。
本笔记旨在促进网络安全学习,任何不当使用均与作者无关,请勿逾越法律红线,否则后果自负。
希望这些内容能对各位师傅有所帮助,欢迎您的点赞和评论!
在日常的Linux使用中,有一些命令是我们经常用到的基础命令,掌握它们对于系统管理与日常操作至关重要。本文将选取一些常用且容易出错的命令,详细讲解它们的使用方法、常用参数以及应用场景,帮助你更好地理解和使用这些命令。
文件操作
mv — 移动或重命名文件和目录
mv
命令用于移动文件或目录,或者重命名文件和目录。其基本语法为:
mv [选项] 源文件/目录 目标文件/目录
使用说明
mv
命令可以移动单个文件、多个文件或目录。- 如果目标是已存在的目录,源文件或目录会被移动到该目录中。
- 如果目标是已存在的文件,源文件会被重命名为目标文件的名称。
mv
命令具有递归特性,可以用于移动目录及其内容。
示例
mv file1.txt /home/user/documents/ # 将 file1.txt 文件移动到目标目录
mv file1.txt newname.txt # 重命名 file1.txt 为 newname.txt
mv folder1 /home/user/documents/ # 将 folder1 目录移动到目标目录
mv folder1 newfolder # 将 folder1 目录重命名为 newfolder
rm — 删除文件或目录
rm
命令用于删除文件或目录。删除操作是不可逆的,需谨慎使用。
常用选项
-r
:递归删除,适用于删除目录及其内部所有文件。-f
:强制删除,不会提示确认。-i
:交互模式,每次删除前都会提示确认。
示例
rm file1.txt # 删除单个文件
rm -r dir1/ # 删除目录及其内容
rm -f file2.txt # 强制删除文件
rm -rf /home/user/* # 强制删除目录下所有内容
cp — 拷贝文件
cp
命令用于拷贝文件或目录。
常用选项
-r
:递归拷贝目录及其内容。-i
:拷贝时询问确认,防止覆盖已有文件。-u
:仅在源文件较新时才拷贝。
示例
cp file.txt /home/user/documents/ # 拷贝file.txt文件到指定目录
cp -r dir1/ /home/user/backup/ # 递归拷贝目录及其内容
cp -u file.txt /home/user/backup/ # 仅在源文件较新时才拷贝
sort — 排序文件内容
sort
命令用于排序文件内容或标准输入的内容。默认按字典顺序排序。
常用选项
-n
:按数字大小排序。-r
:反向排序。-k
:按指定的列进行排序。-u
:去重,只输出唯一的行。
示例
sort file.txt # 按字典顺序排序文件内容
sort -n file.txt # 按数字顺序排序文件内容
sort -r file.txt # 反向排序文件内容
sort -u file.txt # 排序并去重
uniq — 去重
uniq
命令用于去除文件中的重复行,常与 sort
一起使用。
常用选项
-c
:统计每行出现的次数。-u
:仅显示唯一的行。-d
:仅显示重复的行。
示例
sort file.txt | uniq # 去除重复行
sort file.txt | uniq -c # 显示每行出现的次数
uniq -u file.txt # 显示唯一行
wc — 统计文件内容
wc
命令用于统计文件的字数、行数和字符数。
常用选项
-l
:统计行数。-w
:统计单词数。-c
:统计字符数。-m
:统计字符数(不区分字节和字符,适用于多字节字符集)。
示例
wc -l file.txt # 统计文件行数
wc -w file.txt # 统计文件单词数
wc -c file.txt # 统计文件字符数
wc -m file.txt # 统计文件字符数(包括多字节字符集)
软连接和硬链接
软链接(Symbolic Link)
软链接,也称为符号链接或快捷方式,类似于 Windows 系统中的快捷方式。它是一个独立的文件,其中包含指向目标文件或目录路径的引用。软链接本质上是一个文本文件,指向实际的文件或目录。
创建软链接
使用 ln -s
命令来创建软链接:
ln -s /path/to/target /path/to/link
-s
表示创建符号链接。/path/to/target
是目标文件或目录的路径。/path/to/link
是软链接创建的路径。
软链接的特点
- 跨文件系统:软链接可以在不同的文件系统之间创建链接。
- 链接文件和目录:软链接不仅可以指向文件,还可以指向目录。
- 链接失效:当目标文件被删除或移动时,软链接会变为“死链接”,无法再访问目标内容。
软链接使用场景
- 灵活的文件组织:可以用于为常用的文件或程序创建易于记忆的别名或快捷方式。
- 软件环境管理:例如在不同版本的软件之间切换,可以使用软链接指向当前版本。
硬链接(Hard Link)
硬链接是指向文件的多个入口。硬链接通过指向同一个文件的 inode,使得文件有多个路径名。所有硬链接指向相同的数据块,文件内容不会被删除,直到所有硬链接都被删除。
创建硬链接
硬链接使用 ln
命令创建(不带 -s
选项):
ln /path/to/target /path/to/link
/path/to/target
是目标文件的路径。/path/to/link
是硬链接创建的路径。
硬链接的特点
- 不能跨文件系统:硬链接只能在同一文件系统中创建,不能跨文件系统。
- 指向相同 inode:硬链接指向文件的 inode,每个硬链接都会分配一个新的文件名,但它们指向相同的物理数据块。
- 文件内容共享:修改任一硬链接的文件内容,所有硬链接都会受到影响。
- 文件删除:删除一个硬链接并不会删除文件,只有当所有硬链接都被删除时,文件才会被实际删除。
硬链接使用场景
- 确保文件不丢失:硬链接适用于需要确保文件始终存在的场景,如文件备份和保护重要数据。
- 多路径访问同一文件:如果多个程序需要访问同一文件,硬链接可以提供多个入口。
软链接与硬链接的主要区别
特性 | 软链接(Symbolic Link) | 硬链接(Hard Link) |
---|---|---|
创建命令 | ln -s /path/to/target /path/to/link | ln /path/to/target /path/to/link |
跨文件系统 | 可以跨文件系统 | 不能跨文件系统 |
链接对象 | 可以链接文件和目录 | 只能链接文件,通常不能链接目录 |
文件的物理存储 | 软链接有独立的 inode,指向目标文件路径 | 硬链接指向相同的 inode,多个路径指向相同的文件内容 |
目标文件删除后 | 软链接会变成无效链接(死链接) | 硬链接不会受目标文件删除的影响 |
文件内容修改 | 修改软链接指向的文件会影响所有软链接 | 修改任何一个硬链接都会影响其他硬链接 |
删除链接后的效果 | 删除软链接不会影响目标文件,目标文件被删除后,软链接失效 | 删除一个硬链接不影响文件,文件只有删除所有硬链接后才会被删除 |
使用案例
- 移动文件和创建软链接
假设我们需要将 newfile
移动到 newdir2
目录,并在原位置创建一个指向新位置的软链接:
mv newfile newdir2
ln -s newdir2/newfile newfile
- 拷贝文件和创建硬链接
假设我们需要将 file.txt
拷贝到 newdir.txt
,并在原文件位置创建一个硬链接:
cp file.txt newdir.txt
ln file.txt hardlink.txt
- 创建软链接和硬链接
假设我们有一个文件 original.txt
,可以分别创建软链接和硬链接:
-
创建软链接:
ln -s original.txt symlink.txt
-
创建硬链接:
ln ~/offseec123.txt hardlink.txt
find — 查找文件
find
命令是 Linux 系统中功能强大的文件查找工具,可以根据文件名、文件类型、修改时间、文件大小、文件权限等多种条件查找文件。
基本语法
find [路径] [选项] [查找条件]
常用选项
-name
:根据文件名查找,支持通配符,-iname
会忽略大小写进行匹配。-type
:根据文件类型查找(例如:f
查找文件,d
查找目录)。-size
:根据文件大小查找,单位可以是b
(字节),k
(千字节),M
(兆字节)等。-mtime
:根据文件的最后修改时间查找,单位是天(+n
查找大于n
天前修改的文件,-n
查找小于n
天前修改的文件,n
查找恰好在n
天前修改的文件)。-mmin
:根据文件的最后修改时间(分钟)查找。-atime
:根据文件的最后访问时间查找。-amin
:根据文件的最后访问时间(分钟)查找。-ctime
:根据文件的状态变化时间(如权限变化)查找。-cmin
:根据文件的状态变化时间(分钟)查找。-user
:根据文件的所有者查找。-perm
:根据文件权限查找,支持使用+
、-
和=
来指定权限匹配方式。-exec
:对找到的每个文件执行指定的命令。
查找文件权限设置
查找 SUID 文件
SUID(Set User ID)是文件权限中的一种特殊标志,表示该文件在执行时将使用文件所有者的权限,而不是执行者的权限。SUID 文件常用于需要提升权限的程序,比如 passwd
命令。
-
查找所有设置了 SUID 标志的文件:
find / -type f -perm /4000
/4000
:表示查找设置了 SUID 权限的文件。/4000
是一个八进制权限表示,表示文件的所有者具有 SUID 标志。
查找 SGID 文件
SGID(Set Group ID)是另一种特殊权限标志,表示执行该文件时将使用文件所属组的权限。
-
查找所有设置了 SGID 标志的文件:
find / -type f -perm /2000
/2000
:表示查找设置了 SGID 权限的文件。
查找 Sticky 位文件
Sticky 位是另一种特殊权限,主要用于目录,表示只有文件的所有者才能删除该目录中的文件,而其他用户只能修改自己的文件。
-
查找所有设置了 Sticky 位的文件:
find / -type d -perm /1000
/1000
:表示查找设置了 Sticky 位的目录。
查找特定权限
find
命令允许使用 +
、-
和 =
来更灵活地匹配文件的权限。
+u+s
:查找所有具有 SUID 设置的文件。这里的+
表示 “至少包含”。-u+s
:查找所有不具有 SUID 设置的文件。-
表示 “不包含”。=u+s
:查找所有正好具有 SUID 设置的文件。=
表示 “完全匹配”。
常见查找示例
-
按文件名查找
查找所有以.txt
结尾的文件(大小写敏感):find / -name "*.txt"
-
按文件类型查找
查找所有普通文件:find /home/user -type f
查找所有目录:
find /home/user -type d
-
按文件大小查找
查找大于 1000KB 的文件:find / -size +1000k
-
按修改时间查找
查找当前目录下 7 天内修改过的文件:find . -type f -mtime -7
-
按文件权限查找
查找权限为 777 的文件(所有者、组用户和其他用户均具有读、写和执行权限):find . -perm 777
-
按文件所有者查找
查找所有属于root
用户的文件:find / -user root
-
按文件权限和类型查找
查找所有.sh
文件,且这些文件具有其他用户可写权限,且不显示报错信息:find / -user root -type f -perm -o=w -name "*.sh" 2>/dev/null
-user root
:查找文件所有者为root
的文件。-type f
:仅查找普通文件。-perm -o=w
:查找具有其他用户可写权限的文件(-o=w
表示“其他用户具有写权限”)。2>/dev/null
:将错误输出重定向到/dev/null
,屏蔽权限不足等错误信息。
-
按访问时间查找
查找当前目录下 1 天内访问过的文件:find . -atime -1 -type f
-
执行删除命令
查找所有.svn
目录并删除:find . -name "*.svn" -exec rm -rf {} \;
-name "*.svn"
:查找所有.svn
目录。-exec rm -rf {} \;
:对每个匹配的文件或目录执行删除命令rm -rf
。{}
是一个占位符,代表找到的文件或目录,\;
用于结束命令。
-
按修改时间排序输出
查找并按修改时间排序输出文件:find ~ -mtime 2 -ls | sort -k9 -k10 | more
-mtime 2
:查找 2 天前修改的文件。-ls
:显示文件详细信息(类似ls -l
命令)。sort -k9 -k10
:按第 9 列(文件名)和第 10 列(修改时间)进行排序。more
:分页显示结果,方便查看。
磁盘与内存管理
df — 查看磁盘空间
常用命令
df
命令用于显示文件系统的磁盘空间使用情况。
df -h # 以人类可读的格式显示磁盘空间
df -T # 显示文件系统类型
-h
:以易于理解的格式显示磁盘空间,例如使用 KB、MB、GB 等单位。-T
:显示文件系统的类型,如 ext4、xfs 等。
du — 查看目录空间使用
du
命令用于显示目录及其子目录的磁盘空间占用情况。
常用命令
du -h /path/to/dir # 查看目录的磁盘使用情况
du -sh /path/to/dir # 查看目录的总磁盘使用情况
-h
:以人类可读的格式显示空间使用情况。-s
:显示指定目录的总磁盘使用情况,而不是递归显示每个子目录。
free — 查看内存使用情况
free
命令用于显示系统的内存和交换空间使用情况。
常用命令
free -h # 以人类可读的格式显示内存使用情况
-h
:以易于理解的格式显示内存使用情况,例如使用 MB、GB 等单位。
fdisk — 磁盘分区工具
fdisk
命令用于查看和管理磁盘的分区情况。
常用命令
fdisk -l # 列出所有磁盘及其分区信息
-l
:列出系统中所有磁盘及其分区信息。
您的内容已经相当清晰并且结构良好,下面是基于您给出的格式和要求的优化建议。
进程与网络命令
ps — 查看进程
ps
命令用于查看系统中当前的进程信息。它可以显示进程的详细信息,帮助管理员监控系统的状态。
常用命令
ps aux # 显示所有进程的详细信息
ps -ef # 显示所有进程及其详细信息
aux
:显示所有用户的进程,包括其他用户的进程。-ef
:显示所有进程,并以标准格式列出进程的详细信息。
top — 实时查看进程
top
命令可以实时显示系统资源的占用情况,包括 CPU、内存、进程信息等。适用于监控系统的健康状况和资源消耗。
命令说明
top
默认每 3 秒刷新一次,显示所有进程和系统资源的使用情况。- 可以按下
q
键退出实时监控。
常用操作
- 按下
P
:按 CPU 占用率排序进程。 - 按下
M
:按内存占用排序进程。 - 按下
k
:通过 PID 结束进程。
netstat — 查看网络状态
netstat
命令用于查看当前的网络连接、路由表、接口统计等信息,帮助管理员分析网络状态。
常用命令
netstat -lntu # 查看所有监听的端口
netstat -an # 查看所有网络连接
-l
:仅显示监听状态的端口。-n
:以数字形式显示地址和端口号(不解析为域名)。-t
:仅显示 TCP 连接。-u
:仅显示 UDP 连接。
ss — 查看套接字信息
ss
命令是 netstat
的替代品,它提供了比 netstat
更快、更详细的网络连接信息。ss
命令通常比 netstat
更高效,尤其是在高负载系统中。
常用命令
ss -tuln # 查看所有监听的端口
ss -tulnp # 查看所有监听端口并显示进程信息
ss -an # 查看所有网络连接
参数说明
-t
:显示 TCP 连接。-u
:显示 UDP 连接。-l
:显示监听的端口。-n
:以数字形式显示地址和端口号,不解析域名。-p
:显示每个连接所属的进程 ID 和进程名称。-a
:显示所有连接(包括监听和非监听的连接)。-o
:显示每个连接的计时器状态,适合查看延迟。-r
:显示路由信息。-s
:汇总统计所有协议的连接信息。
文件传输命令
scp — 安全复制文件
scp
命令用于通过 SSH 协议在不同主机之间安全地复制文件。
基本语法:
scp [选项] 源文件 目标位置
-r
:递归复制目录。-P
:指定端口。
示例:
scp file.txt user@remote:/path/to/destination # 从本地复制到远程主机
scp -r dir/ user@remote:/path/to/destination # 复制目录到远程主机
scp user@remote:/path/to/file . # 从远程主机复制文件到本地
openssl — 安全套接字层工具
openssl
是一个用于处理各种安全协议(如 SSL/TLS)的命令行工具,可以生成密钥、证书等。
常见命令:
-
生成私钥:
openssl genpkey -algorithm RSA -out private.key
-
生成公钥:
openssl rsa -pubout -in private.key -out public.key
-
生成证书签名请求(CSR):
openssl req -new -key private.key -out request.csr
-
证书转换(如从 PEM 转为 DER 格式):
openssl x509 -outform DER -in certificate.pem -out certificate.der