一、命令的基本格式
1. 命令的提示符
[root@localhost ~]#
- []:这是提示符的分隔符号,没有特殊含义。
- root:显示的是当前的登录用户,使用的是root用户登录。
- @:分隔符号,没有特殊含义。
- localhost:当前系统的简写主机名(完整主机名是localhost.localdomain)。
- ~:代表用户当前所在的目录,此例中用户当前所在的目录是家目录。
- #:命令提示符。超级用户是#,普通用户是$
PS1="\[\e[1;36m\][\[\e[1;32m\]\u@\[\e[0m\]\[\e[1;31m\]\h \e[0m\W\[\e[1;36m\]]\[\e[31m\]# \[\e[1;0m\]"
2. 命令的基本格式
[root@localhost ~]# 命令[选项] [参数]
[root@localhost ~]# ls -l
总用量 44
-rw-------. 1 root root 1207 1月14 18:18 anaconda-ks.cfg
#权限引用计数 所有者 所属组 大小 文件修改时间 文件名
3. 常用快捷键
Tab 键 | 命令或文件补全 |
---|---|
ctrl + A | 把光标移动到命令行开头。如果我们输入的命令过长,想要把光标移 动到命令行开头时使用。 |
ctrl + E | 把光标移动到命令行结尾。 |
ctrl + C | 强制终止当前的命令 |
ctrl + L | 清屏,相当于 clear 命令。 |
ctrl + U | 删除或剪切光标之前的命令。我输入了一行很长的命令,不用使用退 格键一个一个字符的删除,使用这个快捷键会更加方便 |
ctrl + K | 删除或剪切光标之后的命令 |
ctrl + Y | 粘贴 ctrl+U 剪切的内容。 |
ctrl + F | 光标向后移动一个字符 |
ctrl + B | 光标向前移动一个字符 |
ctrl + H | 光标向前删除一个字符 |
ctrl + D | 光标向后删除一个字符 |
二、目录操作命令
1. ls命令
主要作用是显示目录下的内容。
参数:
-a: 显示所有文件
--color=when: 支持颜色输出,when的值默认是always(总显示颜色),也可以是never(从不显示颜色)和auto(自动)
-d: 显示目录信息,而不是目录下的文件
-h: 人性化显示,按照我们习惯的单位显示文件大小
-i: 显示文件的i节点号
-l: 长格式显示
2. cd命令
作用:切换所在目录
绝对路径和相对路径
绝对路径:以跟目录为参照物,从根目录开始,一级一级进入目录
相对路径:以当前目录作为参照物,进行目录查找
用法:
cd 目录名称: 切换到你要进入的目录下
特殊符号 | 作用 |
---|---|
~ | 用户的家目录 |
- | 上一次所在目录 |
. | 当前目录 |
.. | 上级目录 |
3. pwd命令
作用:查询所在工作目录
[root@localhost ~]# pwd
/root
4. mkdir命令
作用:创建空目录
[root@localhost ~]# mkdir Test
[root@localhost ~]# ls
Test
[root@localhost ~]# mkdir -p /A/B/C # -p参数 创建多级目录
5. rmdir 命令
作用: 删除空目录,rmdir命令的作用十分有限,因为只能删除空目录,所以一旦目录中有内容,就会报错
[root@localhost ~]# rmdir Test
[root@localhost ~]# ls # 文件已经删除
三、文件操作命令
1. touch命令
作用:创建空文件或修改文件时间
[root@localhost ~]# touch test.txt
[root@localhost ~]# ls
-rw-r--r-- 1 root root 0 May 21 18:42 test.txt
2. stat命令
作用:stat是查看文件详细信息的命令,而且可以看到文件的三个时间
[root@localhost ~]# stat anaconda-ks.cfg 文件:"anaconda-ks.cfg" 大小:1453 块:8 IO 块:4096 普通文件
设备:803h/2051dInode:33574991 硬链接:1
权限:(0600/-rw-------) Uid:( 0/ root) Gid:( 0/ root)
环境:system_u:object_r:admin_home_t:s0
最近访问:2018-11-06 23:22:23.409038121 +0800 #访问文件的时间,cat等
最近更改:2018-10-24 00:53:08.760018638 +0800 #数据修改时间
最近改动:2018-10-24 00:53:08.760018638 +0800 #状态修改时间
创建时间:-
3. cat命令
作用:查看文件的内容
参数 | 作用 |
---|---|
-A | 相当于-vET选项的整合,用于列出所有隐藏符号 |
-E | 列出每行结尾的回车符$ |
-n | 显示行号 |
-T | 把Tab键用^I显示出来 |
-v | 列出特殊字符 |
4. more命令
作用:分屏显示文件内容。
常用交互式命
b | 向上翻页。 |
---|---|
/字符串 | 搜索指定的字符串 |
f 或空格 | 向下翻页 |
q | 退出 |
回车键 | 向下滚动一行 |
5. less命令
作用:less命令和more命令类似,只是more是分屏显示命令,而less是分行显示命令
6. head命令
作用:显示文件开头的内容。默认显示10行
参数 | 作用 |
---|---|
-n 行数 | 从文件头开始,显示指定行数 |
-v | 显示文件名 |
7. tail命令
作用:显示文件结尾的内容。
参数 | 作用 |
---|---|
-n | 行数从文件头开始,显示指定行数 |
-f | 监听文件的新增内容 |
8. ln命令
作用:在文件之间建立链接。
[root@localhost ~]# ln [选项] 源文件目标文件
选项:
-s: 建立软链接文件。如果不加“-s”选项,则建立硬链接文件
-f: 强制。如果目标文件已经存在,则删除目标文件后再建立链接文件
硬链接与软连接的特征
硬链接特征:
- 源文件和硬链接文件拥有相同的Inode和Block
- 修改任意一个文件,另一个都改变
- 删除任意一个文件,另一个都能使用
- 硬链接标记不清,很难确认硬链接文件位置,不建议使用
- 硬链接不能链接目录
- 硬链接不能跨分区
软链接特征:
- 软链接和源文件拥有不同的Inode和Block
- 两个文件修改任意一个,另一个都改变
- 删除软链接,源文件不受影响;删除源文件,软链接不能使用
- 软链接没有实际数据,只保存源文件的Inode,不论源文件多大,软链接大小不变
- 软链接的权限是最大权限lrwxrwxrwx.,但是由于没有实际数据,最终访问时需要参考源文件权限
- 软链接可以链接目录
- 软链接可以跨分区
- 软链接特征明显,建议使用软连接
四、目录和文件都能操作的命令
1. rm命令
作用: rm是强大的删除命令,不仅可以删除文件,也可以删除目录
[root@localhost ~]# rm [选项] 文件或目录
选项:
-f: 强制删除(force)
-i: 交互删除,在删除之前会询问用户
2. cp命令
作用:复制文件和目录
[root@localhost ~]# cp [选项] 源文件目标文件
选项:
-a: 相当于-dpr选项的集合,这几个选项我们一一介绍
-d: 如果源文件为软链接(对硬链接无效),则复制出的目标文件也为软链接
-i: 询问,如果目标文件已经存在,则会询问是否覆盖
-p: 复制后目标文件保留源文件的属性(包括所有者、所属组、权限和时间)
-r: 递归复制,用于复制目录
3. mv命令
作用:移动文件、目录或者改名
[root@localhost ~]# mv [选项] 源文件目标文件
选项:
-f: 强制覆盖,如果目标文件已经存在,则不询问,直接强制覆盖
-i: 交互移动,如果目标文件已经存在,则询问用户是否覆盖(默认选项)
-v: 显示详细信息
五、基本权限管理
1. 权限的介绍
权限位的含义
[root@localhost ~]# ls -l install.log
-rw-r--r--. 1 root root 24772 1月14 18:17 install.log
第1位代表文件类型。Linux不像Windows使用扩展名表示文件类型,而是使用权限位的第1位表示文件类型。虽然Linux文件的种类不像Windows中那么多,但是分类也不少,详细情况可以使用“info ls”命令查看。常见的文件类型。
- | 普通文件。 |
---|---|
c | 字符设备文件。这也是特殊设备文件,输入设备一般都是这种文件,如鼠标、键盘等。 |
b | 块设备文件。这是一种特殊设备文件,存储设备都是这种文件,如分区文件/dev/sda1就是这种文件 |
d | 目录文件。Linux中一切皆文件,所以目录也是文件的一种 |
p | 管道符文件。这是一种非常少见的特殊设备文件 |
l | 软链接文件 |
s | 套接字文件。这也是一种特殊设备文件,一些服务支持Socket访问,就会产生这样的文件 |
第2~4位代表文件所有者的权限。
r | 代表read,是读取权限 |
---|---|
w | 代表write,是写权限 |
x | 代表execute,是执行权限 |
如果有字母,则代表拥有对应的权限;如果是“-”,则代表没有对应的权限
第5~7位代表文件所属组的权限,同样拥有“rwx”权限
第8~10位代表其他人的权限,同样拥有“rwx”权限
2. 基本权限chmod命令
作用:修改文件的权限模式
- 命令格式:
[root@localhost ~]# chmod [选项] 权限模式文件名
选项:
-R: 递归设置权限,也就是给子目录中的所有文件设定权限
- 权限模式
chmod命令的权限模式的格式是“[ugoa][[+-=][perms]]”,也就是“[用户身份][[赋予方式][权限]]”的格式
用户身份:
u | 代表所有者(user) |
---|---|
a | 代表全部身份(all) |
g | 代表所属组(group) |
o | 代表其他人(other) |
- 赋予方式:
+ | 加入权限 |
---|---|
= | 设置权限 |
- | 减去权限。 |
权限:
r | 读取权限(read) |
---|---|
x | 执行权限(execute) |
w | 写权限(write)。 |
例子:
# 给test.txt文件所有者添加执行权限
[root@localhost ~]# chmod u+x test.txt
# 给test.txt文件所有者减去执行权限
[root@localhost ~]# chmod u-x test.txt
- 数字权限:
4 | 代表“r”权限。 |
---|---|
2 | 代表“w”权限。 |
1 | 代表“x”权限 |
例子:
[root@localhost ~]# chmod 755 test.txt
- 常用权限
644:这是文件的基本权限,代表所有者拥有读、写权限,而所属组和其他人拥有只读权限
755:这是文件的执行权限和目录的基本权限,代表所有者拥有读、写和执行权限,而所属组和其他人拥有读和执行权限
777:这是最大权限。在实际的生产服务器中,要尽力避免给文件或目录赋予这样的权限,这会造成一定的安全隐患
3. 基本权限的作用
读、写、执行权限对文件和目录的作用是不同的
权限含义的解释:
- 权限对文件的作用
- 读(r):对文件有读(r)权限,代表可以读取文件中的数据。如果把权限对应到命令上,那么一旦对文件有读(r)权限,就可以对文件执行cat、more、less、head、tail等文件查看命令。
- 写(w):对文件有写(w)权限,代表可以修改文件中的数据。如果把权限对应到命令上,那么一旦对文件有写(w)权限,就可以对文件执行vim、echo等修改文件数据的命令。注意:对文件有写权限,是不能删除文件本身的,只能修改文件中的数据。如果要想删除文件,则需要对文件的上级目录拥有写权限。
- 执行(x):对文件有执行(x)权限,代表文件拥有了执行权限,可以运行。在Linux中,只要文件有执行(x)权限,这个文件就是执行文件了。只是这个文件到底能不能正确执行,不仅需要执行(x)权限,还要看文件中的代码是不是正确的语言代码。对文件来说,执行(x)权限是最高权限。
- 权限对目录的作用
- 读(r):对目录有读(r)权限,代表可以查看目录下的内容,也就是可以查看目录下有哪些子文件和子目录。如果把权限对应到命令上,那么一旦对目录拥有了读(r)权限,就可以在目录下执行ls命令,查看目录下的内容了。
- 写(w):对目录有写(r)权限,代表可以修改目录下的数据,也就是可以在目录中新建、删除、复制、剪切子文件或子目录。如果把权限对应到命令上,那么一旦对目录拥有了写(w)权限,就可以在目录下执行touch、rm、cp、mv命令。对目录来说,写(w)权限是最高权限。
- 执行(x):目录是不能运行的,那么对目录拥有执行(x)权限,代表可以进入目录。如果把权限对应到命令上,那么一旦对目录拥有了执行(x)权限,就可以对目录执行cd命令,进入目录
目录的可用权限:
目录的可用权限其实只有以下几个。
0:任何权限都不赋予。
5:基本的目录浏览和进入权限。
7:完全权限。
4.所有者和所属组命令
4-1. chown命令
作用:修改文件和目录的所有者和所属组
[root@localhost ~]# chown [选项] 所有者:所属组文件或目录
选项:
-R: 递归设置权限,也就是给子目录中的所有文件设置权限
[root@localhost ~]# ll
-rw-r--r-- 1 root root 342 6月 15 11:37 test.txt
# 改变text.txt文件的所有者和所属组
[root@localhost ~]# chown python:python test.txt
# 再查看就test.txt文件的所有者和所属组就变成python
[root@localhost ~]# ll
-rw-r--r-- 1 python python 342 6月 15 11:37 test..txt
## 注意!python用户要存在
普通用户不能修改文件的所有者,哪怕自己是这个文件的所有者也不行。
普通用户可以修改所有者是自己的文件的权限。
4-2. chgrp命令
作用:修改文件和目录的所属组
[root@localhost ~]# ll
-rw-r--r-- 1 python python 342 6月 15 11:37 test.txt
[root@localhost ~]# groupadd test # 创建test组
[root@localhost ~]# chgrp test test.txt
[root@localhost ~]# ll
-rw-r--r-- 1 python test 342 6月 15 11:37 test.txt
# 文件的所属组已经变成test
# chown也可以实现
[root@localhost ~]# chown python.test test.txt
[root@localhost ~]# ll
-rw-r--r-- 1 python test 342 6月 15 11:37 test.txt
5. umask默认权限
- 查看系统的umask权限
#用八进制数值显示umask权限
[root@localhost ~]# umask
0022
-
文件和目录的最大权限
- 对文件来讲,新建文件的默认最大权限是666,没有执行(x)权限。这是因为执行权限对文件来讲比较危险,不能在新建文件的时候默认赋予,而必须通过用户手工赋予。
- 对目录来讲,新建目录的默认最大权限是777。这是因为对目录而言,执行(x)权限仅仅代表进入目录,所以即使建立新文件时直接默认赋予,也没有什么危险。
-
umask权限的计算方法
umask默认权限需要使用二进制进行逻辑与和逻辑非联合运算才可以得到正确的新建文件和目录的默认权限
第一种情况: umask值的每一位为偶数
## 文件的权限计算 [root@localhost ~]# umask 0022 [root@localhost ~]# touch a.txt # a.txt的权限=文件的最大权限(666) - umask权限(022)=644 [root@localhost ~]# ll -rw-r--r-- 1 root root 0 6月 16 13:51 a.txt # 改变umask的值 [root@localhost ~]# umask 044 [root@localhost ~]# umask 0044 [root@localhost ~]# touch b.txt # 此时b.txt的权限为文件的最大权限(666) - umask权限(044)=622 -rw--w--w- 1 root root 0 6月 16 14:00 b.txt # 总结:umask的值的每一位为偶数时,新建文件的权限=文件的最大权限 - umask的值, 新建目录的权限=目录的最大权限(777) - umask值(022) ## 目录的权限计算 [root@localhost ~]# umask 022 [root@localhost ~]# umask 0022 [root@localhost ~]# mkdir Test # 新建目录的权限=目录的最大权限(777) - umask值(022) = 755 [root@localhost ~]# ll drwxr-xr-x 2 root root 6 6月 16 14:10 Test
第二种情况: umask值的每一位为奇数
## 文件的权限计算 [root@localhost ~]# umask 043 [root@localhost ~]# umask 0043 [root@localhost ~]# touch c.txt # 此时c.txt的权限为文件的最大权限(666) - umask权限(043)=623,在结果的奇数位上+1就变成624 -rw--w--r- 1 root root 0 6月 16 14:00 c.txt #umask的值的每一位为奇数时,新建文件的权限=文件的最大权限 666减去umask值,然后在结果的基础上,在umask的奇数位上+1 ## 目录的权限计算 [root@localhost ~]# umask 043 [root@localhost ~]# umask 0043 [root@localhost ~]# mkdir Test # 新建目录的权限=目录的最大权限(777) - umask值(043) = 734 # 目录不影响 [root@localhost ~]# ll drwx-wxr-- 2 root root 6 6月 16 14:14 ABC
六、 帮助命令
1. man命令
man是最常见的帮助命令,显示命令的帮助手册
参数:
-f | 查看命令拥有哪个级别的帮助 |
---|---|
-k | 查看和命令相关的所有帮助 |
man命令的快捷键:
上箭头 | 向上移动一行 |
---|---|
下箭头 | 向下移动一行 |
PgUp | 向上翻一页 |
PgDn | 向下翻一页 |
g | 移动到第一页 |
G | 移动到最后一页 |
q | 退出 |
/字符串 | 从当前页向下搜索字符串 |
?字符串 | 从当前页向上搜索字符串 |
n | 当搜索字符串时,可以使用n键找到下一个字符串 |
N | 当搜索字符串时,使用N键反向查询字符串。也就是说,如果使用“/字符串”方式搜索,则N键表示向上搜索字符串;如果使用“?字符串”方式搜索,则N键表示向下搜索字符串 |
man命令的帮助级别:
级 别 | 作 用 |
---|---|
1 | 普通用户可以执行的系统命令和可执行文件的帮助 |
2 | 内核可以调用的函数和工具的帮助 |
3 | C语言函数的帮助 |
4 | 设备和特殊文件的帮助 |
5 | 配置文件的帮助 |
6 | 游戏的帮助(个人版的Linux中是有游戏的) |
7 | 杂项的帮助 |
8 | 超级用户可以执行的系统命令的帮助 |
9 | 内核的帮助 |
2. info命令
info命令的帮助信息是一套完整的资料,每个单独命令的帮助信息只是这套完整资料中的某一个小章节。
infor命令的快捷键:
上箭头 | 向上移动一行 |
---|---|
下箭头 | 向下移动一行 |
PgUp | 向上翻一页 |
PgDn | 向下翻一页 |
Tab | 在有“*”符号的节点间进行切换 |
回车 | 进入有“*”符号的子页面,查看详细帮助信息 |
u | 进入上一层信息(回车是进入下一层信息) |
n | 进入下一小节信息 |
p | 进入上一小节信息 |
? | 查看帮助信息 |
q | 退出info信息 |
3. --help命令
大多数命令都可以使用“--help”选项来查看帮助
[root@localhost ~]# ls --help
七、 搜索命令
1. whereis 命令
作用:查找二进制命令路径、源文件和帮助文档的命令
[root@localhost ~]# whereis ls
ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz /usr/share/man/man1p/ls.1p.gz
2. which命令
作用:查找到二进制命令路径的同时,如果这个命令有别名,则可以找到别名命令
[root@localhost ~]# which pwd
alias grep='grep --color=auto'
/usr/bin/grep
3. find命令
作用:搜索文件。
按文件名查找文件和目录:
## 按名称查找文件
[root@localhost ~]# find 路径信息 -type 文件类型 -选项 "文件名"
# -name选项
find 路径信息 -type f -iname "文件名" # 按照文件名搜索,不区分文件名大小写
find 路径信息 -type f -name "文件名" # 按照文件名搜索, 精确查找
find 路径信息 -type f -name "*文件名*" # 按照文件名搜索, 模糊查找
find 路径信息 -type f -name "文*件名*" # 按照文件名搜索, 模糊查找
# 在/data下查找hello.txt文件
[root@localhost ~]# find /data -type f -name "hello.txt"
## 按名称查找目录
find 路径信息 -type d -name "目录名" # 按照目录名搜索
# 在/data下查找Test目录
[root@localhost ~]# find /data -type d -name "Test"
按文件大小查找文件:
[root@localhost ~]# find 路径信息 -type 文件类型 -size [+|-]单位
# -size选项的单位:
'b':这是默认单位,如果单位为b或不写单位,则按照512 Byte搜索
'c':搜索单位是c,按照字节搜索
'w':搜索单位是w,按照双字节(中文)搜索
'k':按照KB单位搜索,必须是小写的k
'M':按照MB单位搜索,必须是大写的M
'G':按照GB单位搜索,必须是大写的G
# 在/data目录下查找大于50MB的文件
[root@localhost ~]# find /data -type f -size +50M
按文件修改时间查找:
[root@localhost ~]# find 路径信息 -type 文件类型 +|-时间 搜索内容
# 修改时间:
'mtim(modification timee)': 当修改文件的内容数据的时候,就会更新这个时间,而更改权限或者属性,mtime不会改变,这就是和ctime的区别
'ctime(status time)':当修改文件的权限或者属性的时候,就会更新这个时间
'atime(access time)':访问文件时如cat,atime早于mtime或者ctime,会修改这个时间
# +-时间的含义:
-5:代表5天内修改的文件
+5:代表6天前修改的文件。
5:代表前5~6天那一天修改的文件。
# 查找/data下7天前创建的文件
[root@localhost ~]# find /data -type f -mtime +6
按文件权限搜索:
# 查找/data下权限为755的文件
[root@localhost ~]# find /data -type f -perm 755
按照所有者和所属组搜索:
# 查找/data下用户名为root的所有文件
[root@localhost ~]# find /data -type f -user root
-uid 用户ID: 按照用户ID查找所有者是指定ID的文件
-gid 组ID: 按照用户组ID查找所属组是指定ID的文件
-user 用户名: 按照用户名查找所有者是指定用户的文件
-group 组名: 按照组名查找所属组是指定用户组的文件
-nouser: 查找没有所有者的文件
八、压缩和解压缩命令
在 Linux 中可以识别的常见压缩格式有十几种,比如“.zip”“ .gz”“ .bz2” “.tar” “.tar.gz”“ .tar.bz2” 等。
1. zip格式
zip压缩:
命令格式:zip [选项] 压缩包名 源文件或源目录
选项: -r
压缩目录
# 压缩文件
[root@m01 ~]# zip t1.txt.zip t1.txt
adding: t1.txt (deflated 45%)
[root@m01 ~]# ll |grep t1
-rw-r--r-- 1 root root 459 Jun 29 13:25 t1.txt
-rw-r--r-- 1 root root 415 Jun 29 14:36 t1.txt.zip
# 压缩目录
[root@m01 ~]# zip -r linux.zip linux/
[root@m01 ~]# ll |grep linux
drwxr-xr-x 4 root root 39 Jun 26 23:51 linux
-rw-r--r-- 1 root root 29255 Jun 29 14:42 linux.zip
unzip解压缩
命令格式:unzip [选项] 压缩包名
选项:-d
指定解压目录
更多选项
# 把当前目录下的linux.zip解压到/tmp下
[root@m01 ~]# unzip -d /tmp linux.zip
2. tar格式
".tar"格式的打包和解打包都使用 tar 命令,区别只是选项不同
tar打包
[root@m01 ~]# tar [选项] [-f 压缩包名] 源文件或目录
选项:
-c: 打包
-f: 指定压缩包的文件名。压缩包的扩展名是用来给管理员识别格式的,所以一定要正确指定扩展名
-v: 显示打包文件过程
# 打包文件
[root@m01 ~]# tar -cvf t1.txt.tar t1.txt
t1.txt
[root@m01 ~]# ll |grep t1.txt
-rw-r--r-- 1 root root 459 Jun 29 13:25 t1.txt
-rw-r--r-- 1 root root 10240 Jun 29 14:57 t1.txt.tar
# 打包目录
[root@m01 ~]# tar -cvf linux.tar linux
linux/
......
[root@m01 ~]# ll |grep linux.tar
-rw-r--r-- 1 root root 81920 Jun 29 14:58 linux.tar
更多选项参数
tar解打包
[root@localhost ~]# tar [选项] 压缩包
选项:
-x: 解打包
-f: 指定压缩包的文件名
-v: 显示解打包文件过程
-t: 测试,就是不解打包,只是查看包中有哪些文件
-C(大) 目录: 指定解打包位置
# 解压到当前目录下
[root@m01 ~]# tar -xvf linux.tar
# 解压到指定目录下 /tmp
[root@m01 ~]# tar tar -xvf linux.tar -C /tmp
3. tar.gz和".tar.bz2"格式
使用 tar 命令直接打包压缩
[root@localhost ~]# tar [选项] 压缩包 源文件或目录
选项:
-z: 压缩和解压缩“.tar.gz”格式
-j: 压缩和解压缩“.tar.bz2”格式
# .tar.gz ”格式
[root@localhost ~]# tar -zcvf tmp.tar.gz /tmp/
# 解压缩与解打包“ .tar.gz ”格式
[root@localhost ~]# tar -zxvf tmp.tar.gz
# .tar.bz2格式
[root@localhost ~]# tar -jcvf tmp.tar.bz2 /tmp/
[root@localhost ~]# tar -jxvf tmp.tar.bz2
九、 关机重启命令
1. sync数据同步
作用:刷新文件系统缓冲区
2. shutdown命令
作用:关机和重启
[root@localhost ~]# shutdown [选项] 时间 [警告信息]
选项:
-c: 取消已经执行的shutdown命令
-h: 关机
-r: 重启
3. reboot 命令
作用:重启系统
十、 网络命令
1. IP地址配置
IP 地址是计算机在互联网中唯一的地址编码。每台计算机如果需要接入网络和其他计算机进行数 据通信,就必须配置唯一的公网 IP 地址
CeotOS 6.x 配置
1. setup工具
2. 手工配置
[root@m01 ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE:设备名称
TYPE:网络类型(以太网等)
ONBOOT:开机时是否自动启用(yes/no)
HWADDR:MAC地址(物理地址)
BOOTPROTO:网卡获取配置的方式(dhcp/static/none/其他)
IPADDR:IP地址
NETMASK:子网掩码
GATEWAY:网关地址
BROADCAST:广播地址
DNS:DNS服务器地址
NAME:网卡名称
USERCTL:普通用户是否可以控制(yes/no)
[root@m01 ~]# service network restart
## 启动失败解决
# 删除MAC地址行
[root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0
# 删除MaC地址和UUID绑定文件
[root@localhost ~]# rm -rf /etc/udev/rules.d/70-persistent-net.rules
#重启Linux
[root@localhost ~]# reboot
CeotOS 7.x 配置
1. nmtui工具
没有就手动安装:yum install NetworkManager-tui
2. 手动 配置
[root@m01 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet # 以太网
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static #配置静态IP地址
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
NAME=ens33 # 网卡名称
DEVICE=ens33
ONBOOT=yes # 开机自启动
IPADDR=192.168.1.61 # IP地址
PREFIX=24 # 子网掩码
GATEWAY=192.168.1.2 # 网关
DNS1=114.114.114.114 #DNS
DNS2=8.8.8.8 #DNS
# 重启网络服务
[root@m01 ~]# systemctl restart network
## 启动失败解决
# 删除MAC地址行和UUID
[root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0
# 关闭NetworkManager服务
[root@m01 ~]# systemctl stop NetworkManager
[root@localhost ~]# reboot
CentOS 7.x 修改网卡名为eth0
2. ifconfig命令
作用:查看 IP 地址的信息
[root@localhost ~]# ifconfig eth0:flags=4163 mtu 1500 #标志 最大传输单元 inet 192.168.252.20 netmask 255.255.255.0 broadcast 192.168.252.255 #IP地址 子网掩码 广播地址 inet6 fe80::546e:994b:30c:e2f7 prefixlen 64 scopeid 0x20 #IPv6地址(目前没有生效) ether 00:0c:29:aa:d2:96 txqueuelen 1000 (Ethernet) #MAC地址 RX packets 3728 bytes 310958 (303.6 KiB) RX errors 0 dropped 0 overruns 0 frame 0 #接收的数据包情况 TX packets 3051 bytes 1495119 (1.4 MiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 #发送的数据包情况
lo: flags=73 mtu 65536 #本地回环网卡 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10 loop txqueuelen 1000 (Local Loopback) RX packets 8 bytes 696 (696.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 8 bytes 696 (696.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
3. ping命令
作用:通过 ICMP 协议进行网络探测,测试网络中主机的通信情况
[root@localhost ~]# ping [选项] IP
选项:
-b: 后面加入广播地址,用于对整个网段进行探测
-c 次数: 用于指定ping的次数
-s 字节: 指定探测包的大小
[root@localhost ~]# ping -b -c 3 192.168.103.255
WARNING: pinging broadcast address
PING 192.168.103.255 (192.168.103.255) 56(84) bytes of data. 64 bytes from 192.168.103.199: icmp_seq=1 ttl=64 time=1.95 ms
64 bytes from 192.168.103.168: icmp_seq=1 ttl=64 time=1.97 ms (DUP!)
64 bytes from 192.168.103.252: icmp_seq=1 ttl=64 time=2.29 ms (DUP!)
......
4. netstat 命令
作用:
netstat 是网络状态查看命令,既可以查看到本机开启的端口,也可以查看有哪些客户端连接
[root@localhost ~]# netstat [选项]
选项:
-a: 列出所有网络状态,包括Socket程序
-c 秒数: 指定每隔几秒刷新一次网络状态
-n: 使用IP地址和端口号显示,不使用域名与服务名
-p: 显示PID和程序名
-t: 显示使用TCP协议端口的连接状况
-u: 显示使用UDP协议端口的连接状况
-l: 仅显示监听状态的连接
-r: 显示路由表
# 常用组合
[root@localhost ~]# netstat -tulnp
5. write 命令
作用:向其他用户发送信息
#向在pts/1(远程终端 1 )登录的user1用户发送信息,使用“ Ctrl+D ” 快捷键 保存发送的数据
[root@localhost ~]#write user1 pts/1
hello
I will be in 5 minutes to restart, please save your data
6. wall 命令
作用:write 命令用于给指定用户发送信息,而 wall 命令用于给所有登录用户发送信息,包括自己
[root@localhost ~]# wall "I will be in 5 minutes to restart, please save your data"
7. mail 命令
mail 是 Linux 的邮件客户端命令,可以利用这个命令给其他用户发送邮件
作用:发送和接收电子邮件
本地发送邮件:
[root@localhost ~]# mail user1
Subject: hello < - 邮件标题
Nice to meet you! < - 邮件具体内容
. <- 使用“.”来结束邮件输入
#发送邮件给user1用户
#我们接收到的邮件都保存在“/var/spool/mail/用户名”中,每个用户都有一个以自己的用户名命名的邮箱。
查看邮件
[root@localhost ~]# mail
Heirloom Mail version 12.4 7/29/08.Type ?for help.
"/var/spool/mail/root": 1 message 1 new
>N 1 root Mon Dec 5 22:45 68/1777 "test mail" <-之前收到的邮件
>N 2 root Mon Dec 5 23:08 18/602 "hello"
#未阅读编号 发件人 时间 标题
& <-等待用户输入命令
可以看到已经接收到的邮件列表,“N”代表未读邮件,如果是已经阅读过的邮件,则前面是不会有这个“N”的;之后的数字是邮件的编号,我们主要通过这个编号来进行邮件的操作。如果我们想要查看第一封邮件,则只需输入邮件的编号“1”就可以了。
在交互命令中执行“?”,可以查看这个交互界面支持的命令
[root@localhost ~]# mail
Heirloom Mail version 12.4 7/29/08.Type ?for help.
"/var/spool/mail/root": 1 message 1 new
>N 1 root Mon Dec 5 22:45 68/1777 "test mail" <-之前收到的邮件
>N 2 root Mon Dec 5 23:08 18/602 "hello"
#未阅读编号 发件人 时间 标题
& ? <-输入"?"查看帮助
mail commands
type type messages
next goto and type next message
from give head lines of messages
headers print out active message headers
......
# headers:列出邮件标题列表,直接输入“h”命令即可。
# delete:删除指定邮件。比如想要删除第二封邮件,可以输入“d 2”。
# save:保存邮件。可以把指定邮件保存成文件,如“s 2 /tmp/test.mail”。
# quit:退出,并把已经操作过的邮件进行保存。比如移除已删除邮件、保存已阅读邮件等。
# exit:退出,但是不保存任何操作。
给邮箱发送邮件
-
安装邮件服务
yum -y install postfix
-
登陆163邮箱,开启POP3/SMTP邮件服务
-
新增授权码,验证信息;记录这个码,配置的时候用
-
编写配置文件,重启postfix.service服务,测试
# 在最后添加以下内容
[root@localhost ~]# vim /etc/mail.rc
set [email protected] # 邮箱地址
set smtp=smtp.163.com # 默认就行
set [email protected] # 认证用户,也是邮件地址
set smtp-auth-password=xxx # 你开启SMTP时候的授权码
set smtp-auth=login
# 重启服务
[root@localhost ~]# systemctl restart postfix.service
# 测试发送邮件,并能成功接受到邮件消息
[root@localhost ~]# echo "test mail !!!" |mail -s [email protected]
十一、 系统痕迹命令
系统中有一些重要的痕迹日志文件,如/var/log/wtmp、/var/run/utmp、/var/log/btmp、/var/log/lastlog等日志文件,如果你用vim打开这些文件,你会发现这些文件是二进制乱码。这是由于这些日志中保存的是系统的重要登录痕迹,包括某个用户何时登录了系统,何时退出了系统,错误登录等重要的系统信息。这些信息要是可以通过vim打开,就能编辑,这样痕迹信息就不准确,所以这些重要的痕迹日志,只能通过对应的命令来进行查看。
1. w命令
显示系统中正在登陆的用户信息的命令,这个命令查看的痕迹日志是/var/run/utmp
作用: 显示登陆用户,查看他正在做什么操作
[root@m01 ~]# w
12:56:10 up 3:12, 2 users, load average: 0.00, 0.01, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 192.168.1.1 11:04 2.00s 0.64s 0.01s w
python pts/1 192.168.1.41 11:15 1:22 0.72s 0.50s vim dead.letter
## 第一行说明:
12:56:10
up 3:12 # 系统已经开机3小时12分钟
2 users # 当前登陆了两个用户
load average: 0.00, 0.01, 0.05 # 系统在之前1分钟、5分钟、15分钟的平均负载。如果CPU是单核的,则这个数值超过1就是高负载;如果CPU是四核的,则这个数值超过4就是高负载
## 第二行说明
USE
TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
第一行说明:
内容 | 说明 |
---|---|
12:56:10 | 系统当前时间 |
up 3:12 | 系统已经运行3小时12分钟 |
2 users | 当前登陆了两个用户 |
load average: 0.00, 0.01, 0.05 | #系统在之前1分钟、5分钟、15分钟的平均负载。如果CPU是单核的,则这个数值超过1就是高负载;如果CPU是四核的,则这个数值超过4就是高负载(这个平均负载完全是依据个人经验来进行判断的,一般认为不应该超过服务器CPU的核数) |
第二行说明:
内容 | 说明 |
---|---|
USER | 当前登陆的用户 |
TTY | 登陆的终端:tty1-6: 本地字符终端(alt+F1-6切换) tty7: 本地图形终端(ctrl+alt+F7切换,必须安装启动图形界面) pts/0-255: 远程终端 |
FROM | 登陆的IP地址,如果是本地终端,则是空 |
LOGIN@ | 登陆时间 |
IDLE | 用户闲置时间 |
JCPU | 所有的进程占用的CPU时间 |
PCPU | 当前进程占用的CPU时间 |
WHAT | 用户正在进行的操作 |
2. who命令
who命令和w命令类似,用于查看正在登陆的用户,但是显示的内容更加简单,也是查看/var/run/utmp日志
[root@m01 ~]# who
root pts/0 2020-06-30 11:04 (192.168.1.1)
登陆用户 登陆终端 登陆时间(来源IP)
python pts/1 2020-06-30 11:15 (192.168.1.41)
3. last命令
last命令是查看系统所有登陆过的用户信息的,包括正在登陆的用户和之前登陆的用户。这个命令查看的是/var/log/wtmp痕迹日志文件。
[root@localhost ~]# last
root tty1 Mon Nov 12 23:59 still logged in
root pts/2 192.168.252.1 Mon Nov 12 23:42 still logged in
root pts/1 192.168.252.1 Mon Nov 12 23:37 - 23:59 (00:22)
root tty1 Mon Nov 12 19:17 - 23:58 (04:41)
root pts/0 192.168.252.1 Mon Nov 12 18:20 - 23:52 (05:32)
reboot system boot 3.10.0-862.el7.x Mon Nov 12 18:18 - 00:22 (06:03)
#系统重启信息记录
root pts/1 192.168.252.1 Mon Nov 12 08:48 - down (01:29)
root pts/1 192.168.252.1 Thu Nov 8 21:04 - 22:29 (01:25)
#用户名 终端号 来源IP地址 登陆时间 - 退出时间
4. lastlog命令
lastlog命令是查看系统中所有用户最后一次的登陆时间的命令,他查看的日志是/var/log/lastlog文件
[root@localhost ~]# lastlog
Username Port From Latest
root tty1 Mon Nov 12 23:59:03 +0800 2020
bin **Never logged in**
daemon **Never logged in**
adm **Never logged in**
lp **Never logged in**
sync **Never logged in**
python pts/1 192.168.1.41 Tue Jun 30 11:15:51 +0800 2020
..........
#用户名 终端 来源IP 登陆时间
5. lastb命令
lastb命令是查看错误登陆的信息的,查看的是/var/log/btmp痕迹日志
[root@localhost ~]# lastb
(unknown tty1 Mon Nov 12 23:58 - 23:58 (00:00)
root tty1 Mon Nov 12 23:58 - 23:58 (00:00)
#错误登陆 用户终端 尝试登陆的时间
十二、挂载命令
# 查看磁盘使用和挂载情况
[root@m01 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 471M 0 471M 0% /dev
tmpfs 487M 0 487M 0% /dev/shm
tmpfs 487M 8.0M 479M 2% /run
tmpfs 487M 0 487M 0% /sys/fs/cgroup
/dev/sda2 14G 8.1G 5.9G 58% /
/dev/sda1 2.8G 272M 2.6G 10% /boot
tmpfs 98M 0 98M 0% /run/user/0
tmpfs 98M 0 98M 0% /run/user/1000
# 查看磁盘分区情况
[root@m01 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 2.8G 0 part /boot
├─sda2 8:2 0 14G 0 part /
└─sda3 8:3 0 2.8G 0 part [SWAP]
sr0 11:0 1 1024M 0 rom
# 查看分区UUID
[root@m01 ~]# blkid
/dev/sda1: UUID="45f0e357-2102-419a-9b26-2fbd8795f2ad" TYPE="xfs"
/dev/sda2: UUID="5788eabe-abdb-41c2-b1be-4b12482553a3" TYPE="xfs"
1. mount命令
linux所有存储设备都必须挂载使用,包括硬盘
[root@localhost ~]# mount [-t 文件系统] [-L 卷标名] [-o 特殊选项] \
设备文件名 挂载点
# \代表这一行没有写完,换行
选项:
-t 文件系统: 加入文件系统类型来指定挂载的类型,可以ext4、xfs等文件系统
-L 卷标名: 挂载指定卷标的分区,而不是安装设备文件名挂载
-o 特殊选项: 可以指定挂载的额外选项,比如读写权限、同步异步等,如果不指定
则默认值生效
# 把/devs/da1磁盘分区挂载到/mnt下
[root@localhost ~]# mount -t xfs /dev/sda1 /mnt
# umount /nmt 取消挂载
[root@localhost ~]#umount /mnt
-o 特殊选项参数
参数 | 说明 |
---|---|
atime/noatime | 更新访问时间/不更新访问时间。访问分区文件时,是否更新文件的访问时间,默认为更新 |
async/sync | 异步/同步,默认为异步 |
auto/noauto | 自动/手动,mount –a命令执行时,是否会自动安装/etc/fstab文件内容挂载,默认为自动 |
defaults | 定义默认值,相当于rw,suid,dev,exec,auto,nouser,async这七个选项 |
exec/noexec | 执行/不执行,设定是否允许在文件系统中执行可执行文件,默认是exec允许 |
remount | 重新挂载已经挂载的文件系统,一般用于指定修改特殊权限 |
rw/ro | 读写/只读,文件系统挂载时,是否具有读写权限,默认是rw |
suid/nosuid | 具有/不具有SUID权限,设定文件系统是否具有SUID和SGID的权限,默认是具有 |
user/nouser | 允许/不允许普通用户挂载,设定文件系统是否允许普通用户挂载,默认是不允许,只有root可以挂载分区 |
usrquota | 写入代表文件系统支持用户磁盘配额,默认不支持 |
grpquota | 写入代表文件系统支持组磁盘配额,默认不支持 |
2. 挂载光盘
不论哪个系统都有软连接/dev/cdrom,与可以作为光盘的设备文件名
[root@localhost ~]# mount -t iso9660 /dev/cdrom /mnt/cdrom/
#挂载光盘
[root@localhost ~]# umount /dev/sr0
[root@localhost ~]# umount /mnt/cdrom
#因为设备文件名和挂载点已经连接到一起,卸载哪一个都可以
3. 挂载U盘
U盘会和硬盘共用设备文件名,所以U盘的设备文件名不是固定的,需要手工查询
#参看U盘设备名
[root@localhost ~]# fdisk -l
#挂载U盘。因为是Windows分区,所以是vfat文件系统格式
[root@localhost ~]# mount -t vfat /dev/sdb1 /mnt/usb/
#挂载U盘。因为是Windows分区,所以是vfat文件系统格式
#挂载U盘,指定中文编码格式为UTF-8
[root@localhost ~]# mount -t vfat -o iocharset=utf8 /dev/sdb1 /mnt/usb/