Linux 常用命令
命令的基本格式
命令的提示符
[root@localhost ~]#
[]
这是提示符的分隔符号,没有特殊含义。root
显示的是当前的登录用户, 目前使用的是 root 用户登录。@
分隔符号,没有特殊含义。localhost
当前系统的简写主机名(完整主机名是 localhost.localdomain)。~
代表用户当前所在的目录,此例中用户当前所在的目录是家目录。#
命令提示符。超级用户是#,普通用户是$
命令的基本格式
[root@localhost ~]# 命令 [选项] [参数]
选项
用于调整命令的功能的
参数
命令的操作对象
目录操作命令
ls 命令
ls 是最常见的目录操作命令,主要作用是显示目录下的内容
- 命令名称:ls
- 英文原意:list
- 所在路径:/bin/ls
- 执行权限:所有用户
- 功能描述:显示目录下的内容
命令格式
ls [选项] [目录名]
选项
-a
显示所有文件--color=when
支持颜色输出,when 的值默认是 always(总显示颜色),也可以是 never(从不显示颜色)和 auto(自动)-d
显示目录信息,而不是目录下的文件-h
人性化显示,按照我们习惯的单位显示文件大小-i
显示文件的节点号-l
长格式显示
示例
1 | [root@localhost ~]# ls -l |
“-l” 选项用于显示文件的详细信息,那么“-l”选项显示的这 7 列分别是什么含义?
- 第一列:权限。
- 第二列:引用计数。文件的引用计数代表该文件的硬链接个数,而目录的引用计数代表该目录
- 有多少个一级子目录。
- 第三列:所有者,也就是这个文件属于哪个用户。默认所有者是文件的建立用户
- 第四列:所属组。默认所属组是文件建立用户的有效组,一般情况下就是建立用户的所在组。
- 第五列:大小。默认单位是字节。
- 第六列:文件修改时间。文件状态修改时间或文件数据修改时间都会更改这个时间,注意这个
- 时间不是文件的创建时间。
- 第七列:文件名。
cd 命令
cd 是切换所在目录的命令
基本信息如下
- 命令名称:cd
- 英文原意:change directory
- 所在路径:shell 内置命令
- 执行权限:所有用户
- 功能描述:切换所在目录
命令格式
cd [-L|-P] [dir]
选项
-L
(默认值)如果要切换到的目标目录是一个符号连接,那么切换到符号连接的目录。-P
如果要切换到的目标目录是一个符号连接,那么切换到它指向的物理位置目录。
参数
- 可以是绝对路径(以根目录为参照物)或相对路径(以当前目录为参照物)
简化用法
cd ~
当前用户的加目录cd -
上一次所在目录cd .
当前目录cd ..
上级目录
pwd 命令
pwd 命令是查询所在目录的命令,
基本信息如下
- 命令名称:pwd
- 英文原意:print name of current/working directory
- 所在路径:/bin/pwd
- 执行权限:所有用户
- 功能描述:查询当前所在目录
mkdir 命令
- 命令名称:mkdir
- 英文原意:make directories
- 所在路径:/bin/mkdir
- 执行权限:所有用户
- 功能描述:创建空目录
命令格式
mkdir [选项] 目录名
选项
-p
递归建立所需目录-m 权限
建立目录的同时设置目录的权限
rmdir 命令
rmdir 命令删除空目录,
基本信息如下
- 命令名称:rmdir
- 英文原意:remove empty directories
- 所在路径:/bin/rmdir
- 执行权限:所有用户
- 功能描述:删除空目录
命令格式
rmdir [选项] 目录名
选项
-p
递归删除目录rmdir
命令的作用十分有限,只能删除空目录,一旦目录中有内容就会报错。所以一般不论删除的是文件还是目录,都会使用 rm 命令
文件操作命令
touch 命令
touch 命令创建空文件或修改文件时间,
基本信息如下
- 命令名称:touch
- 英文原意:change file timestamps
- 所在路径:/bin/touch
- 执行权限:所有用户
- 功能描述:创建文件或改文件时间戳
命令格式
touch [选项] 文件名
选项
-a
或–time=atime 或–time=access 或–time=use 更改存取时间为当前时间(access time)-m
或–time=mtime 或–time=modify 更该变动时间为当前时间(modify time)-t
日期时间: 使用指定的日期时间(格式:[[CC]YY]MMDDhhmm[.ss]),而非现在的时间-r
参考文件或目录: 把指定文件或目录的日期时间统统设成参考文件或目录的日期时间
cat 命令
cat 命令用来查看文件内容,进本信息如下:
- 命令名称:cat
- 英文原意:concatenate files and print on the standard output
- 所在路径:/bin/cat
- 执行权限:所有用户
- 功能描述:合并文件并打印输出到标准输出
命令格式
cat [选项] 文件名
选项
-E
列出每行结尾的回车符$-n
显示行号-T
把 Tab 键用^I 显示出来-v
列出特殊字符-A
相当于-vET 选项的整合,用于列出所有隐藏符号
more 命令
more 是分屏显示文件的命令,
基本信息如下
- 命令名称:more
- 英文原意:file perusal filter for crt viewin
- 所在路径:/bin/more
- 执行权限:所有用户
- 功能描述:分屏显示文件内容
命令格式
more [选项] 文件名
选项
-d
显示“[press space to continue,’q’ to quit.]”和“[Press ‘h’ for instructions]”;-c
不进行滚屏操作。每次刷新这个屏幕-s
将多个空行压缩成一行显示-u
禁止下划线-数字
指定每屏显示的行数+数字
从指定数字的行开始显示
more 命令比较简单,一般不用什么选项,命令会打开一个交互界面,可以识别一些交互命令。常用的交互命令如下:
空格键
向下翻页B 键
向上翻页/字符串
搜索指定的字符串q
退出
less 命令
less 命令和 more 命令类似,只是 more 命令是分屏显示,而 less 是分行显示命名,less 命令允许用户向前(PageUp 键)或向后(PageDown 键)浏览文件,
基本信息如下
- 命令名称:less
- 英文原意:opposite of more
- 所在路径:/usr/bin/more
- 执行权限:所有用户
- 功能描述:分行显示文件内容
命令格式
less [选项] 文件名
-e
文件内容显示完毕后,自动退出-f
强制显示文件-g
不加亮显示搜索到的所有关键词,仅显示当前显示的关键字,以提高显示速度-l
搜索时忽略大小写的差异-N
每一行行首显示行号-s
将连续多个空行压缩成一行显示-S
在单行显示较长的内容,而不换行显示-x数字
将 TAB 字符显示为指定个数的空格字符
head 命令
head 命令是用来显示文件开头内容的命令,
基本信息如下
- 命令名称:head
- 英文原意:output the first part files
- 所在路径:/usr/bin/head
- 执行权限:所有用户
- 功能描述:显示文件开头的内容
命令格式
head [选项] 文件名
-n
从文件开头开始,显示指定行数-v
显示文件名
tail 命令
tail 命令是用来显示文件结尾内容的命令
- 命令名称:tail
- 英文原意:output the last part files
- 所在路径:/usr/bin/tail
- 执行权限:所有用户
- 功能描述:显示文件结尾的内容
命令格式
tail [选项] 文件名
-n
行数:从文件结尾开始,显示指定行数-v
显示文件名-f
监听文件新增内容
ln 命令
ln 命令用来为文件创件链接,连接类型分为硬连接和符号连接(软链接)两种,
基本信息如下
- 命令名称:ln
- 英文原意:make links between file
- 所在路径:/bin/tail
- 执行权限:所有用户
- 功能描述:在文件之间建立链接
命令格式
ln [选项] 源文件 [目标文件]
选项
-s
建立软链接文件。如果不加’-s’选项,则建立硬链接文件-f
强行删除已存在的链接文件。如果链接文件已存在,则删除目标文件后再建立链接文件
源文件
指定链接的源文件。如果使用-s 选项创建软链接,则“源文件”可以是文件或者目录,创建硬链接时,则“源文件”参数只能是文件。(源文件最好用绝对路径名,这样可以在任何工作目录下进行符号链接,而当源文件用相对路径时,如果当前的工作路径与要创建的符号链接文件所在路径不同,就不能进行链接)
目标文件
指定源文件的目标链接文件,省略则在当前目录下新建与源文件名称相同的链接文件
拓展:硬链接与软链接的特征
硬链接特征:
硬链接和源文件实际上是同一个文件,不会创建新的文件(类似于 Java 中,一个对象有多个引用);而软链接会创建一个新文件来保存源文件的路径,从而间接读取或修改源文件内容
- 源文件和硬链接文件拥有相同的 Indoe 和 Block
- 修改任意一个文件,另一个都改变
- 删除任意一个文件,另一个都能使用
- 硬链接建立或删除,原文件连接数相应加一或减一
- 硬链接不能链接目录
- 硬链接不能跨分区
- 硬链接标记不清,很难确认硬链接文件位置,不建议使用
软链接特征:
- 软链接和源文件拥有不同的 Inode 和 Block
- 两个文件修改任意一个,另一个都改变
- 删除软链接,源文件不受影响;删除源文件,软链接不能使用
- 软链接建立或删除,原文件链接数不变
- 软链接可以链接目录
- 软链接可以跨分区
- 软链接特征明显,建议使用软链接
- 软链接没有实际数据,只是保存源文件的 Inode,不论源文件多大,软链接大小不变
- 软链接的权限是最大权限 lrwxrwxrwx.,但是由于没有实际数据,最终访问时需要参考源文件权限
文件和目录都能操作的命令
rm 命令
rm 是最强大的删除命令,不仅可以删除文件,也可以删除目录,
基本信息如下
- 命令名称:rm
- 英文原意:remove files or directories
- 所在路径:/bin/rm
- 执行权限:所有用户
- 功能描述:删除文件或目录
命令格式
rm [选项] 文件或目录
选项
-f
强制删除-i
交互删除,在删除之前会询问用户-r
递归删除,可以删除目录
cp 命令
cp 命令用于复制文件或目录,基本信息入下:
- 命令名称:cp
- 英文原意:copy files and directories
- 所在路径:/bin/cp
- 执行权限:所有用户
- 功能描述:复制文件或目录
命令格式
cp [选项] 源文件 目标文件
选项
-d
如果文件为软链接(对硬链接无效),则复制出的目标文件也为软链接-i
询问,如果目标文件已经存在,则会询问是否覆盖-p
复制后目标文件保留源文件的属性(包括所有者、所有组、权限和时间)-r
递归复制,用于复制目录-a
相当于-dpr 选项的集合
mv 命令
mv 命令用来剪贴文件或目录,
基本信息如下
- 命令名称:mv
- 英文原意:move(rename) files
- 所在路径:/bin/mv
- 执行权限:所有用户
- 功能描述:移动文件或目录
命令格式
cp [选项] 源文件 目标文件
选项
-f
强制覆盖,如果目标文件已经存在,则不询问直接强制覆盖-i
交互模式,如果目标文件已经存在,则询问用户是否覆盖(默认选项)-v
显示详细信息
stat 命令
stat 命令是查看文件详细的命令,
基本信息如下
- 命令名称:stat
- 英文原意:display file or file system status
- 所在路径:/usr/bin/stat
- 执行权限:所有用户
- 功能描述:显示文件或文件系统的详细信息
命令格式
stat [选项] 文件名
选项
-f
显示文件系统状态而非文件状态-t
以简洁方式输出信息
基本权限管理
权限介绍
使用 ls 命令时,长格式显示的第一列就是文件的权限,例如:
1 | [root@localhost ~]# ls -l install.log |
第一列的权限位(-rw-r–r–.)如果不计最后的 “.” (这个点代表受 SELinux 安全上下文保护,这里暂时忽略不做介绍),则共 10 位,这 10 位权限位的含义如下图所示:
- 第 1 位:代表文件类型。Linux 不像 Windows 使用扩展名表示文件类型,而是使用权限位的第一位表示文件类型。虽然 Linux 文件的种类不像 Windows 中那么多,但是分类也不少,详细情况可以使用“info ls” 命令查看。这里列出一些常见的文件类型:
-
普通文件d
目录文件。Linux 中一切皆文件,所以目录也是文件的一种l
软链接文件b
块设备文件。这是一种特殊设备文件,存储设备都是这种文件,如分区文件/dev/sda1 就是这种文件c
字符设备文件。这也是特殊设备文件,输入设备一般都是这种文件,如鼠标、键盘等p
管道符文件。这是一种非常少见的特殊设备文件。s
套接字文件。这也是一种特殊设备文件,一些服务支持 socket 访问就会产生这样的文件
- 第 2~4 位:代表文件所有者的权限
r
代表 read,是读取权限w
代表 write,是写权限x
代表 execute,是执行权限
- 第 5~7 位:代表文件所属组的权限,同样拥有“rwx”权限
- 第 8~10 位:代表文件其他人的权限,同样拥有“rwx”权限
权限含义的解释
读、写、执行权限对文件和目录的作用是不同的。
权限对文件的作用
- 读(r):对文件有读权限,代表可以读取文件中的数据。如果把权限对应到命令上,那么一旦对文件有读权限,就可以对文件执行 cat、more、less、head、tail 等文件查看命令
- 写(w):对文件有写权限,代表可以修改文件中的数据。如果把权限对应到命令上,那么一旦对文件有写权限,就可以对文件执行 vim、echo 等修改文件数据的命令。注意:对文件有写权限,是不能删除文件本身的,只能修改文件中的数据,如果想要删除文件,则需要对文件的上级目录拥有写权限。
- 执行(x):对文件有执行权限,代表文件可以运行。在 Linux 中,只要文件有执行权限,这个文件就是执行文件了,只是这个文件到底能不能正确执行,不仅需要看执行权限,还要看文件的代码是不是正确的语言代码。对文件来说,执行权限是最高权限
权限对目录的作用
- 读(r):对目录有读权限,代表可以查看目录下的内容,也就是可以查看目录下有哪些文件和子目录。如果包权限对应到命令上,那么一旦对目录拥有了读权限,就可以在目录下执行 ls 命令查看目录下的内容了
- 写(w):对目录有写权限,代表可以修改目录下的数据,也就是可以在目录中新建、删除、复制、剪贴子文件或子目录。如果把权限对应到命令上,那么一旦对目录拥有了写权限,就可以在目录下执行 touch、rm、cp、mv 等命令。对目录来说,写权限是最高权限
- 执行(x):目录是不能运行的,那么对目录拥有执行权限,代表可以进入目录。如果把权限对应到命令上,那么一旦对目录拥有了执行权限,就可以对目录执行 cd 命令进入目录
chmod 命令
chmod 用来修改文件的权限,
基本信息如下
- 命令名称:chmod
- 英文原意:change file mode bits
- 所在路径:/bin/chmod
- 执行权限:所有用户
- 功能描述:修改文件的权限模式
命令格式
chmod [选项] 权限模式 文件或目录
选项
-R
递归设置权限,也就是给予目录中的所有文件设定权限--reference=RFILE
使用参考文件或参考目录 RFILE 的权限来设置目标文件或目录的权限。
chmod 命令的权限模式分为符号组合和八进制数组合
符号组合的格式是[ugoa][+-=][permission]],也就是[用户身份][赋予方式][权限]]的格式。
- 用户身份
u
代表所有者(user)g
代表所属组(group)o
代表其他人(other)a
代表全部身份(all)
- 赋予方式
+
加入权限 -:减去权限=
设置权限
- 权限
r
读取权限(read)w
写权限(write)x
执行权限(execute)
八进制数组合的格式是[0-7][0-7][0-7]三位数字组成(每一位数字都是权限之和),第一位是所有者权限,第二位是所属组权限,第三位其他人权限
r
读取权限对应的数字是 4w
写权限对应的数字是 2x
执行权限对应的数字是 1
例如读写权限 rw 八进制数表示 6
示例
1 | # 添加组用户的写权限。 |
chown 命令
chown 命令用来修改文件和目录的所有者和所属组,
基本信息如下
- 命令名称:chown
- 英文原意:change file owner and group
- 所在路径:/bin/chown
- 执行权限:所有用户
- 功能描述:修改文件和目录的所有者和所属组
命令格式
chown [选项] 所有者[:所属组] 文件或目录
选项
-R
递归设置权限,也就是给予子目录的所有文件设置权限- 当省略 “:所属组” ,仅改变文件所有者
注意:普通用户不能修改文件的所有者,哪怕自己是这个文件的所有者也不行。普通用户可以修改所有者是自己的文件权限。
umask 命令
umask 命令用来显示或设置创建文件或目录的权限掩码。
我们需要先了解一下新建文件和目录的默认最大权限,对于文件来讲,新建文件的默认最大权限是 666,没有执行权限,只是因为执行权限对文件来讲比较危险,不能再新建文件的时候默认赋予,而必须通过用户手工赋予;对于目录来讲,新建目录的默认最大权限是 777,这是因为对目录而言,执行权限仅仅代表进入目录,所以即使新建目录时直接默认赋予也没有什么危险。
按照官方的标准算法,umask 默认权限需要使用二进制进行逻辑与和逻辑非联合运算才可以得到正确的新建文件和目录的默认权限,这种方法既不好计算也不好理解,不推荐。我们这里按照权限字母来讲解 umask 权限的计算方。我们就按照默认的 umask 值是 0022(等效于 022)分别来计算一下新建文件和目录的默认权限,
- 文件的默认权限最大只能是 666,而 umask 的值是 022,则 rw-rw-rw- 减去 —-w–w-等于 rw-r–r–,所以新建文件的默认权限是 rw-r–r–
- 目录的默认权限最大是 777,而 umask 的值是 022,则 rwxrwxrwx 减去 —-w–w-等于 rwxr-xr-x,所以新建目录的默认权限是 rwxr-xr-x
- 同理,如果 umask 的值是 033,新建文件的默认权限为 rw-rw-rw- 减去 —-wx-wx 等于 rw-r–r–
命令格式
umask [选项] [模式]
选项
-p
输出的权限掩码可直接作为指令来执行-S
以符号组合的方式输出权限掩码,不使用该选项时以八进制数的形式输出
示例
1 | # 以八进制数的形式输出权限掩码 |
帮助命令
man 命令
man 命令是最常见的帮助命令,也是 Linux 最主要的帮助命令,
基本信息如下
- 命令名称:man
- 英文原意:format and display the on-line manual pages
- 所在路径:/usr/bin/chown
- 执行权限:所有用户
- 功能描述:显示连机帮助手册
命令格式
man [选项] [章节] 命令
选项
-f
查看命令有哪些章节的帮助和简短描述信息,等价于 whatis 指令-k
查看和命令相关的所有帮助
man
命令交互快捷键
上箭头
向上移动一行下箭头
向下移动一行PgUP
向上翻一页PgDn
向下翻一页g
移动到第一页G
移动到最后一页q
退出/字符串
从当前向下搜索字符串?字符串
从当前向上搜索字符串n
当搜索字符串时,可以用 n 键找到下一个字符串N
当搜索字符串时,使用 N 键反向查询字符串。也就是说,如果使用“/字符串”方式搜索,则 N 键表示向上搜索字符串;如果使用“?字符串”方式搜索,则 N 键表示向下搜索字符串
man
手册章节
1
用户在 shell 环境可操作的命令或执行文件2
系统内核可调用的函数与工具等3
一些常用的函数(function)与函数库(library),大部分为 C 的函数库(libc)4
设备文件说明,通常在/dev 下的文件5
配置文件或某些文件格式6
游戏帮助(个人版的 Linux 中是有游戏的)7
惯例与协议等,如 Linux 文件系统,网络协议,ASCII code 等说明8
系统管理员可用的管理命令9
跟 kernel 有关的文件
man
手册的格式
NAME
命令名称及功能简要说明SYNOPSIS
用法说明,包括可用的选项[]
可选内容<>
必选内容a|b
二选一{}
分组...
同意内容可出现多次
DESCRIPTION
命令功能的详细说明,可能包括每一个选项的意义OPTIONS
说明每一项的意义EXAMPLES
使用示例
* FILES
此命令相关的配置文件* AUTHOR
作者* COPYRIGHT
版本信息* REPORTTING BUGS
bug 信息
- SEE ALSO:参考其他帮助
示例
我们输入 man ls
,它会在最左上角显示“LS(1)”,在这里,“LS”表示手册名称,而“(1)”表示该手册位于第一节章,同样,我们输 man ifconfig 它会在最左上角显示“IFCONFIG(8)”。也可以这样输入命令:“man [章节号] 手册名称”。
man
是按照手册的章节号的顺序进行搜索的,比如:man sleep
只会显示 sleep 命令的手册,如果想查看库函数 sleep,就要输入:man 3 sleep
info 命令
info 命令的帮助信息是一套完整的资料,每个单独命令的 man 帮助信息只是这套完整资料的某一个区段(节点),
基本信息如下
- 命令名称:info
- 英文原意:info
- 所在路径:/usr/bin/info
- 执行权限:所有用户
- 功能描述:显示一套完整的帮助信息资料
命令格式
info [选项] 参数
选项:
-d
添加包含 info 格式帮助文档的目录-f
指定要读取的 info 格式的帮助文档-n
指定首先访问的 info 帮助文件的节点-o
输出被选择的节点内容到指定文件
- 参数:指定需要获得帮助的主题,可以是指令、函数以及配置文件
info 命令交互快捷键
上箭头
向上移动一行下箭头
向下移动一行PgUP
向上翻一页PgDn
向下翻一页Tab
在有“*”符号的节点间切换回车
进入有“*” 符号的子页面,查看详细帮助信息u
进入上一层信息(回车是进入下一层信息)q
退出 info 帮助信息n
进入下一小节信息p
进入上一下节信息?
查看帮助信息
help 命令
help 命令只能获取 shell 内置命令的帮助,
基本信息如下
- 命令名称:help
- 英文原意:help
- 所在路径:shell 内置命令
- 执行权限:所有用户
- 功能描述:显示 shell 内置命令的帮助。可以使用 shell 内置命令 type 来区分内置命令与外部命令,对于外部命令的帮助信息只能使用 man 或者 info 命令查看
命令格式
help [选项] 内置命令
选项
- -d:显示内建命令的简要描述。
- -m:按照 man 手册的格式输出内置命令的帮助信息。
- -s:仅输出内建命令的命令格式。
示例
1 | # 以man手册的格式查看内置命令type的帮助信息 |
--help 选项
绝大多数命令都可以使用–help 选项来查看帮助,者也是一种获取帮助的方法。例如 ls –help,这种方法非常简单,输出的帮助信息基本上是 man 命令的信息简要版
搜索命令
whereis 命令
whereis 是搜索命令的命令,也就是说 whereis 不能搜索普通文件,而只能搜索系统命令,
基本信息如下
- 命令名称:whereis
- 英文原意:locate the binary,source,and manual page files for a command
- 所在路径:/usr/bin/whereis
- 执行权限:所有用户
- 功能描述:查找二进制命令、源文件和帮助文档的路径
命令格式
whereis [选项] 参数
选项
-b
只查找二进制文件-B 目录
只在设置的目录下查找二进制文件-m
只查找说明文件-M 目录
只在设置的目录下查找说明文件-s
只查找原始代码文件-S 目录
只在设置的目录下查找原始代码文件-f
不显示文件名前的路径名称
which 命令
which 也是搜索系统命令的命令,和 whereis 的区别在于,whereis 命令可以在查找二进制命令的同时,查找帮助文档的位置,而 which 命令在查找到二进制命令的同时,如果这个命令有别名,则还可以查到别名命令。
基本信息如下
- 命令名称:which
- 英文原意:shows the full path of (shell) commands
- 所在路径:/usr/bin/which
- 执行权限:所有用户
- 功能描述:列出二进制命令路径和别名。which 只会在环境变量$PATH 设置的目录里查找符合条件的命令
命令格式
which [选项] 参数
find 命令
find 命令用来在指定目录下查找文件,
基本信息如下
- 命令名称:find
- 英文原意:search for files in a directory hierarchy
- 所在路径:/bin/find
- 执行权限:所有用户
- 功能描述:在指定目录中搜索文件
命令格式
find [搜索路径] [选项]
- 搜索路径:省略则默认为当目录,相当于 “find .”
选项
-name 范本样式
按照文件名称搜索,支持通配符模糊查询-iname 范本样式
此参数的效果和指定“-name”参数类似,但忽略字符大小写的差别-inum inode 编号
查找符合指定的 inode 编号的文件或目录-path 范本样式
查找路径包含范本样式的文件或目录-regex 范本样式
正则表达式搜索-iregex 范本样式
同”-regex”,忽略大小写-size [+|-]文件大小[cwbkMG]
查找符合指定的文件大小的文件- “+” 的意思是搜索比指定大小还要大的文件,”-“ 的意思是搜索比指定大小还要小的文件
- “cwbkMG”是单位,c——字节,w——字(2 字节),b——块(512 字节),k——千字节,M——兆字节,G——吉字节。如果不写单位默认是 b
-atime [+|-]天数
按照文件最后一次访问时间搜索,单位每天- “+”、”-“的含义,例如”5”表示恰好 5 天前的那一天,”+5”超过 5 天前的时间,”-5”5 天内的时间。(以下按时间搜索选项中”+”、”-“含义相同)
-mtime [+|-]天数
按照文件数据最后一次修改时间搜索,单位每天-ctime [+|-]天数
按照文件元数据(如权限等)最后一次修改时间搜索,单位每天-amin [+|-]分钟数
按照文件最后一次访问时间搜索,单位每分钟-mmin [+|-]分钟数
按照文件数据最后一次修改时间搜索,单位每分钟-cmin [+|-]分钟数
按照文件元数据(如权限等)最后一次修改时间搜索,单位每分钟-perm [+|-]权限数值
查找符合指定的权限数值的文件或目录。例如,权限数值为”766”表示权限恰好等于 766,”-766”表示文件权限必须全部包含- 766,”+766”表示文件权限包含 766 任意一个权限-uid 用户 ID
查找所有者是指定用户 ID 的文件-user 用户名
查找所有者是指定用户名的文件-gid 组 ID
查找所有组是指定组 ID 的文件-group 组名
查找所有组是指定组名的文件-nouser
查找没有所有者的文件- 按照所有者和所有组搜索时,”-nouser”选项比较常用,主要用于查找垃圾文件。没有所有者的文件比较少见,那就是外来文件,比如光盘和 U 盘的文件是由 Windows 复制的,在 Linux 中查看就是没有所有者的文件,再比如手工源码包安装的文件也可能没有所有者
-type 文件类型
只寻找符合指定的文件类型的文件- f——普通文件,l——符号连接,d——目录,c——字符设备,b——块设备,s——套接字,p——Fifo
-empty
查找文件大小为 0 的文件-maxdepth 目录层级数
设置搜索的最大目录层级-mindepth 目录层级
设置搜索的最小目录层级-exec 执行指令
把 find 命令查找结果交由”-exec”调用的命令来处理- 格式 find [搜索路径] [选项] -exec 命令 {} ;, 其中”{}”代表 find 命令的查询结果
-ok 执行指令
此参数的效果和指定“-exec”类似,但在执行指令之前会先询问用户是否执行-prune
不寻找字符串作为寻找文件或目录的范本样式-a
and 逻辑与-o
or 逻辑或-not
not 逻辑非
示例
1 | #==================根据文件名或者正则表达式进行匹配===================== |
locate 命令
locate 命令其实是 find -name
的另一种写法,但是要比后者快得多,原因在于它不搜索具体目录(find 是去硬盘找),而是搜索一个数据库/var/lib/mlocate/mlocate.db
,这个数据库中含有本地所有文件信息。Linux 系统自动创建这个数据库,并且每天自动更新一次,所以使用 locate 命令查不到最新变动过的文件,为了避免这种情况,可以在使用 locate
之前,先使用 updatedb
命令手动更新数据库。locate 命令
基本信息如下
- 命令名称:locate
- 英文原意:find files by name
- 所在路径:/usr/bin/locate
- 执行权限:所有用户
- 功能描述:按照文件名搜索文件
命令格式
locate [选项] 文件名
选项
- -d 指定资料库的路径。默认是/var/lib/mlocate/mlocate.db
- -n 至多显示 n 个输出
数据库配置文件(/etc/updatedb.conf)内容说明:
1 | [root@localhost ~]# cat /etc/updatedb.conf |
locate 优缺点:
优点:按照数据库搜索,搜索速度快,消耗资源小
缺点:只能按照文件名来搜索文件,而不能执行更复杂的搜索,比如按照权限、大小、修改时间等
grep 命令
grep 命令的作用是在文件中提取和匹配符合条件的字符串行,是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。
基本信息如下
- 命令名称:grep
- 英文原意:global search regular expression(RE) and print out the line
- 所在路径:/usr/bin/grep
- 执行权限:所有用户
- 功能描述:全面搜索正则表达式并把行打印出来
命令格式
grep [选项] 搜索内容 文件名
选项
-i
忽略大小写-n
输出行号-v
反向查找-d 动作
当指定要查找的是目录而非文件时,必须使用这项参数,否则 grep 指令将回报信息并停止动作。动作包含:read、recurse、skip-R 或-r
此参数的效果和指定“-d recurse”参数相同,递归查找目录下的所有文件内容--color=auto
搜素出的关键字用颜色高亮显示
示例
1 | #在文件中搜索一个单词,命令会返回一个包含“match_pattern”的文本行: |
find也是搜索命令,那么find与grep命令有什么区别呢?
find:find 命令用于在系统中搜索符合条件的文件名,如果需要模糊查询,则使用通配符进行匹配,通配符是完全匹配。(find 命令也可以通过”-regex”选项,把匹配规则转为正则表达式规则)
grep:grep 命令用于在文件中搜索符合条件的字符串,如果需要模糊查询,则使用正则表达式进行匹配,正则表达式是包含匹配。
通配符与正则表达式的区别
通配符:一般用于匹配文件名,完全匹配
- ?:匹配一个任意字符
- *:匹配 0 个或多个任意字符,也就是可以匹配任何内容
- []:匹配中括号里任意一个字符。例如,[abc]代表一定匹配一个字符,或是 a,或是 b,或是 c
- [-]:匹配中括号里任意一个字符,”-“代表一个范围。例如,[a-z]代表匹配一个小写字母
- [^]:逻辑非,表示匹配不是中括号里的一个字符。例如,[^0-9]代表匹配一个不是数字的字符
正则表达式:一般用于匹配字符串
- ?:匹配前一个字符重复 0 次或 1 次
- *:匹配前一个字符重复 0 次或多次
- []:匹配中括号里任意一个字符。例如,[abc]代表一定匹配一个字符,或是 a,或是 b,或是 c
- [-]:匹配中括号里任意一个字符,”-“代表一个范围。例如,[a-z]代表匹配一个小写字母
- [^]:逻辑非,表示匹配不是中括号里的一个字符。例如,[^0-9]代表匹配一个不是数字的字符
- ^:匹配行首
- $:匹配行尾
| 管道符
命令格式
命令 1 | 命令 2
“|”管道符的作用是把命令 1 的正确输出作为命令 2 的操作对象
示例
把”ll”命令的输出作为”more”命令的操作对象
我们经常使用 “ll” 命令查看文件的长格式,不过在有些目录中文件很多,不如/etc/目录使用 “ll” 命令显示的内容就非常多,只能看到最后的内容而不能看到前面输出的内容,这时我们马上想到 “more” 命令可以分屏显示文件内容,一种笨方法是:
1 | # 用输出重定向,把"ll"命令的输出保存到/root/testfile |
这样操作实在是不方便,这时可以利用管道符,命令如下:
1 | # 把"ll"命令的输出作为"more"命令的操作对象 |
在”ll”命令输出内容中搜索 yum 的文件名
1 | # 在"ll"命令输出内容中搜索 yum 的文件名 |
统计具体的网络连接数量(”grep”命令筛选,”wc”命令统计)
1 | #统计具体的网络连接数量("grep"命令筛选,"wc"命令统计) |
alias 命令
alias 命令用来设置指令的别名,我们可以使用该命令可以将一些较长的命令进行简化。
alias 基本使用方法
- 打印已经设置的命令别名
- alias 或 alias -p
- 给命令设置别名
- 格式:alias 新的命令=’实际命令’。必须使用单引号’’实际命令引起来,防止特殊字符导致错误
- 例如:alias l=’ls -lsh’,现在只用输入 “l” 就可以列出目录了,相当于输入”ls -lsh”;alias ser=’service network restart’,现在输入”ser”就可以重启网络服务了
直接在 shell 里设定的命令别名,在终端关闭或者系统重新启动后都会失效,如何才能永久有效呢?
使用编辑器打开~/.bashrc,在文件中加入别名设置,如:alias rm=’rm -i’,保存后执行 source ~/.bashrc,这样就可以永久保存命令的别名了。因为修改的是当前用户目录下的~/.bashrc 文件,所以这样的方式只对当前用户有用。如果要对所有用户都有效,修改/etc/bashrc 文件就可以了。
压缩和解压缩命令
在 Linux 中可以识别的常见压缩格式有十几种,比如”.zip”、”.gz”、”.bz2”、”.tar”、”.tar.gz”、”.tar.bz2”等。减少文件大小有两个明显的好处,一是可以减少存储空间,二是通过网络传输文件时,可以减少传输的时间
“.zip” 格式
“.zip”是 Windows 中最常见的压缩格式,Liunx 也可以正确识别”.zip”格式,这可以方便地和 Windows 系统通用压缩文件。
zip 命令
zip 命令就是”.zip”格式的压缩命令,
基本信息如下
- 命令名称:zip
- 英文原意:package and compress(archive) files
- 所在路径:/usr/bin/zip
- 执行权限:所有用户
- 功能描述:压缩文件和目录
命令格式
zip [选项] 压缩包名 源文件或目录
选项
-r
压缩目录递归处理,将指定目录下的所有文件和子目录一并处理
unzip 命令
unzip 命令就是”.zip”格式的解压缩命令,
基本信息如下
- 命令名称:unzip
- 英文原意:list, test and extract compressed files in a zip archive
- 所在路径:/usr/bin/unzip
- 执行权限:所有用户
- 功能描述:列表、测试和提取压缩文件中的文件
命令格式
unzip [选项] 压缩包名
选项
-d
指定解压的位置
“.gz” 格式
“.gz”格式是 Linux 中最常见的压缩格式。
gzip 命令
gzip 命令是”.gz”格式的压缩和解压缩命令,既方便又好用。gzip 不仅可以用来压缩大的、较少使用的文件以节省磁盘空间,还可以和 tar 命令一起构成 Linux 操作系统中比较流行的压缩文件格式。据统计,gzip 命令对文本文件有 60%~ 70%的压缩率。
注意:gzip 不会打包文件,压缩的过程源文件会对应变为”.gz”格式的压缩文件(源文件被删除),解压缩的过程将”.gz”格式的压缩文件再恢复成对应的源文件。
基本信息如下
- 命令名称:gzip
- 英文原意:compress or expand files
- 所在路径:/bin/gzip
- 执行权限:所有用户
- 功能描述:压缩或解压缩 “.gz” 格式的文件或目录
命令格式
gzip [选项] 源文件
选项
-d
执行解压缩-r
递归处理,将指定目录下的所有文件及子目录一并处理-c
将压缩数据输出到标准输出中,可以保留源文件- 使用”-c”选项,压缩数据会直接输出到屏幕上,为了不让压缩数据输出到屏幕上而是重定向到压缩文件中,并且同时保留源文件,命令可以这样写:gzip -c abc > abc.gz
-l
列出压缩文件的相关信息
gunzip 命令
gunzip 命令用来解压缩 “.gz” 格式的文件(即使用 “gzip” 命令压缩的文件),作用相当于 “gzip -d 压缩文件”,因此不论是压缩或解压缩,都可通过 “gzip” 指令单独完成。
基本信息如下
- 命令名称:gunzip
- 英文原意:expand files
- 所在路径:/bin/gunzip
- 执行权限:所有用户
- 功能描述:解压缩”.gz” 格式的文件或目录
命令格式
gunzip [选项] 压缩文件
选项
-r
递归处理,将指定目录下的所有文件及子目录一并处理-c
把解压后的文件数据输出到标准输出中,可以保留压缩文件-l
列出压缩文件的相关信息
“.bz2” 格式
“.bz2” 格式是 Linux 的另一种压缩格式,从理论上来讲,”.bz2” 格式的算法更新进、压缩比更好;而 “.gz” 格式相对来讲压缩的时间更快
bzip2 命令
bzip2 命令是 “.bz2” 格式文件的压缩和解压缩命令。注意:”bzip2”不能用来压缩目录。
基本信息如下
- 命令名称:bzip2
- 英文原意:a block-sorting file compressor
- 所在路径:/usr/bin/bzip2
- 执行权限:所有用户
- 功能描述:压缩或解压缩 “.bz2” 格式的文件
命令格式
bzip2 [选项] 源文件
-选项
-d
执行解压缩-k
压缩或解压缩后,会删除原始文件,若要保留原始文件,请使用此参数-f
在压缩或解压缩时,若输出文件与现有文件同名,强制覆盖现有文件-c
将压缩与解压缩的数据输出到标准输出中
bunzip2 命令
bunzip2 命令用来解压缩 “.bz2” 格式的文件(即使用 “bzip2” 命令压缩的文件),作用相当于 “bzip2 -d 压缩文件”,因此不论是压缩或解压缩,都可通过 “bzip2” 指令单独完成。
基本信息如下
- 命令名称:bunzip2
- 英文原意:a block-sorting file compressor
- 所在路径:/usr/bin/bunzip2
- 执行权限:所有用户
- 功能描述:解压缩 “.bz2” 格式的文件
命令格式
bunzip2 [选项] 压缩文件
选项
-k
bzip2 在解压缩后,会删除原始压缩文件,若要保留原始压缩文件,请使用此参数-f
解压缩时,若输出的文件与现有文件同名时,强制覆盖现有的文件-c
将解压缩的数据输出到标准输出中
“.tar”、”.tar.gz”、”.tar.bz2” 格式
tar 命令可以把一大堆的文件和目录全部打包成一个文件,这对于备份文件或将几个文件组合成为一个文件以便于网络传输是非常有用的。
注意:打包和压缩是两个不同的概念,打包是指将一大堆文件或目录变成一个总的文件;压缩则是将一个大的文件通过一些压缩算法变成一个小文件。
为什么要区分这两个概念呢?这源于 Linux 中很多压缩程序(gzip、bzip2)只能针对一个文件进行压缩,这样当你想要压缩一大堆文件时,你得先将这一大堆文件先打成一个包(tar),然后再用压缩程序进行压缩。tar 命令
基本信息如下
- 命令名称:tar
- 英文原意:tar
- 所在路径:/usr/bin/tar
- 执行权限:所有用户
- 功能描述:打包与解打包文件
命令格式
打包:tar -c [选项] [-f 包文件名] 源文件或目录
解打包:tar -x [选项] -f 包文件名
选项
-c
执行打包-x
执行解打包-z
支持压缩和解压缩 “.tar.gz” 格式文件-j
支持压缩和解压缩 “.tar.bz2” 格式文件-C
目录路径 指定解打包位置-f
包文件名 指定打包文件名(.tar)或压缩包文件名(.tar.gz、.tar.bz2)。(执行打包时不写此选项,会默认把打包数据输出到屏幕)-v
显示打包或解打包过程-t
测试,就是不解打包,只是查看包中有哪些文件
示例
1 | #=======================".tar"格式========================= |
关机和重启命令
sync 数据同步
sync 命令用于强制被改变的内容立刻写入磁盘。在 Linux/Unix 系统中,在文件或数据处理过程中一般先放到内存缓冲区中,等到适当的时候再写入磁盘,以提高系统的运行效率。sync 命令则可用来强制将内存缓冲区中的数据立即写入磁盘中。用户通常不需执行 sync 命令,系统会自动执行 update 或 bdflush 操作,将缓冲区的数据写入磁盘。只有在 update 或 bdflush 无法执行或用户需要非正常关机时,才需手动执行 sync 命令。
基本信息如下
- 命令名称:sync
- 英文原意:flush file system buffers
- 所在路径:/bin/sync
- 执行权限:所有用户
- 功能描述:刷新文件系统缓冲区
命令格式
sync [选项]
shutdown 命令
shutdown 命令用来系统关机。shutdown 指令可以关闭所有程序,并依用户的需要,进行重新开机或关机的动作。基本信息如下:
- 命令名称:shutdown
- 英文原意:bring the system down
- 所在路径:/sbin/shutdown
- 执行权限:超级用户
- 功能描述:关机和重启
命令格式
shutdown [选项] 时间 [警告信息]
选项
-c
取消将要执行的 shutdown 命令-h
系统关机-r
系统重启
时间
now 立即执;hh:mm 指定确定时间点执行;+分钟数 延迟指定分钟后执行
警告信息
执行指令时,同时送出警告信息给登入用户
示例
1 | #立即关机 |
reboot 命令
reboot 命令用来重新系统,命令也是安全的,而且不需要过多的选项
- 命令名称:reboot
- 英文原意:reboot
- 所在路径:/sbin/reboot
- 执行权限:超级用户
- 功能描述:重启系统
命令格式
reboot [选项]
选项
-d
重新开机时不把数据写入记录文件/var/tmp/wtmp。本参数具有“-n”参数效果;-f
强制重新开机,不调用 shutdown 指令的功能;-i
在重开机之前,先关闭所有网络界面;-n
重开机之前不检查是否有未结束的程序;-w
仅做测试,并不真正将系统重新开机,只会把重开机的数据写入/var/log 目录下的 wtmp 记录文件。
halt 和 poweroff 命令
halt 和 poweroff 这两都是系统关机命令,直接执行即可。但是两个命令不会完整关闭和保存系统的服务,不建议使用。
init 命令
init 命令是修改 Linux 运行级别的命令,是 Linux 下的进程初始化工具,init 进程是所有 Linux 进程的父进程,它的进程号为 1。也可以用于关机和重启,这个命令并不安全,不建议使用
命令格式
init [选项] 系统运行级别
选项
-b
不执行相关脚本而直接进入单用户模式-s
切换到单用户模式
示例
1 | #关机,也就是调用系统的0级别 |
Linux 有 7 个系统运行级别
运行级别 | 含义 |
---|---|
0 | 关机 |
1 | 单用户模式,可以想象为 Windows 的安全模式,主要用于系统修复 |
2 | 不完全的命令模式,不含 NFS 服务 |
3 | 完全的命令模式,就是标准字符界面 |
4 | 系统保留,没有用到 |
5 | 图形模式 |
6 | 重启动 |
runlevel
命令可查看当前系统运行级别
常用网络命令
配置 IP 地址
IP 地址是计算机在互联网中唯一的地址编码,每台计算机如果需要接入网络和其他计算机进行数据通信,就必须配置唯一的 IP 地址
IP 地址的配置有两种方法
setup 工具
手工修改网卡配置文件
编辑网卡文件,vi /etc/sysconfig/network-scripts/ifcfg-eth0,”ifcfg-eth0”是第一块网卡,第二块网卡则为”ifcfg-eth1”,以此类推。
网卡文件内容配置项如下
- DEVICE=eth0 #网卡设备名
- BOOTPROTO=static #[none|static|bootp|dhcp](引导时不使用协议|静态分配|BOOTP 协议|DHCP 协议)
- HWADDR=00:15:5D:00:46:83 #MAC 地址
- UUID=5753e2ed-add1-4d1c-8a69-21a89647b050 # 唯一识别码
- NM_CONTROLLED=yes #是否可以由 Network Manager 图形管理工具托管
- ONBOOT=yes #[yes|no],是否随网络服务启动,如果配置”no”,使用”ifconfig”命令时看不到该网卡
- TYPE=Ethernet # 网络类型
- IPADDR=192.168.1.10 #IP 地址
- NETMASK=255.255.255.0 #子网掩码
- NETWORK=192.168.1.0 #网络地址
- BROADCAST=192.168.1.255 #广播地址
- GATEWAY=192.168.1.1 #网关地址
- DNS1=202.109.14.5 #首选 DNS 服务地址
- DNS2=219.141.136.10 #备用 DNS 服务地址
- USERCTL=no #[yes|no](非 root 用户是否可以控制该设备)
查看 DNS 服务配置文件,vim /etc/resolv.conf,里面的内容是系统自动生成的,一般不需要修改
重启网络服务,service network restart 或 /etc/init.d/network restart
注意:使用虚拟机克隆时,UUID 可能复制的是一样的,导致网络服务启动失败,需要重置 UUID 值:
- 编辑网卡文件,删除 UUID 和 MAC 地址
- 删除 MAC 地址和 UUID 绑定文件,rm -rf /etc/udev/rules.d/70-persistent-net.rules
- 重启系统
ifconfig 命令
ifconfig 被用于配置和显示 Linux 内核中网络接口的网络参数。用 ifconfig 命令配置的网卡信息,在网卡重启后机器重启后,配置就不存在,要想将上述的配置信息永远的存的电脑里,那就要修改网卡的配置文件了。
基本信息如下
- 命令名称:ifconfig
- 英文原意:configure a network interface
- 所在路径:/sbin/ifconfig
- 执行权限:超级用户
- 功能描述:配置网络接口
命令格式
ifconfig [参数]
参数
add 地址
设置网络设备 IPv6 的 ip 地址;del 地址
删除网络设备 IPv6 的 IP 地址;down
关闭指定的网络设备;<hw<网络设备类型><硬件地址>
设置网络设备的类型与硬件地址;io_addr I/O 地址
设置网络设备的 I/O 地址;irq IRQ 地址
设置网络设备的 IRQ;media 网络媒介类型
设置网络设备的媒介类型;mem_start 内存地址
设置网络设备在主内存所占用的起始地址;metric 数目
指定在计算数据包的转送次数时,所要加上的数目;mtu 字节
设置网络设备的 MTU;netmask 子网掩码
设置网络设备的子网掩码;tunnel 地址
建立 IPv4 与 IPv6 之间的隧道通信地址;up
启动指定的网络设备;IP 地址
指定网络设备的 IP 地址;网络设备
指定网络设备的名称。
ifconfig 命令最主要的作用就是查看 IP 地址的信息,直接输入 ifconfig 命令即可显示激活状态的网络设备信息:
1 | [root@localhost ~]# ifconfig |
内容说明:
- eth0 表示第一块网卡,其中 HWaddr 表示网卡的物理地址,可以看到目前这个网卡的物理地址(MAC 地址)是 00:16:3E:00:1E:51
- inet addr 用来表示网卡的 IP 地址,此网卡的 IP 地址是 10.160.7.81,广播地址 Bcast:10.160.15.255,掩码地址 Mask:255.255.240.0
- lo 是表示主机的回环地址,这个一般是用来测试一个网络程序,但又不想让局域网或外网的用户能够查看,只能在此台主机上运行和查看所用的网络接口。比如把 httpd 服务器的指定到回环地址,在浏览器输入 127.0.0.1 就能看到你所架 WEB 网站了,但只是本机能看得到,局域网的其它主机或用户无从知道
- 第一行:连接类型:Ethernet(以太网)HWaddr(硬件 mac 地址)
- 第二行:网卡的 IP 地址、子网、掩码
- 第三行:UP(代表网卡开启状态)RUNNING(代表网卡的网线被接上)MULTICAST(支持组播)MTU:1500(最大传输单元):1500 字节
- 第四、五行:接收、发送数据包情况统计
- 第七行:接收、发送数据字节数统计信息
示例
1 | #启动和关闭网卡eth0。关闭网卡eth0,ssh登陆linux服务器操作要小心,关闭了就不能开启了,除非你有多网卡 |
ping 命令
ping 命令是常用的网络命令,主要通过 ICMP 协议进行网络探测,测试网络中主机的通信情况。基本信息如下:
- 命令名称:ping
- 英文原意:send ICMP ECHO_REQUEST to network hosts
- 所在路径:/bin/ping
- 执行权限:所有用户
- 功能描述:向网络主机发送 ICMP 请求
命令格式
ping [选项] IP
选项
-b
用于对整个网段进行探测。IP 需要为广播地址-c 次数
设置完成要求回应的次数-s 字节数
设置数据包的大小
示例
1 | #探测整个网段中有多少主机是可以和本机通信的,而不是一个一个IP地址地进行探测 |
netstat 命令
netstat 是网络状态查看命令,既可以查看到本机开启的端口,也可以查看哪些客户端连接。在 CentOS 7.x 中 netstat 命令默认没有安装,如果需要使用,需要先安装 “net-snmp” 和 “net-tools” 软件包。基本信息如下:
- 命令名称:network
- 英文原意:print network connections, routing tables, interface statistics, masquerade connections, and mulicast memberships
- 所在路径:/bin/netstat
- 执行权限:所有用户
- 功能描述:打印网络连接、路由表、接口统计信息、伪装连接和多播成员身份
命令格式
netstat [选项]
选项
-a
列出所有网络状态,包括 Socket 程序-c 秒数
制定每隔几秒刷一次网络状态-n
使用 IP 地址和端口号显示,不使用域名与服务名-p
显示 PID 和程序-t
显示使用 TCP 协议端口的连接情况-u
显示使用 UDP 协议端口的连接情况-l
仅显示监听状态的连接-r
显示路由表
示例
查看本机开启的端口
这是本机最常用的方式,使用”-tuln”选项。因为使用了”-l”选项,所以只能看到监听状态的连接,而不能看到已经建立连接状态的连接,
1 | [root@localhost ~]# netstat -tuln |
这个命令输出内容较多,下面对每列进行说明:
- Proto:网络连接的协议,一般就是 TCP 协议或者 UDP 协议
- Recv-Q:接收队列。表示接收到的数据,已经在本地的缓冲中,但是还没有被进程取走
- Send-Q:发送队列。表示从本机发送,对方还没有收到的数据,依然在本地的缓冲中,一般是不具备 ACK 标志的数据包
- Local Address:本机的 IP 地址和端口号。
- Foreign Address:远程主机的 IP 地址和端口号。
- State:状态。常见的状态主要有以下几种:
- LISTEN:监听状态,只有 TCP 协议需要监听,而 UDP 协议不需要监听
- ESTABLISHED:已经建立连接的状态。如果使用“-l”选项,则看不到已经建立连接的状态
- SYN_SENT:SYN 发起包,就是主动发起连接的数据包
- SYN_RECV:接收到主动连接的数据包
- FIN_WAIT1:正在中断的连接
- FIN_WAIT2:已经中断的连接,但是正在等待对方主机进行确认
- TIME_WAIT:连接已经中断,但是套接字依然在网络中等待结束
- CLOSED:套接字没有被使用
- 在这些状态中,我们最常用的就是 LISTEN 和 ESTABLISHED 状态,一种代表正在监听,另一种代表已经建立连接
查看本机有哪些程序开启的端口
如果使用“-p”选项,查询结果会多出一列”PID/Program name”,则可以查看到是哪个程序占用了端口,并且可以知道这个程序的 PID
1 | [root@localhost ~]# netstat -tulnp |
查看所有连接
使用选项“-an”可以查看所有连接,包括监听状态的连接(LISTEN)、已经建立连接状态的
连接(ESTABLISHED)、Socket 程序连接等。因为连接较多,所以输出的内容有很多
1 | [root@localhost ~]# netstat -an |
从 “Active UNIX domain sockets” 开始,之后的内容就是 Socket 程序产生的连接,之前的内容都是网
络服务产生的连接。我们可以在“-an”选项的输出中看到各种网络连接状态,而之前的“-tuln”选项则只能看到监听状态的连接
write 命令
write 命令用于向指定登录用户终端上发送信息。通过 write 命令可传递信息给另一位登入系统的用户,当输入完毕后,键入 “回车” 表示发送,键入 “Ctrl+C” 表示信息结束。如果接收信息的用户不只登入本地主机一次,你可以指定接收信息的终端机编号。基本信息:
- 命令名称:write
- 英文原意:send a message to another user
- 所在路径:/usr/bin/write
- 执行权限:所有用户
- 功能描述:向其他用户发送消息
命令格式
write 用户名 [终端编号]
用户名
指定要接受信息的登录用户终端编号
指定接收信息的用户的登录终端,如果省略,且用户在多个终端登录,会发送给其中一个终端
wall 命令
wall 命令用于向系统当前所有打开的终端上输出信息,而 “write” 命令用于给指定用户发送消息。
命令格式
wall 消息
示例
1 | [root@localhost ~]# wall "I will be in 5 minutes to restart, please save your data" |
系统痕迹命令
系统中有一些重要的痕迹日志文件,如 /var/log/wtmp、 /var/run/utmp、 /var/log/btmp、/var/log/lastlog 等日志文件,如果你用 vim 打开这些文件,你会发现这些文件是二进制乱码。这是由于这些日志中保存的是系统的重要登录痕迹,包括某个用户何时登录了系统,何时退出了系统,错误登录等重要的系统信息。这些信息要是可以通过 vim 打开,就能编辑,这样痕迹信息就不准确,所以这些重要的痕迹日志,只能通过对应的命令来进行查看。
w 命令
w 命令是显示系统中正在登录的用户信息的命令,这个命令查看的痕迹日志是 “/var/run/utmp”。基础信息如下:
- 命令名称:w
- 英文原意:show who is logged on and what they are doing
- 所在路径:/usr/bin/w
- 执行权限:所有用户
- 功能描述:显示登录用户和他们正在做什么
命令格式
w [选项] [用户名]
选项
-h
不打印头信息;-u
当显示当前进程和 cpu 时间时忽略用户名;-s
使用短输出格式;-f
显示用户从哪登录;用户
仅显示指定用户
示例
1 | [root@localhost ~]# w |
说明:
- 第一行内容:
- 18:31:08:系统当前时间
- up 1 day, 16 min:系统的运行时间
- 3 users:当前登录终端数量
- load average: 0.00, 0.00, 0.00:系统在之前 1 分钟、5 分钟、15 分钟的平均负载。如果 CPU 是单核的,则这个数据超过 1 就是高负载;如果 CPU 是四核的,则这个数值超过 4 就是高负载
- 第二行内容:
USER
当前登录的用户TTY
登录的终端。tty1-6: 本地字符终端(alt+F1-6 切换),tty7: 本地图形终端(ctrl+F7 切换,必须安装启动图形界面),pts/0-255: 远程终端FROM
登录的 IP 地址,如果是本地终端,则是空LOGIN@
登录时间IDLE
用户空闲时间JCPU
所有的进程占用的 CPU 时间PCPU
当前进程占用的 CPU 时间WHAT
用户正在进行的操作
who 命令
who 命令和 w 命令类似,用于查看正在登录的用户,但显示的内容更加简单,也是查看 “/var/run/utmp” 日志。
命令格式
who [选项] [查询文件]
选项
-H
显示各栏位的标题信息列-q
只显示登入系统的帐号名称和总人数-w
显示用户的信息状态栏-u
显示闲置时间,若该用户在前一分钟之内有进行任何动作,将标示成”.”号,如果该用户已超过 24 小时没有任何动作,则标示出”old”字符串查询文件
指定要查询的文件,默认是/var/run/utmp
last 命令
last 命令查看系统所有登录过的用户信息,包括正在登录的用户和之前登录的用户,这个命令查看的是 “/var/log/wtmp” 痕迹日志文件
命令格式
last [选项] [用户|终端]
选项
-a
把从何处登入系统的主机名称或 ip 地址,显示在最后一行-d
将 IP 地址转换成主机名称-f 记录文件
指定记录文件-n 显示列数或-显示列数
设置列出名单的显示列数-R
不显示登入系统的主机名称或 IP 地址-x
显示系统关机,重新开机,以及执行等级的改变等信息用户|终端
显示指定的用户或终端
lastlog 命令
lastlog 命令是查看系统中所有用户最好一次的登录时间的命令,这个命令查看的是 “/var/log/lastlog” 痕迹日志文件
命令格式
lastlog [选项]
选项
-b 天数
显示指定天数前的登录信息-t 天数
显示指定天数以来的登录信息-u 用户名
显示指定用户的最近登录信息
lostb 命令
lastb 命令是查看错误登录的信息的,查看的是 “/var/log/btmp” 痕迹日志
命令格式
lostb [选项] [用户|终端]
选项
-a
把从何处登入系统的主机名称或 ip 地址显示在最后一行-d
将 IP 地址转换成主机名称-f 记录文件
指定记录文件-n 显示列数或-显示列数
设置列出名单的显示列数-R
不显示登入系统的主机名称或 IP 地址-x
显示系统关机,重新开机,以及执行等级的改变等信息用户|终端
显示指定的用户或终端