🐧 Linux 常用命令大全
Linux 的命令确实非常多,然而熟悉 Linux 的人从来不会因为 Linux 的命令太多而烦恼。因为我们仅仅只需要掌握常用命令,就完全可以驾驭 Linux。
接下来,让我们一起来看看都有那些常用的 Linux 命令吧!
📁 一、文件目录操作
1. ls 命令
ls 命令不仅可以查看 linux 文件夹包含的文件,而且可以查看文件权限(包括目录、文件夹、文件权限)查看目录信息等等。
命令格式
ls [选项] [目录名]常用参数
| 参数 | 说明 |
|---|---|
-l | 列出长数据串,包含文件的属性与权限数据等 |
-a | 列出全部的文件,连同隐藏文件(开头为 . 的文件)一起列出来(常用) |
-d | 仅列出目录本身,而不是列出目录的文件数据 |
-h | 将文件容量以较易读的方式(GB,kB 等)列出来 |
-R | 连同子目录的内容一起列出(递归列出),等于该目录下的所有文件都会显示出来 |
使用实例
- 列出 home 目录下的所有文件和目录的详细资料。
ls -a -l /home
ls -al /home- 列出当前目录下所有以 "d" 开头的文件目录详情内容。
ls -l d*2. cd 命令
最基本的命令语句,其他的命令语句要进行操作,都是建立在使用 cd 命令上的。用于切换当前目录至 dirName。
命令格式
cd [目录名]操作案例
- 从当前目录进入系统根目录。
cd /- 跳转到 home/Code 目录。
cd /home/Code3. pwd 命令
查看"当前工作目录"的完整路径。
命令格式:
pwd [选项]常用参数:
| 参数 | 说明 |
|---|---|
-P | 显示实际物理路径,而非使用连接(link)路径 |
-L | 当目录为连接路径时,显示连接路径 |
操作案例
- 显示当前所在路径。
pwd4. mkdir 命令
用来创建指定的名称的目录,要求创建目录的用户在当前目录中具有写权限,并且指定的目录名不能是当前目录中已有的目录。
命令格式
mkdir [选项] 目录常用参数
| 参数 | 说明 |
|---|---|
-m, --mode=模式 | 设定权限 <模式>(类似 chmod),而不是 rwxrwxrwx 减 umask |
-p, --parents | 可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不存在的目录,即一次可以建立多个目录 |
-v, --verbose | 每次创建新目录都显示信息 |
--help | 显示此帮助信息并退出 |
--version | 输出版本信息并退出 |
使用实例
- 创建一个空目录。
mkdir test- 递归创建多个目录。
mkdir test/test1- 创建权限为 777 的目录。
mkdir -m 777 test2- 创建目录都显示信息。
mkdir -v test45. rm 命令
删除一个目录中的一个或多个文件或目录,如果没有使用 -r 选项,则 rm 不会删除目录。如果使用 rm 来删除文件,通常仍可以将该文件恢复原状。
命令格式
rm [选项] 文件常用参数
| 参数 | 说明 |
|---|---|
-f, --force | 忽略不存在的文件,从不给出提示 |
-i, --interactive | 进行交互式删除 |
-r, -R, --recursive | 指示 rm 将参数中列出的全部目录和子目录均递归地删除 |
-v, --verbose | 详细显示进行的步骤 |
--help | 显示此帮助信息并退出 |
--version | 输出版本信息并退出 |
使用实例
- 删除文件
test.txt,系统会提示是否删除。
rm test.txt- 强制删除
test.txt,系统不再提示。
rm -f test.txt- 将
test子目录及目录中所有档案删除。
rm -r test6. rmdir 命令
该命令从一个目录中删除一个或多个子目录项,删除某目录时也必须具有对父目录的写权限。
命令格式
rmdir [选项] 目录常用参数
| 参数 | 说明 |
|---|---|
-p | 递归删除目录 dirname,当子目录删除后其父目录为空时,也一同被删除。如果整个路径被删除或者由于某种原因保留部分路径,则系统在标准输出上显示相应的信息 |
-v, --verbose | 显示指令执行过程 |
使用实例
- 删除空目录
test1,非空目录无法删除。
rmdir test1- 当子目录被删除后使它也成为空目录的话,则顺便一并删除。
rmdir -p test2 # test 目录下仅有 test27. mv 命令
可以用来移动文件或者将文件改名(move (rename) files)。当第二个参数类型是文件时,mv 命令完成文件重命名。当第二个参数是已存在的目录名称时,源文件或目录参数可以有多个,mv 命令将各参数指定的源文件均移至目标目录中。
命令格式
mv [选项] 源文件或目录 目标文件或目录常用参数
| 参数 | 说明 |
|---|---|
-b | 若需覆盖文件,则覆盖前先行备份 |
-f | force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖 |
-i | 若目标文件 (destination) 已经存在时,就会询问是否覆盖 |
-u | 若目标文件已经存在,且 source 比较新,才会更新 (update) |
-t | --target-directory=DIRECTORY,指定 mv 的目标目录,适用于移动多个源文件到一个目录的情况,此时目标目录在前,源文件在后 |
使用实例
- 将
test1.txt重命名为test2.txt。
mv test1.txt test2.txt- 移动文件
test1.txt到目录test2。
mv test1.txt test2- 将文件
test1.txt、test2.txt、test3.txt移动到目录test3。
mv test1.txt test2.txt test3.txt test38. cp 命令
将源文件复制至目标文件,或将多个源文件复制至目标目录。
命令格式
cp [选项] 源文件 目录
cp [选项] -t 目录 源文件常用参数
| 参数 | 说明 |
|---|---|
-t, --target-directory | 指定目标目录 |
-i, --interactive | 覆盖前询问(使前面的 -n 选项失效) |
-n, --no-clobber | 不要覆盖已存在的文件(使前面的 -i 选项失效) |
-f, --force | 强行复制文件或目录,不论目的文件或目录是否已经存在 |
-u, --update | 只会在源文件的修改时间较目的文件更新时,或是对应的目的文件并不存在,才复制文件 |
-r, -R, --recursive | 递归复制目录 |
-a, --archive | 保留链接、文件属性,并递归复制目录(常用于完整备份) |
使用实例
- 复制文件
test1.txt到test1目录。
cp test1.txt test1 # 若文件存在,会提示是否覆盖。若不存在直接完成复制- 复制
test1整个目录到test2。
cp -a test1 test29. touch 命令
touch 命令参数可更改文档或目录的日期时间,包括存取时间和更改时间。
命令格式
touch [选项] 文件常用参数
| 参数 | 说明 |
|---|---|
-a | 只更改存取时间 |
-c, --no-create | 不建立任何文档 |
-d | 使用指定的日期时间,而非现在的时间 |
-f | 此参数将忽略不予处理,仅负责解决 BSD 版本 touch 指令的兼容性问题 |
-m | 只更改变动时间 |
-r | 把指定文档或目录的日期时间,统统设成和参考文档或目录的日期时间相同 |
-t | 使用指定的日期时间,而非现在的时间 |
使用实例
- 创建不存在的文件
test.txt。
touch test.txt- 更新
test.txt的时间和test1.txt时间戳相同。
touch -r test.txt test1.txt10. cat 命令
用来显示文件内容,或者将几个文件连接起来显示,或者从标准输入读取内容并显示,它常与重定向符号配合使用。
命令格式
cat [选项] [文件]常用参数
| 参数 | 说明 |
|---|---|
-A, --show-all | 等价于 -vET |
-b, --number-nonblank | 对非空输出行编号 |
-e | 等价于 -vE |
-E, --show-ends | 在每行结束处显示 $ |
-n, --number | 对输出的所有行编号,由 1 开始对所有输出的行数编号 |
-s, --squeeze-blank | 有连续两行以上的空白行,就代换为一行的空白行 |
-t | 与 -vT 等价 |
-T, --show-tabs | 将跳格字符显示为 ^I |
-v, --show-nonprinting | 使用 ^ 和 M- 引用,除了 LFD 和 TAB 之外 |
使用实例
- 把
test.log的文件内容加上行号后输入test1.log这个文件里。
cat -n test.log > test1.log- 将
test.log的文件内容反向显示。
tac test.log11. nl 命令
输出的文件内容自动的加上行号!其默认的结果与 cat -n 有点不太一样,nl 可以将行号做比较多的显示设计,包括位数与是否自动补齐 0 等等的功能。
命令格式
nl [选项] [文件]常用参数
| 参数 | 说明 |
|---|---|
-b a | 不论是否为空行,也同样列出行号(类似 cat -n) |
-b t | 如果有空行,空的那一行不要列出行号(默认值) |
-n ln | 行号在萤幕的最左方显示 |
-n rn | 行号在自己栏位的最右方显示,且不加 0 |
-n rz | 行号在自己栏位的最右方显示,且加 0 |
-w | 行号栏位的占用的位数 |
使用实例
- 用
nl列出test.log的内容。
nl test.log- 用
nl列出test.log的内容,空行也加上行号。
nl -b a test.log12. more 命令
more 命令和 cat 的功能一样都是查看文件里的内容,但有所不同的是 more 可以按页来查看文件的内容,还支持直接跳转行等功能。
命令格式
more [-dlfpcsu] [-num] [+/pattern] [+linenum] [file ...]常用参数
| 参数 | 说明 |
|---|---|
+n | 从笫 n 行开始显示 |
-n | 定义屏幕大小为 n 行 |
+/pattern | 在每个档案显示前搜寻该字串(pattern),然后从该字串前两行之后开始显示 |
-c | 从顶部清屏,然后显示 |
-d | 提示 "Press space to continue,'q' to quit",禁用响铃功能 |
-l | 忽略 Ctrl+l(换页)字符 |
-p | 通过清除窗口而不是滚屏来对文件进行换页,与 -c 选项相似 |
-s | 把连续的多个空行显示为一行 |
-u | 把文件内容中的下画线去掉 |
操作指令
| 按键 | 功能 |
|---|---|
Enter | 向下 n 行,需要定义,默认为 1 行 |
Ctrl+F | 向下滚动一屏 |
空格键 | 向下滚动一屏 |
Ctrl+B | 返回上一屏 |
= | 输出当前行的行号 |
:f | 输出文件名和当前行的行号 |
V | 调用 vi 编辑器 |
!命令 | 调用 Shell,并执行命令 |
q | 退出 more |
使用实例
- 显示文件
test.log第 3 行起内容。
more +3 test.log- 从文件
test.log查找第一个出现 "day3" 字符串的行,并从该处前 2 行开始显示输出。
more +/day3 test.log- 设置每屏显示 5 行。
more -5 test.log13. less 命令
less 与 more 类似,但使用 less 可以随意浏览文件,而 more 仅能向前移动,却不能向后移动,而且 less 在查看之前不会加载整个文件。
命令格式
less [参数] 文件常用参数
| 参数 | 说明 |
|---|---|
-b <缓冲区大小> | 设置缓冲区的大小 |
-e | 当文件显示结束后,自动离开 |
-f | 强迫打开特殊文件,例如外围设备代号、目录和二进制文件 |
-g | 只标志最后搜索的关键词 |
-i | 忽略搜索时的大小写 |
-m | 显示类似 more 命令的百分比 |
-N | 显示每行的行号 |
-o <文件名> | 将 less 输出的内容在指定文件中保存起来 |
-Q | 不使用警告音 |
-s | 显示连续空行为一行 |
-S | 行过长时间将超出部分舍弃 |
-x <数字> | 将 "tab" 键显示为规定的数字空格 |
操作命令
| 按键 | 功能 |
|---|---|
/字符串 | 向下搜索"字符串"的功能 |
?字符串 | 向上搜索"字符串"的功能 |
n | 重复前一个搜索(与 / 或 ? 有关) |
N | 反向重复前一个搜索(与 / 或 ? 有关) |
b | 向后翻一页 |
d | 向后翻半页 |
h | 显示帮助界面 |
Q | 退出 less 命令 |
u | 向前滚动半页 |
y | 向前滚动一行 |
空格键 | 滚动一行 |
回车键 | 滚动一页 |
[pagedown] | 向下翻动一页 |
[pageup] | 向上翻动一页 |
使用实例
- 查看文件
test.log。
less test.log14. head 命令
head 用来显示档案的开头至标准输出中,默认 head 命令打印其相应文件的开头 10 行。
命令格式
head [参数] [文件]常用参数
| 参数 | 说明 |
|---|---|
-q | 隐藏文件名 |
-v | 显示文件名 |
-c <字节> | 显示字节数 |
-n <行数> | 显示的行数 |
使用实例
- 显示文件
test.log的前 5 行。
head -n 5 test.log- 显示文件
test.log前 20 个字节。
head -c 20 test.log15. tail 命令
显示指定文件末尾内容,不指定文件时,作为输入信息进行处理。常用查看日志文件。
命令格式
tail [必要参数] [选择参数] [文件]常用参数
| 参数 | 说明 |
|---|---|
-f | 循环读取 |
-q | 不显示处理信息 |
-v | 显示详细的处理信息 |
-c <数目> | 显示的字节数 |
-n <行数> | 显示行数 |
--pid=PID | 与 -f 合用,表示在进程 ID(PID)死掉之后结束 |
-s, --sleep-interval=S | 与 -f 合用,表示在每次反复的间隔休眠 S 秒 |
使用实例
- 显示文件
test.log最后 5 行内容。
tail -n 5 test.log- 循环查看文件内容。
tail -f test.log🔍 二、文件查找
16. which 命令
which 指令会在 PATH 变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果。
命令格式
which 可执行文件名称常用参数
| 参数 | 说明 |
|---|---|
-n | 指定文件名长度,指定的长度必须大于或等于所有文件中最长的文件名 |
-p | 与 -n 参数相同,但此处的包括了文件的路径 |
-w | 指定输出时栏位的宽度 |
-V | 显示版本信息 |
使用实例
- 查找文件、显示命令路径。
which pwd- 用
which去找出which。
which which17. whereis 命令
whereis 命令是定位可执行文件、源代码文件、帮助文件在文件系统中的位置。
命令格式
whereis [-bmsu] [BMS 目录名 -f] 文件名常用参数
| 参数 | 说明 |
|---|---|
-b | 定位可执行文件 |
-m | 定位帮助文件 |
-s | 定位源代码文件 |
-u | 搜索默认路径下除可执行文件、源代码文件、帮助文件以外的其它文件 |
-B | 指定搜索可执行文件的路径 |
-M | 指定搜索帮助文件的路径 |
-S | 指定搜索源代码文件的路径 |
使用实例
- 将和
svn文件相关的文件都查找出来。
whereis svn- 只将二进制文件查找出来。
whereis -b svn18. locate 命令
可以很快速的搜寻档案系统内是否有指定的档案。
命令格式
locate [选择参数] [样式]常用参数
| 参数 | 说明 |
|---|---|
-e | 将排除在寻找的范围之外 |
-1 | 如果 是 1,则启动安全模式。在安全模式下,使用者不会看到权限无法看到的档案 |
-f | 将特定的档案系统排除在外 |
-q | 安静模式,不会显示任何错误讯息 |
-n | 至多显示 n 个输出 |
-r | 使用正规运算式做寻找的条件 |
-o | 指定资料库存的名称 |
-d | 指定资料库的路径 |
使用实例
- 查找和
pwd相关的所有文件。
locate pwd- 搜索 etc 目录下,所有以
m开头的文件。
locate /etc/m19. find 命令
主要作用是沿着文件层次结构向下遍历,匹配符合条件的文件,并执行相应的操作。
命令格式
find [选项] [搜索路径] [表达式]常用参数
| 参数 | 说明 |
|---|---|
-print | find 命令将匹配的文件输出到标准输出 |
-exec | find 命令对匹配的文件执行该参数所给出的 shell 命令 |
-name | 按照文件名查找文件 |
-type | 查找某一类型的文件 |
补充说明:
xargs命令可以从标准输入接收输入,并把输入转换为一个特定的参数列表。
命令格式:command | xargs [选项] [command]xargs命令应该紧跟在管道操作符之后,因为它以标准输入作为主要的源数据流。
参数 说明 -n指定每行最大的参数数量 -d指定分隔符
使用实例
- 打印当前目录文件目录列表。
find . -print- 打印当前目录下所有不以
.txt结尾的文件名。
find . ! -name "*.txt"- 打印当前目录下所有权限为 777 的 php 文件。
find . -type f -name "*.php" -perm 777- 找到当前目录下所有 php 文件,并显示其详细信息。
find . -name "*.php" -exec ls -l {} \;- 查找当前目录下所有 c 代码文件,统计总行数。
find . -type f -name "*.c" | xargs wc -l📦 三、文件打包上传和下载
20. tar 命令
用来压缩和解压文件。tar 本身不具有压缩功能,它是调用压缩功能实现的。
命令格式
tar [必要参数] [选择参数] [文件]常用参数
必要参数:
| 参数 | 说明 |
|---|---|
-A | 新增压缩文件到已存在的压缩 |
-B | 设置区块大小 |
-c | 建立新的压缩文件 |
-d | 记录文件的差别 |
-r | 添加文件到已经压缩的文件 |
-u | 添加改变了和现有的文件到已经存在的压缩文件 |
-x | 从压缩的文件中提取文件 |
-t | 显示压缩文件的内容 |
-z | 支持 gzip 解压文件 |
-j | 支持 bzip2 解压文件 |
-Z | 支持 compress 解压文件 |
-v | 显示操作过程 |
-k | 保留原有文件不覆盖 |
-m | 保留文件不被覆盖 |
-W | 确认压缩文件的正确性 |
可选参数:
| 参数 | 说明 |
|---|---|
-b | 设置区块数目 |
-C | 切换到指定目录 |
-f | 指定压缩文件 |
--help | 显示帮助信息 |
--version | 显示版本信息 |
使用实例
- 将文件全部打包成 tar 包。
tar -cvf test.tar test.log # 仅打包,不压缩
tar -zcvf test.tar.gz test.log # 打包后,以 gzip 压缩
tar -jcvf test.tar.bz2 test.log # 打包后,以 bzip2 压缩- 将 tar 包解压缩。
tar -zxvf test.tar.gz21. gzip 命令
使用广泛的压缩程序,文件经它压缩过后,其名称后面会多出 .gz 的扩展名。
命令格式
gzip [参数] [文件或者目录]常用参数
| 参数 | 说明 |
|---|---|
-a, --ascii | 使用 ASCII 文字模式 |
-c, --stdout | 把压缩后的文件输出到标准输出设备,不去更动原始文件 |
-d, --decompress | 解开压缩文件 |
-f, --force | 强行压缩文件。不理会文件名称或硬连接是否存在以及该文件是否为符号连接 |
-h, --help | 在线帮助 |
使用实例
- 把
test1目录下的每个文件压缩成.gz文件。
cd test1
gzip *🔐 四、文件权限设置
22. chmod 命令
用于改变 linux 系统文件或目录的访问权限。
命令格式
chmod [-cfvR] [--help] [--version] mode file常用参数
必要参数:
| 参数 | 说明 |
|---|---|
-c | 当发生改变时,报告处理信息 |
-f | 错误信息不输出 |
-R | 处理指定目录以及其子目录下的所有文件 |
-v | 运行时显示详细处理信息 |
选择参数:
| 参数 | 说明 |
|---|---|
--reference=<目录或者文件> | 设置成具有指定目录或者文件具有相同的权限 |
--version | 显示版本信息 |
<权限范围>+<权限设置> | 使权限范围内的目录或者文件具有指定的权限 |
<权限范围>-<权限设置> | 删除权限范围的目录或者文件的指定权限 |
<权限范围>=<权限设置> | 设置权限范围内的目录或者文件的权限为指定的值 |
权限范围:
| 符号 | 说明 |
|---|---|
u | 目录或者文件的当前的用户 |
g | 目录或者文件的当前的群组 |
o | 除了目录或者文件的当前用户或群组之外的用户或者群组 |
a | 所有的用户及群组 |
权限代号:
| 代号 | 说明 | 数字 |
|---|---|---|
r | 读权限 | 4 |
w | 写权限 | 2 |
x | 执行权限 | 1 |
- | 删除权限 | 0 |
使用实例
- 增加文件所有用户组可执行权限。
chmod a+x test.log- 删除所有用户的可执行权限。
chmod a-x test.log23. chgrp 命令
可采用群组名称或群组识别码的方式改变文件或目录的所属群组。
命令格式
chgrp [选项] [组] [文件]常用参数
必要参数:
| 参数 | 说明 |
|---|---|
-c | 当发生改变时输出调试信息 |
-f | 不显示错误信息 |
-R | 处理指定目录以及其子目录下的所有文件 |
-v | 运行时显示详细的处理信息 |
--dereference | 作用于符号链接的指向,而不是符号链接本身 |
--no-dereference | 作用于符号链接本身 |
选择参数:
| 参数 | 说明 |
|---|---|
--reference=<文件或者目录> | 以指定文件/目录为参考 |
--help | 显示帮助信息 |
--version | 显示版本信息 |
使用实例
- 改变文件的群组属性。
chgrp -v bin test.log- 改变文件
test1.log的群组属性,使得文件test1.log的群组属性和参考文件test.log的群组属性相同。
chgrp --reference=test.log test1.log24. chown 命令
通过 chown 改变文件的拥有者和群组。
命令格式
chown [选项] [所有者][:[组]] 文件常用参数
必要参数:
| 参数 | 说明 |
|---|---|
-c | 显示更改的部分的信息 |
-f | 忽略错误信息 |
-h | 修复符号链接 |
-R | 处理指定目录以及其子目录下的所有文件 |
-v | 显示详细的处理信息 |
--deference | 作用于符号链接的指向,而不是链接文件本身 |
选择参数:
| 参数 | 说明 |
|---|---|
--reference=<目录或文件> | 把指定的目录/文件作为参考,把操作的文件/目录设置成参考文件/目录相同拥有者和群组 |
--from=<当前用户:当前群组> | 只有当前用户和群组跟指定的用户和群组相同时才进行改变 |
--help | 显示帮助信息 |
--version | 显示版本信息 |
使用实例
- 改变拥有者和群组。
chown mail:mail test.log💾 五、磁盘存储
25. df 命令
显示指定磁盘文件的可用空间。
命令格式
df [选项] [文件]常用参数
必要参数:
| 参数 | 说明 |
|---|---|
-a | 全部文件系统列表 |
-h | 方便阅读方式显示 |
-H | 等于 -h,但是计算式,1K=1000,而不是 1K=1024 |
-i | 显示 inode 信息 |
-k | 区块为 1024 字节 |
-l | 只显示本地文件系统 |
-m | 区块为 1048576 字节 |
-T | 文件系统类型 |
选择参数:
| 参数 | 说明 |
|---|---|
--block-size=<区块大小> | 指定区块大小 |
-t <文件系统类型> | 只显示选定文件系统的磁盘信息 |
-x <文件系统类型> | 不显示选定文件系统的磁盘信息 |
--help | 显示帮助信息 |
--version | 显示版本信息 |
使用实例
- 显示指定磁盘使用情况。
df -t ext326. du 命令
显示每个文件和目录的磁盘使用空间。
命令格式
du [选项] [文件]常用参数
| 参数 | 说明 |
|---|---|
-a | 显示目录中个别文件的大小 |
-b | 以 byte 为单位显示 |
-c | 显示个别目录或文件的大小外,同时显示总和 |
-k | 以 KB 为单位输出 |
-m | 以 MB 为单位输出 |
-s | 仅显示总计,只列出最后加总的值 |
-h | 以 K,M,G 为单位,提高信息的可读性 |
-S | 显示个别目录的大小时,并不含其子目录的大小 |
-x | 以一开始处理时的文件系统为准,若遇上其它不同的文件系统目录则略过 |
使用实例
- 显示指定目录或文件所占空间。
du test # 目录
du test.log # 文件⚡ 六、性能监控和优化命令
27. top 命令
显示当前系统正在执行的进程的相关信息,包括进程 ID、内存占用率、CPU 占用率等。
命令格式
top [参数]常用参数
| 参数 | 说明 |
|---|---|
-b | 批处理 |
-c | 显示完整的命令 |
-I | 忽略失效过程 |
-s | 保密模式 |
-S | 累积模式 |
-i <时间> | 设置间隔时间 |
-u <用户名> | 指定用户名 |
-p <进程号> | 指定进程 |
-n <次数> | 循环显示的次数 |
使用实例
- 显示进程信息。
top28. free 命令
显示系统使用和空闲的内存情况,包括物理内存、交互区内存(swap)和内核缓冲区内存。
命令格式
free [参数]常用参数
| 参数 | 说明 |
|---|---|
-b | 以 Byte 为单位显示内存使用情况 |
-k | 以 KB 为单位显示内存使用情况 |
-m | 以 MB 为单位显示内存使用情况 |
-g | 以 GB 为单位显示内存使用情况 |
-s <间隔秒数> | 持续观察内存使用状况 |
-t | 显示内存总和列 |
-V | 显示版本信息 |
使用实例
- 显示内存情况。
free
free -g # 以GB为单位
free -m # 以MB为单位29. vmstat 命令
用来显示虚拟内存的信息。
命令格式
vmstat [-a] [-n] [-S unit] [delay [count]]常用参数
| 参数 | 说明 |
|---|---|
-a | 显示活跃和非活跃内存 |
-f | 显示从系统启动至今的 fork 数量 |
-m | 显示 slabinfo |
-n | 只在开始时显示一次各字段名称 |
-s | 显示内存相关统计信息及多种系统活动数量 |
-d | 显示磁盘相关统计信息 |
-p | 显示指定磁盘分区统计信息 |
-S | 使用指定单位显示(k、K、m、M) |
使用实例
- 显示活跃和非活跃内存。
vmstat -a 5 5 # 5秒时间内进行5次采样30. iostat 命令
通过 iostat 方便查看 CPU、网卡、tty 设备、磁盘、CD-ROM 等等设备的活动情况、负载信息。
命令格式
iostat [参数] [时间] [次数]常用参数
| 参数 | 说明 |
|---|---|
-C | 显示 CPU 使用情况 |
-d | 显示磁盘使用情况 |
-k | 以 KB 为单位显示 |
-m | 以 M 为单位显示 |
-N | 显示磁盘阵列(LVM)信息 |
-n | 显示 NFS 使用情况 |
-p [磁盘] | 显示磁盘和分区的情况 |
-t | 显示终端和 CPU 的信息 |
-x | 显示详细信息 |
使用实例
- 定时显示所有信息。
iostat 2 3 # 每隔2秒刷新显示,且显示3次31. lsof 命令
用于查看进程开打的文件,打开文件的进程,进程打开的端口(TCP、UDP)。
命令格式
lsof [参数] [文件]常用参数
| 参数 | 说明 |
|---|---|
-a | 列出打开文件存在的进程 |
-c <进程名> | 列出指定进程所打开的文件 |
-g | 列出 GID 号进程详情 |
-d <文件号> | 列出占用该文件号的进程 |
+d <目录> | 列出目录下被打开的文件 |
+D <目录> | 递归列出目录下被打开的文件 |
-n <目录> | 列出使用 NFS 的文件 |
-i <条件> | 列出符合条件的进程(4、6、协议、:端口、@ip) |
-p <进程号> | 列出指定进程号所打开的文件 |
-u | 列出 UID 号进程详情 |
使用实例
- 查看谁正在使用 bash 文件。
lsof /bin/bash🌐 七、网络命令
32. ifconfig 命令
ifconfig 命令用来查看和配置网络设备。
命令格式
ifconfig [网络设备] [参数]常用参数
| 参数 | 说明 |
|---|---|
up | 启动指定网络设备/网卡 |
down | 关闭指定网络设备/网卡 |
-a | 显示全部接口信息 |
-s | 显示摘要信息(类似于 netstat -i) |
add | 给指定网卡配置 IPv6 地址 |
del | 删除指定网卡的 IPv6 地址 |
-promisc | 设置是否支持网卡的 promiscuous 模式 |
-allmulti | 设置是否支持多播模式 |
使用实例
- 启动关闭指定网卡。
ifconfig eth0 up
ifconfig eth0 down- 用
ifconfig修改 MAC 地址。
ifconfig eth0 hw ether 00:AA:BB:CC:DD:EE33. route 命令
route 命令是用于操作基于内核 ip 路由表,它的主要作用是创建一个静态路由让指定一个主机或者一个网络通过一个网络接口。
命令格式
route [-f] [-p] [Command [Destination] [mask Netmask] [Gateway] [metric Metric]] [if Interface]常用参数
| 参数 | 说明 |
|---|---|
-c | 显示更多信息 |
-n | 不解析名字 |
-v | 显示详细的处理信息 |
-F | 显示发送信息 |
-C | 显示路由缓存 |
-f | 清除所有网关入口的路由表 |
-p | 与 add 命令一起使用时使路由具有永久性 |
add | 添加一条新路由 |
del | 删除一条路由 |
-net | 目标地址是一个网络 |
-host | 目标地址是一个主机 |
netmask | 当添加一个网络路由时,需要使用网络掩码 |
gw | 路由数据包通过网关 |
metric | 设置路由跳数 |
使用实例
- 显示当前路由。
route
route -n- 添加网关/设置网关。
route add -net 224.0.0.0 netmask 240.0.0.0 dev eth034. ping 命令
确定网络和各外部主机的状态;跟踪和隔离硬件和软件问题;测试、评估和管理网络。
命令格式
ping [参数] [主机名或IP地址]常用参数
| 参数 | 说明 |
|---|---|
-d | 使用 Socket 的 SO_DEBUG 功能 |
-f | 极限检测。大量且快速地送网络封包给一台机器,看它的回应 |
-n | 只输出数值 |
-q | 不显示任何传送封包的信息,只显示最后的结果 |
-r | 忽略普通的 Routing Table,直接将数据包送到远端主机上 |
-R | 记录路由过程 |
-v | 详细显示指令的执行过程 |
-c <数目> | 在发送指定数目的包后停止 |
-i <秒数> | 设定间隔几秒送一个网络封包给一台机器 |
-s <字节数> | 指定发送的数据字节数 |
-t <存活数值> | 设置存活数值 TTL 的大小 |
使用实例
- ping 网关。
ping -b 192.168.120.135. traceroute 命令
让你追踪网络数据包的路由途径,预设数据包大小是 40 Bytes,用户可另行设置。
命令格式
traceroute [参数] [主机]常用参数
| 参数 | 说明 |
|---|---|
-d | 使用 Socket 层级的排错功能 |
-f | 设置第一个检测数据包的存活数值 TTL 的大小 |
-F | 设置勿离断位 |
-i | 使用指定的网络界面送出数据包 |
-I | 使用 ICMP 回应取代 UDP 资料信息 |
-m | 设置检测数据包的最大存活数值 TTL 的大小 |
-n | 直接使用 IP 地址而非主机名称 |
-p | 设置 UDP 传输协议的通信端口 |
-r | 忽略普通的 Routing Table,直接将数据包送到远端主机上 |
-s | 设置本地主机送出数据包的 IP 地址 |
-v | 详细显示指令的执行过程 |
-w | 设置等待远端主机回报的时间 |
使用实例
traceroute最常用的用法。
traceroute www.baidu.com- 跳数设置。
traceroute -m 10 www.baidu.com36. netstat 命令
用于显示与 IP、TCP、UDP 和 ICMP 协议相关的统计数据,一般用于检验本机各端口的网络连接情况。
命令格式
netstat [-acCeFghilMnNoprstuvVwx] [-A<网络类型>] [--ip]常用参数
| 参数 | 说明 |
|---|---|
-a | 显示所有连线中的 Socket |
-c | 持续列出网络状态 |
-C | 显示路由器配置的快取信息 |
-e | 显示网络其他相关信息 |
-F | 显示 FIB |
-g | 显示多重广播功能群组组员名单 |
-h | 在线帮助 |
-i | 显示网络界面信息表单 |
-l | 显示监控中的服务器的 Socket |
-M | 显示伪装的网络连线 |
-n | 直接使用 IP 地址,而不通过域名服务器 |
-o | 显示计时器 |
-p | 显示正在使用 Socket 的程序识别码和程序名称 |
-r | 显示 Routing Table |
-s | 显示网络工作信息统计表 |
-t | 显示 TCP 传输协议的连线状况 |
-u | 显示 UDP 传输协议的连线状况 |
-v | 显示指令执行过程 |
-V | 显示版本信息 |
-w | 显示 RAW 传输协议的连线状况 |
使用实例
- 列出所有端口。
netstat -a37. telnet 命令
执行 telnet 指令开启终端机阶段作业,并登入远端主机。
命令格式
telnet [参数] [主机]常用参数
| 参数 | 说明 |
|---|---|
-8 | 允许使用 8 位字符资料,包括输入与输出 |
-a | 尝试自动登入远端系统 |
-b <主机别名> | 使用别名指定远端主机名称 |
-c | 不读取用户专属目录里的 .telnetrc 文件 |
-d | 启动排错模式 |
-e <脱离字符> | 设置脱离字符 |
-E | 滤除脱离字符 |
-f | 此参数的效果和指定 -F 参数相同 |
使用实例
- 远程服务器无法访问。
telnet 192.168.120.206🧰 八、其他命令
38. ln 命令
为某一个文件在另外一个位置建立一个同步的链接。当我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,只要在某个固定的目录放上该文件,然后用 ln 命令链接(link)它就可以,不必重复的占用磁盘空间。
命令格式
ln [参数] [源文件或目录] [目标文件或目录]常用参数
必要参数:
| 参数 | 说明 |
|---|---|
-b | 删除,覆盖以前建立的链接 |
-d | 允许超级用户制作目录的硬链接 |
-f | 强制执行 |
-i | 交互模式,文件存在则提示用户是否覆盖 |
-n | 把符号链接视为一般目录 |
-s | 软链接(符号链接) |
-v | 显示详细的处理过程 |
使用实例
- 为
test.log文件创建软链接linktest。
ln -s test.log linktest- 为
test.log创建硬链接lntest。
ln test.log lntest39. diff 命令
比较单个文件或者目录内容。
命令格式
diff [参数] [文件1或目录1] [文件2或目录2]常用参数
| 参数 | 说明 |
|---|---|
-c | 上下文模式,显示全部内文,并标出不同之处 |
-u | 统一模式,以合并的方式来显示文件内容的不同 |
-a | 只会逐行比较文本文件 |
-N | 将文件 A 与一个空白的文件比较 |
-r | 递归比较目录下的文件 |
使用实例
- 显示
test1.txt和test2.txt两个文件差异。
diff test1.txt test2.txt40. grep 命令
一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。
命令格式
grep [option] pattern file常用参数
| 参数 | 说明 |
|---|---|
-c | 计算找到'搜寻字符串'的次数 |
-i | 忽略大小写的不同 |
-n | 输出行号 |
-v | 反向选择,打印不匹配的行 |
-r | 递归搜索 |
--color=auto | 将找到的关键词部分加上颜色显示 |
使用实例
- 将
/etc/passwd文件中出现root的行取出来,关键词部分加上颜色显示。
grep "root" /etc/passwd --color=auto
cat /etc/passwd | grep "root" --color=auto- 将
/etc/passwd文件中没有出现root和nologin的行取出来。
grep -v "root" /etc/passwd | grep -v "nologin"41. wc 命令
用来显示文件所包含的行、字和字节数。
命令格式
wc [选项] [文件]常用参数
| 参数 | 说明 |
|---|---|
-c | 统计字节数 |
-l | 统计行数 |
-m | 统计字符数 |
-w | 统计字数 |
-L | 打印最长行的长度 |
使用实例
- 统计文件的字节数、行数和字符数。
wc -c test.txt
wc -l test.txt
wc -m test.txt- 只打印数字,不打印文件名。
cat test.txt | wc -c
cat test.txt | wc -l
cat test.txt | wc -m42. ps 命令
用来显示当前进程的状态。
命令格式
ps [参数]常用参数
| 参数 | 说明 |
|---|---|
a | 显示同一终端下的所有程序 |
-A | 显示所有进程 |
c | 显示进程的真实名称 |
-e | 等于 -A |
e | 显示环境变量 |
f | 显示程序间的关系 |
-H | 显示树状结构 |
r | 显示当前终端的进程 |
u | 指定用户的所有进程 |
-au | 显示较详细的资讯 |
-aux | 显示所有包含其他使用者的行程 |
使用实例
- 显示所有进程信息。
ps -A- 显示指定用户信息。
ps -u root- 显示所有进程信息,连同命令行。
ps -ef43. watch 命令
可以将命令的输出结果输出到标准输出设备,多用于周期性执行命令/定时执行命令。
命令格式
watch [参数] [命令]常用参数
| 参数 | 说明 |
|---|---|
-n, --interval | 指定间隔的时间(默认每 2 秒) |
-d, --differences | 高亮显示变化的区域 |
-t, --no-title | 关闭顶部的时间间隔、命令、当前时间的输出 |
-h, --help | 查看帮助文档 |
使用实例
- 每隔一秒高亮显示网络链接数的变化情况。
watch -n 1 -d "netstat -ant"- 每隔一秒高亮显示 http 链接数的变化情况。
watch -n 1 -d 'pstree | grep http'44. at 命令
在一个指定的时间执行一个指定任务,只能执行一次。(需开启 atd 进程)
命令格式
at [参数] [时间]常用参数
| 参数 | 说明 |
|---|---|
-m | 当指定的任务被完成之后,将给用户发送邮件 |
-l | atq 的别名 |
-d | atrm 的别名 |
-v | 显示任务将被执行的时间 |
-c | 打印任务的内容到标准输出 |
-V | 显示版本信息 |
-q <列队> | 使用指定的列队 |
-f <文件> | 从指定文件读入任务 |
-t <时间参数> | 以时间参数的形式提交要运行的任务 |
使用实例
- 3 天后的下午 5 点执行
/bin/ls。
at 5pm+3 days
at> /bin/ls
at> <EOT>45. crontab 命令
在固定的间隔时间执行指定的系统指令或 shell script 脚本。时间间隔的单位可以是分钟、小时、日、月、周及以上的任意组合。(需开启 crond 服务)
命令格式
crontab [-u user] file
crontab [-u user] [-e | -l | -r]常用参数
| 参数 | 说明 |
|---|---|
-u user | 设定某个用户的 crontab 服务 |
file | 将 file 做为 crontab 的任务列表文件并载入 crontab |
-e | 编辑某个用户的 crontab 文件内容 |
-l | 显示某个用户的 crontab 文件内容 |
-r | 从 /var/spool/cron 目录中删除某个用户的 crontab 文件 |
-i | 在删除用户的 crontab 文件时给确认提示 |
使用实例
- 列出 crontab 文件。
crontab -l- 编辑 crontab 文件。
crontab -eCrontab 任务实例
| 需求 | 表达式 |
|---|---|
| 每 1 分钟执行一次 | * * * * * command |
| 每小时的第 3 和第 15 分钟执行 | 3,15 * * * * command |
| 在上午 8 点到 11 点的第 3 和第 15 分钟执行 | 3,15 8-11 * * * command |
📝 小贴士: 以上 45 个命令覆盖了 Linux 日常使用的绝大多数场景。熟练掌握后,你就能轻松驾驭 Linux 系统了!💪
评论 (0)