本文思维导图如下:
1.简单系统命令
# 查看ip地址
ip a
ip addr
# ping网络(测试网络连通)
ping 目标机器的ip
# 查看系统时间
date
# 注销
logout
# 关机
shutdown now
# 重启
reboot
# 清屏
clear
2.Linux文件系统
- 核心
1.Linux一切皆文件
2.只有一个顶级目录,不像windows分C盘、D盘、E盘
- 目录结构
- 文件含义
Linux | 含义 | windows |
---|---|---|
/bin | 所有用户可用的基本命令存放的位置 | windows没有固定的命令存放目录 |
/sbin | 需要管理员权限才能使用的命令 | |
/boot | linux系统启动的时候需要加载和使用的文件 | |
/dev | 外设连接linux后,对应的文件存放的位置 | 类似Windows中的U盘,光盘的符号文件。 |
/etc | 存放系统或者安装的程序的配置文件,注册服务等 | 类似windows中的注册表, |
/home | 家目录,linux中每新建一个用户,会自动在home中为该用户分配一个文件夹 | 类似windows中的”我的文档”,每个用户有自己的目录。 |
/root | root账户的家目录,仅供root账户使用 | 类似windows中的Administrator账户的”我的文档” |
/lib | linux的命令和系统启动,需要使用一些公共的依赖,放在lib中,类似我们开发的代码执行需要引入的jdk的jar | |
/usr | 很多系统软件的默认安装路径 | 类似windows中的C盘下的Program Files目录。 |
/var | 系统和程序运行产生的日志文件和缓存文件放在这里 |
3. 文件管理命令
注意事项:命令区分大小写
1. 查看文件列表
ls [选项] [文件或目录]
- 选项: 用于控制 ls 命令的输出格式和行为。
- 文件或目录: 指定要列出内容的文件或目录,如果不指定,则默认列出当前工作目录的内容。
# 查看当前目录下的文件列表
ls
# 查看指定目录下的文件
ls /
# 查看详细信息,元数据信息(用户、组、大小、创建时间、权限信息、文件类型)
ls -l
# 列出所有文件和目录(包括隐藏文件)
ls -a
ls --all
# 参数并用
ls -la
# 递归列出目录及其子目录中的所有文件和目录
ls -R
ls --recursive
# 按文件大小排序列出文件和目录
ls -lS
# 按修改时间排序列出文件和目录
ls -lt
# 以人类可读的格式显示文件大小
# 结合 -l 选项,以长格式列出文件和目录,并将文件大小以更易读的方式显示,如 K(千字节)、M(兆字节)、G(吉字节)等。
ls -lh
# 只列出目录
ls -d
2. 切换目录
在 Linux 系统中,cd
命令(Change Directory)用于切换当前工作目录。它是用户在操作文件系统时频繁使用的基础命令之一。以下是关于 cd 命令的详细用法:
cd [目标文件夹]
目录路径
可以是绝对路径,也可以是相对路径。如果不指定 目录路径,默认会切换到当前用户的主目录。
# 切换到指定的绝对路径目录
cd /usr/local/bin
# 切换到指定的相对路径目录
cd documents
# 若要从 documents 子目录返回上一级目录(即 /home/user),可以使用 .. 表示上一级目录
cd ..
# 例子:切换到/etc/sysconfig/networks-scripts 目录下
cd /etc/sysconfig/networks-scripts
# 切换到用户主目录(家目录)
# 可以不带参数直接执行
cd
# 或者使用 ~ 号
# ~ 是一个特殊符号,代表当前用户的主目录,效果与 cd 不带参数相同。
cd ~
3. 查看当前命令所在的目录
在 Linux、Unix 以及类 Unix 系统中,pwd 是一个基础且常用的命令,其全称为 “print working directory”,主要功能是显示当前工作目录的绝对路径。以下为你详细介绍 pwd 命令的用法:
[root@centos7 network-scripts]# pwd
/etc/sysconfig/network-scripts
# 特殊目录符号
~ 当前用户的home目录
. 当前目录
.. 上一级目录
-L
选项(–logical)
-L
选项会优先使用环境变量 PWD 的值作为输出结果,即便该值中包含符号链接。通常情况下,pwd 默认表现与 -L 类似。
pwd -L
-P
选项(–physical)
-P
选项会解析路径中的所有符号链接,输出实际的物理路径,避免显示符号链接部分。
假设当前目录 /home/user/link_dir
是一个指向 /home/user/actual_dir
的符号链接,执行以下命令:
pwd -P
4. 新建文件夹及文件
在 Linux 系统中,mkdir 是一个用于创建目录(文件夹)的基础命令,全称为 “make directories”。下面为你详细介绍其用法:
mkdir [选项] 目录名1 [目录名2 ...]
你可以一次指定一个或多个目录名来创建多个目录,同时也可以使用选项来控制创建目录的行为。
# 在当前位置新建文件夹
mkdir 文件夹名
# 在指定目录位置,创建文件夹,并创建父文件夹
mkdir -p /a/b/文件夹名
# 在当前目录下新建文件
touch 文件名
# -v 选项会在创建目录时显示详细的信息,告知你每个目录的创建情况。
mkdir -v new_folder
# -m 选项允许你在创建目录时同时指定目录的权限模式。权限模式使用三位八进制数表示,分别对应所有者、所属组和其他用户的权限。
# 此命令会创建一个名为 secure_folder 的目录,其权限设置为:所有者具有读、写、执行权限(7),所属组具有读和执行权限(5),其他用户没有任何权限(0)。
mkdir -m 750 secure_folder
5. 删除文件
在 Linux 系统里,rm 是一个用于删除文件和目录的命令,全称为 “remove”。以下详细介绍它的用法:
rm [选项] 文件或目录名
可以指定一个或多个文件、目录名,同时借助选项来控制删除操作的行为。
# 当不添加选项时,rm 命令默认用于删除文件,删除时会提示确认。
rm 文件
# -r 选项用于递归删除目录及其包含的所有子目录和文件。单独使用时,删除过程中会提示确认。
# 该命令会删除 my_directory 目录以及其中的所有内容,删除每个子目录和文件时都会提示确认。
rm -r 文件夹
# -f 选项用于强制删除文件或目录,不会提示确认信息,即使文件或目录不存在也不会报错。
rm -rf 文件
# 可以使用通配符来批量删除符合特定模式的文件。
# 例如要删除所有以 .txt 结尾的文件
rm *.txt
6. 拷贝文件
在 Linux 系统中,cp 命令用于复制文件和目录,其全称为 “copy”。以下是关于 cp 命令的详细用法:
cp [选项] 源文件或目录 目标文件或目录
源文件或目录可以是一个或多个,目标可以是文件或目录。若指定多个源,目标必须是一个目录。
# 不使用任何选项时,cp 可将一个文件复制到指定位置。
# 如下命令将 source.txt 文件复制为 destination.txt。若 destination.txt 已存在,会覆盖该文件且不提示。
cp source.txt destination.txt
# 用于递归复制目录及其所有子目录和文件。
# 下面的命令将 source_directory 目录及其所有内容复制到 destination_directory。若 destination_directory 不存在,会创建该目录。
cp -r source_directory destination_directory
# 在覆盖已存在的目标文件之前进行交互式确认。
# 如下命令,若 destination.txt 已存在,系统会提示是否覆盖,输入 y 确认,n 取消。
cp -i source.txt destination.txt
# 强制复制,若目标文件已存在,直接覆盖而不提示。
cp -f source.txt destination.txt
# 显示复制过程的详细信息,告知哪些文件被复制。
# 执行下面的命令会输出 'source.txt' -> 'destination.txt'
# 若使用 -r 选项复制目录,会显示每个被复制的文件和子目录信息。
cp -v source.txt destination.txt
# 保留源文件的属性,如文件的权限、所有者、时间戳等。
# 如下执行下面的命令复制后的 destination.txt 会保留 source.txt 的权限、所有者和修改时间等属性。
cp -p source.txt destination.txt
# 仅在源文件比目标文件新,或目标文件不存在时才进行复制。
# 如下命令,若 source.txt 的修改时间比 destination.txt 新,或 destination.txt 不存在,才会执行复制操作。
cp -u source.txt destination.txt
# 复制多个文件到目录,可以同时指定多个源文件,将它们复制到一个目标目录中。
# 如下命令将 file1.txt 和 file2.txt 复制到 target_directory 目录下。
cp file1.txt file2.txt target_directory
7. 移动文件或修改文件名
在 Linux 系统中,mv 命令(英文全称为 “move”)主要用于移动文件或目录,同时也能对文件和目录进行重命名操作。以下是 mv 命令的详细用法:
mv [选项] 源文件或目录 目标文件或目录
源文件或目录可以是一个或多个,目标可以是文件或目录。若指定多个源,目标必须是一个已存在的目录。
# 不使用任何选项时,mv 可以将一个文件从一个位置移动到另一个位置。
# 下面的命令会将 source.txt 文件移动到 /new/location/ 目录下。
mv source.txt /new/location/
# 通过将源文件指定为当前文件名,目标指定为新文件名,可实现文件重命名。
# 下面的命令将 old_name.txt 文件重命名为 new_name.txt。
mv old_name.txt new_name.txt
# 在覆盖已存在的目标文件之前进行交互式确认。
# 执行下面的命令,若 destination.txt 已存在,系统会提示是否覆盖,输入 y 确认,n 取消。
mv -i source.txt destination.txt
# 强制移动,若目标文件已存在,直接覆盖而不提示。
mv -f source.txt destination.txt
# 显示移动过程的详细信息,告知哪些文件被移动或重命名。
mv -v source.txt destination.txt
# 可以同时指定多个源文件或目录,将它们移动到一个目标目录中。
# 下面的命令会将 file1.txt、file2.txt、dir1 和 dir2 移动到 /target/directory/ 目录下。
mv file1.txt file2.txt dir1 dir2 /target/directory/
8. 获取文件的md5指纹(数字签名)
在 Linux 系统中,md5sum
命令用于计算和校验文件的 MD5 哈希值。MD5 哈希值是一个 128 位的数字,通常以 32 位十六进制数表示,可用于验证文件在传输或存储过程中是否发生了改变。
md5sum [选项] [文件1] [文件2] ...
# 计算单个文件的 MD5 哈希值
# 执行下面的命令会输出 "098f6bcd4621d373cade4e832627b4f example.txt"
# 输出结果包含两部分,第一部分是文件的 MD5 哈希值,第二部分是文件名。
md5sum example.txt
# 计算多个文件的 MD5 哈希值
md5sum file1.txt file2.txt file3.txt
# 如果不指定文件名,md5sum 会从标准输入读取数据并计算其 MD5 哈希值。可以通过管道将其他命令的输出传递给 md5sum。
echo "Hello, World!" | md5sum
# 可以将计算得到的 MD5 哈希值保存到一个文件中,以便后续验证文件的完整性。
# 下面的命令会将 file1.txt 和 file2.txt 的 MD5 哈希值写入到 checksums.md5 文件中。
md5sum file1.txt file2.txt > checksums.md5
# 使用 -c 选项可以根据之前保存的 MD5 哈希值文件来验证文件的完整性。
# 执行下面的命令,如果文件的 MD5 哈希值与保存的一致,会显示 OK;如果不一致,会显示 FAILED。
md5sum -c checksums.md5
4. 文本内容查看命令
cat命令
在 Linux 系统中,cat (英文全称为 “concatenate”,意为连接、串联)是一个常用的命令,主要用于查看文件内容、合并文件以及将内容输出到标准输出或其他文件中。以下是 cat 命令的详细用法:
cat [选项] [文件1] [文件2] ...
常用选项及示例
# 查看单个文件的内容
# 下面的命令会将 example.txt 文件的内容逐行输出到终端。
cat example.txt
# 可以指定多个文件名,cat 会按顺序将这些文件的内容连接并输出。
# 下面命令会先输出 file1.txt 的内容,接着输出 file2.txt 的内容。
cat file1.txt file2.txt
# 结合重定向符号 >,可以创建一个新文件并将输入的内容写入其中。
# 执行下面命令后,你可以在终端输入内容,输入完成后按 Ctrl + D 组合键结束输入,输入的内容会被保存到 new_file.txt 文件中。
cat > new_file.txt
# 追加内容到已有文件
# 执行下面命令,输入内容后按 Ctrl + D 结束,内容会被添加到 existing_file.txt 文件的末尾。
cat >> existing_file.txt
# -n 选项会为输出的每一行添加行号。
# 执行下面命令后,输出的 example.txt 文件内容的每一行前面都会显示对应的行号。
cat -n example.txt
# 对非空行进行编号
# 执行下面命令后,空行不会被编号,非空行将依次编号输出。
cat -b example.txt
# -s 选项用于压缩连续的空行,将多个连续的空行压缩成一个空行输出。
# 如果 file_with_empty_lines.txt 文件中有连续的空行,使用该命令后,连续空行将被合并为一个空行显示。
cat -s file_with_empty_lines.txt
# 通过指定多个文件,cat 可以将它们的内容合并到一个新文件中。
# 执行下面命令会将 file1.txt 和 file2.txt 的内容合并,并保存到 merged_file.txt 文件中。
cat file1.txt file2.txt > merged_file.txt
less命令
在 Linux 系统中,less 是一个强大的文件查看器,它允许你以分页的方式查看文件内容,比 cat 命令更适合查看大型文件。以下是 less 命令的详细用法:
less [选项] [文件]
你可以指定要查看的文件路径,也可以结合一些选项来满足特定的查看需求。
常用选项及示例
# 直接使用 less 命令加上文件名即可开始查看文件内容。
# 执行该命令后,less 会打开 example.txt 文件,将文件内容显示在终端,并允许你逐页浏览。
less example.txt
# -N 选项会在每行内容前显示行号,方便定位具体内容。
less -N example.txt
# -i 选项使搜索时忽略大小写。当你在文件中进行搜索操作时,无论搜索词是大写还是小写,都能找到匹配的内容。
# 执行下面命令,进入文件查看界面后,按下 / 键,输入搜索词,即可进行忽略大小写的搜索。
less -i example.txt
# 使用 -m 选项会在屏幕底部显示当前的阅读进度百分比。
# 执行下面命令后,在查看文件过程中,屏幕底部会实时显示你当前阅读到的文件进度。
less -m example.txt
# -S 选项用于将过长的行截断显示,避免一行内容跨越多行显示,方便查看表格等格式的文件。
# 如果文件中有很长的行,只会显示当前屏幕宽度内的内容,你可以通过左右箭头键查看该行的其他部分。
less -S example.txt
# less 不仅可以查看文件,还能从标准输入读取内容。例如,结合 ls 命令查看文件列表:
# 执行命令会将 ls -l 的输出结果通过管道传递给 less,让你可以分页查看文件列表信息。
ls -l | less
less
查看界面按键操作
- 上下移动
向上移动一行:按下 k 键或使用上箭头键。
向下移动一行:按下 j 键或使用下箭头键。
- 翻页
向上翻一页:按下 Page Up 键或 Ctrl + B。
向下翻一页:按下 Page Down 键或 Ctrl + F。
- 搜索
向前搜索:按下 / 键,然后输入要搜索的关键词,按 Enter 开始搜索。按 n 键查找下一个匹配项,按 N 键查找上一个匹配项。
向后搜索:按下 ? 键,输入关键词后按 Enter 开始搜索,同样用 n 和 N 键切换匹配项。
- 退出
按下 q 键即可退出 less 查看界面。
tail 命令
在 Linux 系统中,tail 命令用于查看文件的末尾部分内容,这在查看日志文件等场景中非常有用,因为新的信息通常会追加到文件末尾。以下是 tail 命令的详细用法:
tail [选项] [文件]
你可以指定要查看的文件,同时使用不同的选项来控制输出内容。
常用选项及示例
# 如果不使用任何选项,tail 命令默认显示文件的最后 10 行内容。
tail example.txt
# 使用 -n 选项可以指定要显示的行数。
tail -n 20 example.txt
# 上面命令会显示 example.txt 文件的最后 20 行内容。你也可以使用 + 号指定从第几行开始显示,例如:
tail -n +20 example.txt
# -f 选项用于实时跟踪文件内容的变化,当文件有新内容追加时,会自动显示在终端上。这在查看日志文件时非常实用。
# 执行下面命令后,终端会显示 access.log 文件的末尾内容,并且会持续监控该文件。如果有新的日志信息写入文件,会立即显示在终端上。若要停止跟踪,按 Ctrl + C 组合键。
tail -f access.log
# -F 选项结合了 -f 的功能,并且在文件被重命名或者删除后又重新创建时,仍然能够继续跟踪新文件。
# 执行下面命令,当 app.log 文件被重命名或删除后重新创建,tail -F 会自动切换到新的文件继续跟踪内容变化。
tail -F app.log
# 使用 -c 选项可以指定要显示的字节数。
# 执行下面命令会显示 example.txt 文件末尾的 100 个字节内容。
tail -c 100 example.txt
# 可以同时指定多个文件名,tail 会依次显示每个文件的末尾内容。
# 执行下面命令,在输出中,会先显示 file1.txt 的末尾内容,然后显示 file2.txt 的末尾内容,并且会在每个文件内容前显示文件名作为分隔。
tail file1.txt file2.txt
5. 文件查找
文件名查找
find
命令是 Linux 系统中功能强大且常用的用于在文件系统中查找文件和目录的工具。它可以根据多种条件进行搜索,如文件名、文件类型、文件大小、修改时间等。以下是 find 命令的详细用法:find [搜索路径] [表达式]
搜索路径: 指定从哪个目录开始搜索,默认是当前目录。
表达式: 由多个选项和测试条件组成,用于定义查找的规则。
# 使用 -name 选项可以按照文件名精确查找。 # 执行下面命令会在 /home/user 目录及其子目录中查找名为 example.txt 的文件。 find /home/user -name "example.txt" # 结合通配符(如 * 表示任意字符,? 表示单个任意字符)可以进行模糊查找。 # 执行下面命令会在 /var/log 目录及其子目录中查找所有扩展名为 .log 的文件。 find /var/log -name "*.log" # 使用 -iname 选项可以在匹配文件名时忽略大小写。 # 执行下面命令会在 /tmp 目录及其子目录中查找文件名以 readme 开头的文件,不区分大小写。 find /tmp -iname "readme*" # 使用 -type 选项可以根据文件类型进行查找,常见的文件类型有: # f:普通文件 # d:目录 # l:符号链接 # 执行下面命令会在 /home 目录及其子目录中查找所有以 backup 开头的目录。 find /home -type d -name "backup*" # 使用 -size 选项可以根据文件大小进行查找,常见的单位有: # c:字节 # k:千字节 # M:兆字节 # G:吉字节 # 执行下面命令会在 /data 目录及其子目录中查找所有大小超过 10 兆字节的文件。 find /data -size +10M # 使用 -mtime 选项可以根据文件的修改时间进行查找,时间单位为天: # +n:表示 n 天之前修改的文件 # -n:表示 n 天之内修改的文件 # n:表示正好 n 天前修改的文件 # 执行下面命令会在 /var/log 目录及其子目录中查找所有在过去 7 天内修改过的文件。 find /var/log -mtime -7 # 可以使用逻辑运算符(如 -and、-or、-not)组合多个条件进行查找。 # 执行下面命令会在 /home 目录及其子目录中查找所有扩展名为 .txt 或 .pdf 的普通文件。 find /home -type f -and \( -name "*.txt" -or -name "*.pdf" \) # 使用 -exec 选项可以对查找结果执行指定的命令,命令以 {} 表示当前找到的文件,以 \; 结尾。 # 执行下面命令会在 /tmp 目录及其子目录中查找所有扩展名为 .tmp 的普通文件,并将它们删除。 find /tmp -type f -name "*.tmp" -exec rm {} \;
文件内容查找
grep(Global Regular Expression Print)是 Linux 系统中一个非常强大且常用的文本搜索工具,它可以根据指定的模式(通常是正则表达式)在文件或标准输入中查找匹配的行,并将匹配的行输出。以下是 grep 命令的详细用法:
grep [选项] 模式 [文件]
- 选项: 用于控制 grep 的搜索行为,如是否忽略大小写、是否递归搜索等。
- 模式: 指定要搜索的文本模式,可以是普通字符串,也可以是正则表达式。
- 文件: 指定要在哪些文件中进行搜索,如果不指定文件,grep 会从标准输入读取数据。
常用选项及示例
# 不使用任何选项时,grep 会在指定文件中查找包含指定模式的行。
# 执行下面命令会在 example.txt 文件中查找包含字符串 "example" 的行,并将这些行输出。
grep "example" example.txt
# 使用 -i 选项可以在搜索时忽略大小写
# 执行下面命令会查找 example.txt 文件中包含 "example" 的行,无论 "example" 是大写、小写还是混合大小写。
grep -i "example" example.txt
# 使用 -r 或 -R 选项可以递归地在指定目录及其子目录下的所有文件中进行搜索。
# 执行下面命令会在 /home/user/documents 目录及其所有子目录下的文件中查找包含 "example" 的行。
grep -r "example" /home/user/documents
# 使用 -n 选项会在输出结果中显示匹配行的行号。
# 执行下面命令,输出结果会在每行前面显示该行在文件中的行号,方便定位匹配内容。
grep -n "example" example.txt
# 使用 -c 选项会只输出匹配行的数量,而不显示具体的匹配行。
# 执行下面命令会输出 example.txt 文件中包含 "example" 的行数。
grep -c "example" example.txt
# 使用 -v 选项会输出不包含指定模式的行。
# 执行下面命令会输出 example.txt 文件中不包含 "example" 的行。
grep -v "example" example.txt
# 使用 -w 选项会只匹配完整的单词,而不是单词的一部分。
# 执行下面命令只会匹配 example.txt 文件中作为完整单词出现的 "example",而不会匹配如 "examples" 等包含 "example" 的单词。
grep -w "example" example.txt
# grep 支持使用正则表达式进行更强大的模式匹配。
# 执行下面命令会在 data.txt 文件中查找符合 ###-##-#### 格式的字符串,其中 # 代表数字。
grep '[0-9]\{3\}-[0-9]\{2\}-[0-9]\{4\}' data.txt
# grep 经常与其他命令结合使用,通过管道传递数据。
# 执行下面命令会将 ls -l 的输出结果通过管道传递给 grep,然后查找包含 "example" 的行,常用于在文件列表中筛选特定文件。
ls -l | grep "example"
6. 文件链接
1. Linux文件管理
inode
inode 是文件系统为每个文件和目录分配的一个唯一编号,每个 inode 包含了文件的元数据,如文件的权限、所有者、文件大小、创建时间、修改时间、访问时间等,但不包含文件名。文件名是存储在目录的块中,它通过 inode 编号来关联实际的文件数据。
使用下命令可以查看文件 inode 数据:
# 例如,查看 /home/user/test.txt 文件的 inode 编号:
ls -i /home/user/test.txt
# 执行stat命令,在输出信息中,会有 Inode 这一项,显示的就是文件的 inode 编号。
stat /home/user/test.txt
# 可以使用 find 命令根据 inode 编号查找对应的文件。
# 例如,要查找 inode 编号为 123456 的文件:
find / -inum 123456
# 可以使用 df -i 命令查看文件系统的 inode 使用情况。
df -i
# 执行上面命令,输出结果会显示每个挂载点的总 inode 数量、已使用的 inode 数量、可用的 inode 数量以及使用百分比等信息。例如:
#Filesystem Inodes IUsed IFree IUse% Mounted on
#/dev/sda1 123456 10000 113456 9% /
#这里 /dev/sda1 文件系统总共有 123456 个 inode,已经使用了 10000 个,还剩下 113456 个可用,使用率为 9%。
注意
- inode: 是文件系统为每个文件和目录分配的一个唯一编号及对应的结构体,主要存储文件的元数据信息,如文件的权限、所有者、文件大小、创建时间、修改时间、访问时间等,还包含指向存储文件实际数据的数据块的指针。
- data block: 是文件系统中用于存储文件实际数据(如文本内容、图片像素信息等)的基本单位。文件系统会将文件的数据分割成若干个数据块进行存储。
2. 硬链接
硬链接实际上是为文件创建了一个额外的目录项,该目录项与源文件指向同一个 inode(索引节点)。在文件系统中,inode 包含了文件的元数据信息以及指向文件数据块的指针。当创建硬链接时,只是在文件系统的目录结构中增加了一个指向相同 inode 的条目,因此硬链接和源文件共享相同的数据块和 inode。
ln [选项] 源文件 目标文件
- 源文件: 是要创建链接所指向的原始文件或目录。
- 目标文件: 是创建的链接文件的名称。
创建硬链接:
ln /home/user/original.txt /home/user/hardlink.txt
此命令为 /home/user/original.txt
文件创建了一个硬链接 /home/user/hardlink.txt
。硬链接和源文件实际上指向同一个 inode
(索引节点),它们共享相同的数据块。因此,对硬链接文件所做的修改会直接反映在源文件上,反之亦然。并且,只有当所有指向该 inode 的链接(包括源文件和硬链接文件)都被删除后,文件的数据才会被真正删除。
3. 软连接
软链接是一种特殊的文件,它里面存储的是指向源文件的路径信息。当访问软链接时,文件系统会根据软链接中存储的路径去找到源文件,从而实现对源文件的访问。
ln -s 目标文件或文件夹 软连接名字
创建符号链接
ln -s /home/user/original.txt /home/user/symlink.txt
此命令为 /home/user/original.txt
文件创建了一个符号链接 /home/user/symlink.txt
。符号链接类似于 Windows 系统中的快捷方式,它保存的是源文件的路径信息。如果源文件被移动或删除,符号链接将失效,但不会影响源文件本身。
7. 系统管理
静态查看系统进程
在 Linux 系统中,ps命令用于查看当前系统中的进程状态。以下是ps命令的常见用法:
ps [选项]
常用选项及示例
# -a:显示所有终端下的进程,包括其他用户的进程。
ps -a
# -u:以用户格式显示进程信息,通常会显示用户名、启动时间等详细信息。
ps -u
# 上面命令可能输出如下:
# USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
# user1 1234 0.1 0.2 123456 7890 pts/0 Ss 10:00 0:00 /bin/bash
#user2 5678 0.0 0.1 98765 4567 pts/1 R+ 10:05 0:00 top
# -x:显示没有控制终端的进程。
ps -x
# -e:显示所有进程,等同于-A选项。
ps -e
# -f:以完整格式显示进程信息,会显示更多详细字段,如父进程 ID(PPID)等。
ps -ef
# -l:以长格式显示进程信息,显示的字段与-f有所不同,会包含进程的优先级等信息。
ps -l
# 可以使用管道符|将ps命令的输出与grep命令结合,来查找特定的进程。
ps -ef | grep firefox
# ps命令配合-f选项和--forest选项可以显示进程树,直观地展示进程之间的父子关系。
ps -ef --forest
# 上述命令输出可能如下:
# UID PID PPID C STIME TTY TIME CMD
# root 1 0 0 10:00? 00:00:01 /sbin/init
# |-root 2 0 0 10:00? 00:00:00 \_ [kthreadd]
# |-root 3 2 0 10:00? 00:00:00 \_ [ksoftirqd/0]
# |-user1 1234 1 0 10:05 pts/0 00:00:00 \_ /bin/bash
# | -user1 5678 1234 0 10:10 pts/0 00:00:00 \_ ps -ef --forest
实时查看系统进程
在 Linux 系统中,top命令是一个非常常用的系统监控工具,用于实时显示系统中各个进程的资源占用情况等信息。以下是top命令的常见用法:
top [选项]
常用选项
-d
:指定更新间隔时间,单位为秒。例如,top -d 5
表示每 5 秒更新一次显示内容。-b
:以批处理模式运行top
,常用于将top
的输出重定向到文件或其他处理程序,不会交互式显示。如top -b -n 1
表示只输出一次结果。-n
:与-b
选项配合使用,指定显示的次数。例如,top -b -n 5
表示输出 5 次系统信息。-p
:指定要监控的进程 ID(PID)。可以同时监控多个 PID,多个 PID 之间用逗号分隔,如top -p 1234,5678
表示只监控 PID 为 1234 和 5678 的进程。-u
:指定要显示的用户名对应的进程。例如,top -u username
表示只显示用户名为username
的进程信息。
交互命令
在top
命令的交互界面中,可以使用以下按键来进行不同的操作:
M
:按照内存使用量对进程进行排序,从高到低显示。P
:按照 CPU 使用率对进程进行排序,从高到低显示。T
:按照累计 CPU 时间对进程进行排序,从高到低显示。k
:用于杀死指定的进程。按下k
后,会提示输入要杀死的进程 PID 和信号值,一般默认信号值为9
,表示强制终止进程。r
:用于重新调整进程的优先级。按下r
后,输入要调整的进程 PID,然后输入优先级值。q
:退出top
命令。
显示信息解读
top
命令的输出信息分为多个部分,常见的信息如下:
- 第一行:显示系统的基本信息,包括系统时间、运行时间、登录用户数、系统负载等。例如:
10:10:10 up 1 day, 2:00, 3 users, load average: 0.50, 0.60, 0.70
,分别表示当前时间、系统已运行时间、登录用户数以及过去 1 分钟、5 分钟、15 分钟的系统平均负载。 - 第二行:显示进程的统计信息,如总进程数、正在运行的进程数、睡眠的进程数、停止的进程数和僵尸进程数等。例如:
Tasks: 200 total, 3 running, 197 sleeping, 0 stopped, 0 zombie
。 - 第三行:显示 CPU 的使用情况,包括用户空间占用 CPU 百分比、系统内核占用 CPU 百分比、用户进程空间内改变过优先级的进程占用 CPU 百分比、空闲 CPU 百分比等。例如:
%Cpu(s): 5.0 us, 3.0 sy, 0.0 ni, 92.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
。 - 第四行和第五行:分别显示物理内存和交换空间的使用情况,包括总内存、已使用内存、空闲内存、缓冲内存等信息。例如:
KiB Mem : 16384000 total, 2048000 free, 8192000 used, 6144000 buff/cache
KiB Swap: 4096000 total, 4096000 free, 0 used. 7168000 avail Mem
- 进程列表:显示各个进程的详细信息,包括 PID、USER、PR、NI、VIRT、RES、SHR、S、% CPU、% MEM、TIME+、COMMAND 等字段,分别表示进程 ID、用户名、优先级、nice 值、虚拟内存大小、常驻内存大小、共享内存大小、进程状态、CPU 使用率、内存使用率、累计 CPU 时间、命令名称等。
通过top
命令,系统管理员和用户可以快速了解系统的资源使用情况和进程运行状态,以便及时发现和解决系统中的问题。要获取更详细的top
命令信息,可以通过man top
命令查看手册页。
关闭进程
在 Linux 系统中,kill命令用于向进程发送信号,从而实现终止、暂停、恢复进程等操作。以下是kill命令的常见用法:
kill [选项] [进程ID]
常用选项
-l
:列出所有可用的信号名称和编号。例如,执行kill -l
会输出类似1) SIGHUP 2) SIGINT 3) SIGQUIT...
的内容,显示了信号的编号和对应的名称。-s
:指定要发送的信号。可以使用信号名称或信号编号。例如,kill -s SIGTERM 1234
或kill -15 1234
都表示向进程 ID 为 1234 的进程发送SIGTERM
信号,尝试正常终止进程。
信号介绍
SIGTERM
(15) :这是kill
命令默认发送的信号。它请求进程正常终止,进程收到该信号后,通常会执行一些清理操作,然后退出。SIGKILL
(9) :这是一个强制终止信号。当进程收到SIGKILL
信号时,它会立即被终止,没有机会进行清理操作。一般在其他信号无法终止进程时使用。SIGINT
(2) :通常由用户按下Ctrl + C
产生,用于中断正在运行的进程。SIGSTOP
(19) :用于暂停进程,进程收到该信号后会停止执行,但不会退出,可以使用SIGCONT
信号恢复进程运行。SIGCONT
(18) :用于恢复被暂停的进程,使其继续运行。
常见用法示例
- 终止单个进程 :要终止一个已知进程 ID 的进程,例如进程 ID 为
5432
,可以使用默认的SIGTERM
信号,命令为kill 5432
,也可以明确指定信号kill -s SIGTERM 5432
。如果该进程没有响应SIGTERM
信号,可以尝试使用SIGKILL
信号强制终止,即kill -9 5432
。 - 根据进程名称终止进程 :如果不知道进程 ID,但知道进程名称,可以结合
pgrep
或pidof
命令来获取进程 ID,再使用kill
命令终止进程。例如,要终止名为nginx
的进程,可以先使用pgrep nginx
获取进程 ID,假设输出为1234 5678
,表示有两个nginx
进程,然后使用kill -s SIGTERM $(pgrep nginx)
来终止所有nginx
进程。也可以使用pidof
命令,如kill -s SIGTERM $(pidof nginx)
。 - 向多个进程发送信号 :可以同时向多个进程发送信号,只需在
kill
命令后列出多个进程 ID 即可,例如kill -s SIGSTOP 1234 5678 9012
,这将暂停进程 ID 为 1234、5678 和 9012 的进程。
系统权限
用户组
在 Linux 系统中,用户组是管理用户的一种有效方式,通过将用户划分到不同的组,可以方便地为组内用户统一分配权限。以下是一些与用户组相关的常用命令及其用法:
1. groupadd:创建用户组
groupadd [选项] 组名
常用选项及示例
- 无选项:直接创建一个新的用户组。
groupadd developers
此命令会创建一个名为 developers
的用户组。
-g
选项:指定用户组的 GID(组 ID)。
groupadd -g 1010 testers
该命令创建了一个名为 testers
的用户组,并指定其 GID 为 1010。
2. groupdel:删除用户组
基本语法
groupdel 组名
示例
groupdel interns
此命令将删除名为 interns
的用户组。需要注意的是,如果该组是某些用户的主组,则不能直接删除,需要先修改这些用户的主组。
3. groupmod:修改用户组信息
基本语法
groupmod [选项] 组名
常用选项及示例
-n
选项:修改用户组的名称。
groupmod -n new_developers developers
该命令将用户组 developers
的名称修改为 new_developers
。
-g
选项:修改用户组的 GID。
groupmod -g 1011 new_developers
此命令将 new_developers
用户组的 GID 修改为 1011。
4. groups:查看用户所属的用户组
基本语法
groups [用户名]
示例
- 查看当前用户所属的用户组:
groups
- 查看指定用户所属的用户组:
groups john
该命令会显示用户 john
所属的所有用户组。
5. usermod:将用户添加到用户组或从用户组中移除
基本语法
usermod [选项] 用户名
常用选项及示例
-aG
选项:将用户添加到指定的用户组中。
usermod -aG developers john
此命令将用户 john
添加到 developers
用户组中。-a
表示追加,-G
用于指定目标用户组。
- 移除用户从某个用户组:虽然
usermod
没有直接的移除选项,但可以通过编辑/etc/group
文件手动移除用户,或者使用gpasswd
命令。
6. gpasswd:管理用户组的成员
基本语法
gpasswd [选项] 组名
常用选项及示例
-a
选项:将用户添加到指定的用户组中。
gpasswd -a mary testers
该命令将用户 mary
添加到 testers
用户组中。
-d
选项:将用户从指定的用户组中移除。
gpasswd -d john developers
此命令将用户 john
从 developers
用户组中移除。
7. newgrp:临时切换用户的有效用户组
基本语法
newgrp 组名
示例
newgrp developers
执行该命令后,当前用户的有效用户组将临时切换为 developers
,在该会话中,用户将拥有 developers
组的权限。当退出该会话时,用户的有效用户组将恢复为原来的组。
用户
在Linux系统中,与用户相关的命令非常丰富,以下是一些常用命令及其用法:
useradd:创建用户
- 基本语法:
useradd [选项] 用户名
- 常用选项及示例
- 无选项:使用默认设置创建用户。例如
useradd testuser
,会创建一个名为testuser
的用户,默认的家目录为/home/testuser
,使用系统默认的Shell等。 -d
选项:指定用户的家目录。如useradd -d /home/newuser newuser
,将创建newuser
用户,并指定其家目录为/home/newuser
。-s
选项:指定用户的登录Shell。useradd -s /bin/bash newuser
,创建newuser
用户并指定其登录Shell为/bin/bash
。
- 无选项:使用默认设置创建用户。例如
userdel:删除用户
- 基本语法:
userdel [选项] 用户名
- 常用选项及示例
- 无选项:仅删除用户账号,不删除用户的家目录和相关文件。如
userdel testuser
,会删除testuser
用户账号。 -r
选项:删除用户账号的同时,删除用户的家目录和邮件池等相关文件。userdel -r testuser
,将彻底删除testuser
用户及其相关数据。
- 无选项:仅删除用户账号,不删除用户的家目录和相关文件。如
passwd:设置或修改用户密码
- 基本语法:
passwd [选项] [用户名]
- 常用选项及示例
- 普通用户执行:不使用选项,直接输入
passwd
,普通用户可以修改自己的密码。系统会提示输入当前密码,然后要求输入新密码并确认。 - 超级用户执行:可以为其他用户设置密码。如
passwd testuser
,以超级用户身份执行,会提示输入新密码,从而为testuser
用户设置新密码。 -l
选项:锁定用户账号,使该用户无法登录。passwd -l testuser
将锁定testuser
账号。-u
选项:解锁用户账号。passwd -u testuser
可以解锁之前被锁定的testuser
账号。
- 普通用户执行:不使用选项,直接输入
usermod:修改用户属性
- 基本语法:
usermod [选项] 用户名
- 常用选项及示例
-l
选项:修改用户名。usermod -l newname testuser
将把testuser
的用户名修改为newname
。-L
选项:临时锁定用户账号,与passwd -l
效果类似。usermod -L testuser
可锁定testuser
账号。-U
选项:解锁用户账号,等同于passwd -u
。usermod -U testuser
用于解锁testuser
账号。
id:查看用户信息
- 基本语法:
id [选项] [用户名]
- 常用选项及示例
- 无选项:查看当前用户的UID、GID、用户名、所属组等信息。
id
命令会输出类似uid=1000(user) gid=1000(group) groups=1000(group),4(adm),24(cdrom),27(sudo)
的内容。 - 指定用户名:查看指定用户的信息。
id testuser
将输出testuser
用户的相关信息。
- 无选项:查看当前用户的UID、GID、用户名、所属组等信息。
su:切换用户
- 基本语法:
su [选项] [用户名]
- 常用选项及示例
- 切换到其他用户并使用其环境:
su - testuser
,切换到testuser
用户,并加载testuser
的环境变量等,完全以testuser
的身份运行。 - 仅切换用户不改变环境:
su testuser
,只切换用户身份,不改变当前的环境变量等,当前环境仍保持原用户的环境。
- 切换到其他用户并使用其环境:
权限
问题
linux系统未来可能有程序员、用户、数据库管理员、项目经理等各种角色各种级别人使用,甚至还有身份不明的人链接到linux,控制不好权限容易导致系统崩溃、数据丢失等问题。
权限含义
| 权限字母 | 含义 | 对文件 | 代表命令 | 对文件夹 | 代表命令 | | — | — | — | — | — | — | | R® | 读 | 查看文件内容和复制文件 | more cat less cp head tail | 查看文件夹下的文件 | ls | | W(w) | 写 | 编辑文件 | vi | 在文件夹内创建和删除文件 | rm touch | | X(x) | 执行 | 执行该文件(执行必须具备r权限) | - | 切换到文件夹 | cd |
权限访问控制列表(ACL access controll list)
相关命令
在 Linux 系统中,权限管理是保障系统安全和数据隐私的重要部分。以下是一些与权限相关的常用命令及其用法:
1. chmod:修改文件或目录的权限
基本语法
chmod [选项] 权限模式 文件名或目录名
权限表示方法
- 数字表示法:使用三位八进制数,分别代表所有者(user)、所属组(group)和其他用户(others)的权限。其中,读(r)为 4,写(w)为 2,执行(x)为 1,无权限为 0。
- 示例:将
example.txt
文件的权限设置为所有者有读、写、执行权限(7),所属组有读和执行权限(5),其他用户有读权限(4),命令如下:
chmod 754 example.txt
- 示例:将
- 符号表示法:使用
u
(所有者)、g
(所属组)、o
(其他用户)、a
(所有用户),结合+
(添加权限)、-
(移除权限)、=
(设置权限)来修改权限。- 示例:为
example.txt
文件的所属组添加写权限,命令如下:
chmod g+w example.txt
- 示例:为
常用选项
-R
:递归修改目录及其子目录和文件的权限。chmod -R 755 my_directory
2. chown:修改文件或目录的所有者和所属组
基本语法
chown [选项] [所有者][:所属组] 文件名或目录名
示例
- 修改所有者:将
example.txt
文件的所有者改为newuser
,命令如下:chown newuser example.txt
- 同时修改所有者和所属组:将
my_directory
目录的所有者改为newuser
,所属组改为newgroup
,命令如下:chown newuser:newgroup my_directory
常用选项
-R
:递归修改目录及其子目录和文件的所有者和所属组。chown -R newuser:newgroup my_directory
3. chgrp:修改文件或目录的所属组
基本语法
chgrp [选项] 所属组 文件名或目录名
示例
将 example.txt
文件的所属组改为 newgroup
,命令如下:
```bash
chgrp newgroup example.txt
```
常用选项
-R
:递归修改目录及其子目录和文件的所属组。chgrp -R newgroup my_directory
4. umask:设置文件和目录创建时的默认权限掩码
基本语法
umask [权限掩码]
示例
查看当前的 umask 值:直接输入
umask
命令,会显示当前的 umask 值,例如0022
。设置新的 umask 值:将 umask 值设置为
0007
,命令如下:umask 0007
文件创建时的默认权限是 666
减去 umask 值,目录创建时的默认权限是 777
减去 umask 值。例如,umask 为 0022
时,新创建文件的默认权限是 644
,新创建目录的默认权限是 755
。
5. sudo:以超级用户权限执行命令
基本语法
sudo [命令]
示例
以超级用户权限执行 apt-get update
命令来更新软件包列表,命令如下:
sudo apt-get update
普通用户使用 sudo
执行命令时,需要输入自己的密码进行验证(前提是该用户被允许使用 sudo
)。
6. setfacl:设置文件或目录的访问控制列表(ACL)
基本语法
setfacl [选项] 权限规则 文件名或目录名
示例
为用户 newuser
为 example.txt
文件添加读和写权限,命令如下:
setfacl -m u:newuser:rw example.txt
其中,-m
表示修改 ACL,u
表示用户,newuser
是用户名,rw
是权限。
7. getfacl:查看文件或目录的访问控制列表(ACL)
基本语法
getfacl 文件名或目录名
示例
查看 example.txt
文件的 ACL,命令如下:
getfacl example.txt
该命令会输出文件的 ACL 详细信息。
系统软件管理
压缩解压缩
tar
命令是Linux系统中用于打包和压缩文件的常用工具,以下是它的常见用法:
打包文件和目录
- 语法:
tar -cvf [打包后的文件名.tar] [要打包的文件或目录]
- 参数说明
-c
:创建新的归档文件。-v
:显示详细的处理过程,在打包过程中会显示被打包的文件名等信息。-f
:指定归档文件名,必须放在参数列表的最后,紧跟要创建的文件名或已存在的文件名。
- 参数说明
- 示例:将
/home/user/documents
目录下的所有文件和子目录打包成documents.tar
文件,命令为tar -cvf documents.tar /home/user/documents
。
解包文件
- 语法:
tar -xvf [要解包的文件名.tar]
- 参数说明
-x
:从归档文件中提取文件。
- 参数说明
- 示例:将
documents.tar
文件解压到当前目录,命令为tar -xvf documents.tar
。
打包并压缩文件和目录
- 以gzip格式压缩
- 语法:
tar -zcvf [打包压缩后的文件名.tar.gz] [要打包压缩的文件或目录]
- 参数说明:
-z
表示使用gzip算法来压缩归档文件。
- 参数说明:
- 示例:将
/home/user/images
目录打包并压缩为images.tar.gz
,命令为tar -zcvf images.tar.gz /home/user/images
。
- 语法:
- 以bzip2格式压缩
- 语法:
tar -jcvf [打包压缩后的文件名.tar.bz2] [要打包压缩的文件或目录]
- 参数说明:
-j
表示使用bzip2算法来压缩归档文件。
- 参数说明:
- 示例:将
/home/user/videos
目录打包并压缩为videos.tar.bz2
,命令为tar -jcvf videos.tar.bz2 /home/user/videos
。
- 语法:
- 以xz格式压缩
- 语法:
tar -Jcvf [打包压缩后的文件名.tar.xz] [要打包压缩的文件或目录]
- 参数说明:
-J
表示使用xz算法来压缩归档文件。
- 参数说明:
- 示例:将
/home/user/archives
目录打包并压缩为archives.tar.xz
,命令为tar -Jcvf archives.tar.xz /home/user/archives
。
- 语法:
解压并解包文件
- 解压gzip格式的文件
- 语法:
tar -zxvf [要解压的文件名.tar.gz]
- 示例:解压
images.tar.gz
文件,命令为tar -zxvf images.tar.gz
。
- 语法:
- 解压bzip2格式的文件
- 语法:
tar -jxvf [要解压的文件名.tar.bz2]
- 示例:解压
videos.tar.bz2
文件,命令为tar -jxvf videos.tar.bz2
。
- 语法:
- 解压xz格式的文件
- 语法:
tar -Jxvf [要解压的文件名.tar.xz]
- 示例:解压
archives.tar.xz
文件,命令为tar -Jxvf archives.tar.xz
。
- 语法:
查看归档文件内容
- 语法:
tar -tf [归档文件名.tar]
- 参数说明:
-t
用于列出归档文件中的内容列表,不实际提取文件。
- 参数说明:
- 示例:查看
documents.tar
文件中的内容,命令为tar -tf documents.tar
。
向已存在的归档文件中追加内容
- 语法:
tar -rf [已存在的归档文件名.tar] [要追加的文件或目录]
- 参数说明:
-r
表示将文件或目录追加到已存在的归档文件中。
- 参数说明:
- 示例:将
new_file.txt
文件追加到documents.tar
文件中,命令为tar -rf documents.tar new_file.txt
。
排除特定文件或目录
- 语法:
tar -cvf [打包后的文件名.tar] --exclude=[要排除的文件或目录] [要打包的文件或目录]
- 示例:在打包
/home/user/mydir
目录时,排除其中的temp
目录和*.log
文件,命令为tar -cvf mydir.tar --exclude=temp --exclude=*.log /home/user/mydir
。
Linux 服务
systemctl
是Linux系统中用于控制systemd系统和服务管理器的命令,以下是其常见用法:
服务管理
- 启动服务:
systemctl start [服务名称]
,用于启动指定的服务。例如,要启动httpd
服务(假设安装了Apache服务器),可以使用命令systemctl start httpd
。 - 停止服务:
systemctl stop [服务名称]
,用于停止正在运行的服务。如停止mysql
服务,命令为systemctl stop mysql
。 - 重启服务:
systemctl restart [服务名称]
,用于重启指定的服务。例如,修改了nginx
配置文件后,可使用systemctl restart nginx
来使配置生效。 - 查看服务状态:
systemctl status [服务名称]
,可以查看指定服务的运行状态,包括服务是否正在运行、启动时间、进程信息等。例如,查看sshd
服务状态,执行systemctl status sshd
。 - 重新加载服务配置:
systemctl reload [服务名称]
,当服务配置文件修改后,使用此命令在不重启服务的情况下重新加载配置。比如,修改了postfix
邮件服务器的配置文件后,可执行systemctl reload postfix
。
设置服务开机自启与禁止开机自启
- 设置开机自启:
systemctl enable [服务名称]
,用于设置指定服务在系统开机时自动启动。例如,要让redis
服务开机自启,命令为systemctl enable redis
。 - 禁止开机自启:
systemctl disable [服务名称]
,用于禁止指定服务在系统开机时自动启动。比如,禁止httpd
服务开机自启,使用systemctl disable httpd
。
查看服务列表
- 查看所有已安装的服务:
systemctl list-unit-files
,可以列出系统中所有已安装的服务单元文件,包括服务的名称、状态等信息。 - 查看正在运行的服务:
systemctl list-units --type=service
,用于查看当前正在运行的服务列表,只显示处于运行状态的服务。 - 查看特定类型的服务:
systemctl list-units --type=[类型]
,其中[类型]
可以是service
(服务)、socket
、target
等。例如,查看所有的socket
类型的单元,命令为systemctl list-units --type=socket
。
系统管理
- 重启系统:
systemctl reboot
,用于重启Linux系统。 - 关闭系统:
systemctl poweroff
,用于关闭Linux系统。 - 休眠系统:
systemctl suspend
,使系统进入休眠状态,将系统当前状态保存到内存,然后关闭除内存外的大部分硬件电源。 - 查看系统状态:
systemctl status
,可以查看系统的整体状态信息,包括系统启动时间、运行级别、加载的模块等。
管理系统目标
- 切换系统目标:
systemctl isolate [目标名称]
,可以切换到指定的系统目标。例如,要切换到多用户文本模式(multi-user.target
),命令为systemctl isolate multi-user.target
。 - 查看默认系统目标:
systemctl get-default
,用于查看当前系统的默认目标。 - 设置默认系统目标:
systemctl set-default [目标名称]
,可以设置系统的默认启动目标。例如,设置默认目标为图形化界面(graphical.target
),命令为systemctl set-default graphical.target
。
ip设置
服务名:network
[root@centos7 dirnew]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
----------------网卡对应的文件内容---------------------
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="none"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="0bd5d8a5-fe1b-42de-82bd-bfa7d2984b95"
DEVICE="ens33"
ONBOOT="yes"
IPADDR="192.168.199.8" # 修改这里的ip地址即可
PREFIX="24"
GATEWAY="192.168.199.2"
DNS1="192.168.199.2"
DNS2="8.8.8.8"
IPV6_PRIVACY="no"
[root@centos7 dirnew]# systemctl restart network #重启网卡服务
防火墙
服务名:firewalld
# 开启防火墙
systemctl start 服务名
# 关闭防火墙(服务器重启后还会自动开启防火墙)
systemctl stop firewalld
# 禁止防火墙开机启动
systemctl disable firewalld
主机名
# 查看主机名
hostname
# 设置主机名
hostnamectl set-hostname 主机名
ip映射
域名解析
本地hosts编辑
[root@centos7 ~]# vim /etc/hosts
--------------下面是文件------------------
192.168.199.8 centos7
SSH
# 远程登录linux
ssh 远程linux的ip或者映射域名
免密登录
# 简介
ssh登录远程linux,免去输入密码的麻烦
# 生成公钥和私钥
[root@centos7 ~]# ssh-keygen
------------执行结果-----------
[root@centos7 ~]# tree .ssh
.ssh
├── id_rsa # 私钥
├── id_rsa.pub # 公钥
└── known_hosts
# 发送公钥
`保存公钥的文件为/root/.ssh/authorized_keys`
[root@centos7 .ssh]# cat id_rsa.pub > authorized_keys
# 发送公钥
[root@centos7 .ssh]# ssh-copy-id 目标主机的ip
远程拷贝
scp
(Secure Copy)命令用于在Linux系统之间通过SSH协议安全地复制文件和目录。以下是scp
命令的常见用法:
从本地复制文件到远程主机
- 基本语法:
scp [本地文件路径] [远程用户名]@[远程主机IP或域名]:[远程目标路径]
- 示例:如果要将本地的
test.txt
文件复制到远程主机192.168.1.100
的/home/user/
目录下,并且远程主机的用户名为admin
,可以使用以下命令:scp test.txt [email protected]:/home/user/
从远程主机复制文件到本地
- 基本语法:
scp [远程用户名]@[远程主机IP或域名]:[远程文件路径] [本地目标路径]
- 示例:从远程主机
192.168.1.100
的/home/admin/
目录下复制example.txt
文件到本地当前目录,远程主机用户名为admin
,命令如下:scp [email protected]:/home/admin/example.txt.
复制目录
- 基本语法:要复制整个目录,需要加上
-r
选项,表示递归复制。从本地复制目录到远程的语法为scp -r [本地目录路径] [远程用户名]@[远程主机IP或域名]:[远程目标路径]
;从远程复制目录到本地的语法为scp -r [远程用户名]@[远程主机IP或域名]:[远程目录路径] [本地目标路径]
- 示例:将本地的
myfolder
目录复制到远程主机192.168.1.100
的/home/user/
目录下,命令为scp -r myfolder [email protected]:/home/user/
。从远程主机复制/var/www/html
目录到本地的backup
目录下,命令为scp -r [email protected]:/var/www/html backup
指定端口
- 基本语法:如果远程主机的SSH服务使用了非默认的端口,需要使用
-P
选项来指定端口号,语法为scp -P [端口号] [本地文件或目录] [远程用户名]@[远程主机IP或域名]:[远程目标路径]
或scp -P [端口号] [远程用户名]@[远程主机IP或域名]:[远程文件或目录] [本地目标路径]
- 示例:假设远程主机的SSH端口为
2222
,将本地文件test.txt
复制到远程主机192.168.1.100
的/home/user/
目录下,命令为scp -P 2222 test.txt [email protected]:/home/user/
显示进度
- 基本语法:可以使用
-v
选项来显示复制过程的详细信息,包括连接状态、数据传输进度等,语法为scp -v [本地文件或目录] [远程用户名]@[远程主机IP或域名]:[远程目标路径]
或scp -v [远程用户名]@[远程主机IP或域名]:[远程文件或目录] [本地目标路径]
- 示例:
scp -v test.txt [email protected]:/home/user/
执行该命令后,会在终端显示文件复制的详细过程和进度信息。
在使用scp
命令时,可能需要输入远程主机的用户密码或使用密钥认证来完成复制操作。如果使用密钥认证,需要确保本地的密钥文件已经正确配置并与远程主机授权的密钥匹配。
必要软件安装
- vim(vi编辑器增强版)
vim 文件
- wget(下载器)
wget url
- tree(目录树状显示)
# 以tree结构,递归显示当前文件下所有文件
tree
# 显示目标文件夹下的文件
tree 目标目录
- psmisc(高级进程管理工具)
# 以tree形式显示系统目前进程
pstree
# 杀死进程
killall 进程名
# 显示该文件被哪个进程使用
fuser /目标文件
文章来源: https://study.disign.me/article/202509/10.linux-commands.md
发布时间: 2025-02-25
作者: 技术书栈编辑