第四章:常用命令
——>实操专题<——
# 一、目录操作命令ls: #查看档案cd: #切换目录pwd: #查询目录位置mkdir: #创建目录rmdir: #删除空目录# 二、文件操作命令touch: #创建空文件或修改文件时间stat: #查看文件详细信息cat: #查看文件命令;不适用于长文件more: #分屏显示文件less: #分行显示文件head: #用于显示文件开头tail: #用于显示文件结尾ln: #创建硬软连接# 三、目录和文件操作命令rm: #删除命令cp: #复制命令mv: #移动命令# 四、基本权限管理chmod: #修改文件权限chown: #所有者和所属组修改命令umask: #默认权限# 五、帮助命令man: #最常用的帮助命令info: #帮助信息一套完整的资料更加详细help: #获取shell内置命令的帮助# 六、搜索命令whereis: #搜索系统命令的命令which: #搜索系统命令的命令locate: #按照文件名搜索普通文件的命令find: #通过文件名搜索文件grep: #文件中提取或匹配符合条件的字符串行|: #管道符#常用快捷键# 七、压缩和解压缩命令zip: #Windows中最常用的压缩格式unzip: #解压gzip: #压缩默认是删除源文件的,-c会不删除源文件;不会压缩目录bzip2: #不能压缩目录,只能压缩文件,tar: #打包tar -zcvf 文件名.tar 文件: #打包压缩tar -zxvf 文件名.tar.gz -C 文件位置: #解打包解压缩# 八、挂机重启sync: #数据同步命令shutdown: #安全的重启命令reboot: #不安全的重启命令halt poweroff:关机: #不建议使用init: #运行级别启动# 九、网络命令ifconfig: #查看网络相关信息ping: #测试网络ping -b -c 3 10.10.10.255: #测试该网段在线IP地址netstat: #查看端口netstat -tuln: #查看本机开启的所有端口netstat -tunlp: #查看每个端口开启的对应服务netstat -an: #查看所有端口netstat -r: #查看网关write: #向其他用户发送信息wall: #向所有用户发送信息,包括自己mail: #发送和接收电子邮件# 十、系统痕迹命令w: #显示登录用户,和他正在做什么who: #查看正在登录的用户last: #查看系统所有登录过的用户信息lastlog: #系统中所有用户最后一次登录时间的命令lastb: #查看错误登录的信息;密码错误被拒绝的用户# 十一、挂载命令mount: #挂载光盘、挂载U盘,挂载NTFS分区
一、命令的基本格式
1. 命令的提示符
[root@localhost ~]#// []:这是提示符的分隔符号,没有特殊含义。// root:显示的是当前的登录用户,超哥现在使用的是 root 用户登录。// @:分隔符号,没有特殊含义。// localhost:当前系统的简写主机名(完整主机名是 localhost.localdomain)。// ~:代表用户当前所在的目录,此例中用户当前所在的目录是家目录。#:命令提示符。超级用户是#,普通用户是$
2. 命令的基本格式
[root@localhost ~]# 命令 [选项] [参数]// ls 是最常见的目录操作命令,主要作用是显示目录下的内容。// 命令名称:ls。// 英文原意:list。// 所在路径:/bin/ls。// 执行权限:所有用户。// 功能描述:显示目录下的内容。[root@localhost ~]#ls [选项] [文件名或目录名]// 选项:// -a: 显示所有文件// --color=when: 支持颜色输出,when 的值默认是 always(总显示颜色),也可以是// never(从不显示颜色)和 auto(自动)// -d:显示目录信息,而不是目录下的文件// -h:人性化显示,按照我们习惯的单位显示文件大小// -i:显示文件的 i 节点号// -l:长格式显示
举个例子
[root@localhost ~]# ls -l// 总用量 44-rw-------. 1 root root 1207 1 月14 18:18 anaconda-ks.cfg// #权限// 引用计数 所有者 所属组 大小 文件修改时间// 文件名// 我们已经知道“-l”选项用于显示文件的详细信息,那么“-l”选项显示的这 7 列分别是什么含义?// 第一列:权限。具体权限的含义将在 4.5 节中讲解。// 第二列:引用计数。文件的引用计数代表该文件的硬链接个数,而目录的引用计数代表该目录有多少个一级子目录。// 第三列:所有者,也就是这个文件属于哪个用户。默认所有者是文件的建立用户// 第四列:所属组。默认所属组是文件建立用户的有效组,一般情况下就是建立用户的所在组。// 第五列:大小。默认单位是字节。// 第六列:文件修改时间。文件状态修改时间或文件数据修改时间都会更改这个时间,注意这个// 时间不是文件的创建时间。// 第七列:文件名。// 选项:是用于调整命令的功能的。// 参数:是命令的操作对象,如果省略参数,是因为有默认参数
[root@server21 ~]# ls -l /dr-xr-xr-x. 5(5个目录) root root 4096 Feb 4 07:49 boot[root@server21 ~]# ls -al /boot/ #3个目录+2个隐藏目录total 33680dr-xr-xr-x. 5 root root 4096 Feb 4 07:49 .dr-xr-xr-x. 22 root root 4096 Feb 4 13:43 ..-rw-r--r--. 1 root root 108103 May 11 2016 config-2.6.32-642.el6.x86_64drwxr-xr-x. 3 root root 4096 Feb 4 07:45 efidrwxr-xr-x. 2 root root 4096 Feb 4 07:46 grub-rw-------. 1 root root 22141433 Feb 4 07:46 initramfs-2.6.32-642.el6.x86_64.img-rw-------. 1 root root 5094042 Feb 4 07:49 initrd-2.6.32-642.el6.x86_64kdump.imgdrwx------. 2 root root 16384 Feb 4 07:43 lost+found-rw-r--r--. 1 root root 215559 May 11 2016 symvers-2.6.32-642.el6.x86_64.gz-rw-r--r--. 1 root root 2615003 May 11 2016 System.map-2.6.32-642.el6.x86_64-rwxr-xr-x. 1 root root 4264528 May 11 2016 vmlinuz-2.6.32-642.el6.x86_64-rw-r--r--. 1 root root 166 May 11 2016 .vmlinuz-2.6.32-642.el6.x86_64.hmac
二、目录操作命令
1.ls 命令:见前一小节的内容。
2. cd 命令
#cd 是切换所在目录的命令,这个命令的基本信息如下。// 命令名称:cd。// 英文原意:change directory。// 所在路径:Shell 内置命令。// 执行权限:所有用户。// 功能描述:切换所在目录。
2.1 cd 命令的简化用法
| 特殊符号 | 作用 |
| ~ | 代表用户的家目录 |
| - | 代表上次所在目录 |
| . | 代表当前目录 |
| .. | 代表上级目录 |
#回到用户家目录下[root@server21 ~]# cd ~[root@server21 local]# cd ~[root@server21 local]# cd#回到上一级目录[root@server21 local]# cd bin/[root@server21 bin]# cd -/usr/local#回到当前目录[root@server21 local]# cd .#回到上一级目录[root@server21 local]# cd ..
2.2 绝对路径和相对路径
绝对路径:以跟目录为参照物,从根目录开始,一级一级进入目录
相对路径:以当前目录作为参照物,进行目录查找
3.pwd 命令
// pwd 命令是查询所在目录的命令,基本信息如下:// 命令名称:pwd// 英文原意:print name of current/working directory// 所在路径:/bin/pwd// 执行权限:所有用户。// 功能描述:查询所在的工作目录。[root@server21 usr]# pwd/usr
4.mkdir 命令
// mkdir 是创建目录的命令,其基本信息如下。// 命令名称:mkdir。// 英文原意:make directories。// 所在路径:/bin/mkdir。// 执行权限:所有用户。// 功能描述:创建空目录。// 命令格式[root@localhost ~]# mkdir [选项] 目录名// 选项:// -p:// 递归建立所需目录
[root@server21 ~]# mkdir yanqi[root@server21 ~]# lsyanqi#当前目录下不可以创建同名文件或者目录,[root@server21 ~]# touch yanqi[root@server21 ~]# lsyanqi[root@server21 ~]# mkdir yanqi #创建目录是报错mkdir: cannot create directory `yanqi': File exists#递归创建目录[root@server21 ~]# mkdir -p /yanqi/yanqi1/yanqi2[root@server21 ~]# ll /yanqi/yanqi1/yanqi2/
5.rmdir 命令(删除空目录)
// 既然有建立目录的命令,就一定会有删除目录的命令 rmdir,其基本信息如下。// 命令名称:rmdir。// 英文原意:remove empty directories。// 所在路径:/bin/rmdir。// 执行权限:所有用户。// 功能描述:删除空目录。// 命令格式[root@localhost ~]# rmdir [选项] 目录名// 选项:// -p:// 递归删除目录// rmdir 命令的作用十分有限,因为只能删除空目录,所以一旦目录中有内容,就会报错。// 这个命令比较“笨”,所以我们不太常用。后续我们不论删除的是文件还是目录,都会使用 rm命令[root@server21 ~]# rmdir /yanqi/yanqi1/yanqi2/[root@server21 ~]# ll /yanqi/yanqi1/total 0[root@server21 ~]# mkdir -p yanqi1/yanqi2/yanqi3[root@server21 ~]# rm -rf yanqi1/#extundelete:误删除恢复命令;在误删除之前安装可以用于数据恢复。
三、文件操作命令
1.touch 命令
// 创建空文件或修改文件时间,这个命令的基本信息如下。// 命令名称:touch。// 英文原意:change file timestamps。// 所在路径:/bin/touch。// 执行权限:所有用户。// 功能描述:修改文件的时间戳。
[root@server21 ~]# touch yanqi #创建一个空文件yanqi[root@server21 ~]# echo 命令重定向 >> yanqi #echo若是后面没有目标文件,会自动创建,若是有该文件,则会直接把数据写入到该文件内[root@server21 ~]# cat yanqi命令重定向#touch创建一个空文件,或者修改该文件最后一次的时间
2.stat 命令
// stat 是查看文件详细信息的命令,而且可以看到文件的这三个时间,其基本信息如下。// 命令名称:stat。// 英文原意:display file or file system status。// 所在路径:/usr/bin/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// 最近更改:2018-10-24 00:53:08.760018638 +0800 #数据修改时间// 最近改动:2018-10-24 00:53:08.760018638 +0800 #状态修改时间
[root@server21 ~]# stat yanqiFile: `yanqi' #文件名称Size: 16 Blocks: 8 IO Block: 4096 regular fileDevice: 803h/2051d Inode: 2621451 Links: 1Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)Access: 2021-02-04 17:33:41.005010875 +0800Modify: 2021-02-04 17:32:35.841008302 +0800Change: 2021-02-04 17:32:35.841008302 +0800#Linux是不会显示文件创建时间的。
3.cat 命令
// cat 命令用来查看文件内容。这个命令的基本信息如下。// 命令名称:cat。// 英文原意:concatenate files and print on the standard output。// 所在路径:/bin/cat。// 执行权限:所有用户。// 功能描述:合并文件并打印输出到标准输出// 命令格式[root@localhost ~]# cat [选项] 文件名// 选项:// -A:相当于-vET 选项的整合,用于列出所有隐藏符号// -E:列出每行结尾的回车符$// -n:显示行号// -T:把 Tab 键用^I 显示出来// -v:列出特殊字符
#查看文件[root@server21 ~]# cat yanqi命令重定向#列出所有隐藏符号[root@server21 ~]# cat -A yanqiM-eM-^QM-=M-dM-;M-$M-iM-^GM-^MM-eM-.M-^ZM-eM-^PM-^Q$#列出每行结尾的回车符$[root@server21 ~]# cat -E yanqi命令重定向$#显示行号[root@server21 ~]# cat -n yanqi1 命令重定向#把Tab键用^I显示出来[root@server21 ~]# cat -T yanqi^I命令重定向11111111111^I22222222#列出特殊符号[root@server21 ~]# cat -v yanqiM-eM-^QM-=M-dM-;M-$M-iM-^GM-^MM-eM-.M-^ZM-eM-^PM-^Q1111111111122222222#cat不适合查看长文件
4.more 命令
// more 是分屏显示文件的命令,其基本信息如下。// 命令名称:more。// 英文原意:file perusal filter for crt viewin。// 所在路径:/bin/more。// 执行权限:所有用户。// 功能描述:分屏显示文件内容。// more 命令比较简单,一般不用什么选项,命令会打开一个交互界面,可以识别一些交互命令。常用的交互命令如下。// 空格键:向下翻页。// b:向上翻页。// 回车键:向下滚动一行。// /字符串:搜索指定的字符串。// q:退出。
#more分屏显示文件[root@server21 ~]# more install.log--More--(16%)// 空格键:向下翻页。// b:向上翻页。// 回车键:向下滚动一行。// /字符串:搜索指定的字符串。// q:退出。
5.less 命令
// less 命令和 more 命令类似,只是 more 是分屏显示命令,而 less 是分行显示命令,其基本信息如下。// 命令名称:less。// 英文原意:opposite of more。// 所在路径:/usr/bin/less。// 执行权限:所有用户。// 功能描述:分行显示文件内容
#less分行显示文件内容#下箭头往下一行一行翻页#上箭头网上一行一行翻页#q退出
6.head 命令
// head 是用来显示文件开头的命令,其基本信息如下。// 命令名称:head。// 英文原意:output the first part of files。// 所在路径:/usr/bin/head。// 执行权限:所有用户。// 功能描述:显示文件开头的内容。// 1.命令格式[root@localhost ~]# head [选项] 文件名// 选项:// -n 行数:从文件头开始,显示指定行数// -v:显示文件名
#head显示文件头[root@server21 ~]# head install.log #显示文件头10行[root@server21 ~]# head -n 20 install.log #显示文件头特定行数
7.tail 命令
// 既然有显示文件开头的命令,就会有显示文件结尾的命令。tail 命令的基本信息如下。// 命令名称:tail。// 英文原意:output the last part of files。// 所在路径:/usr/bin/tail。// 执行权限:所有用户。// 功能描述:显示文件结尾的内容。// 命令格式[root@localhost ~]# tail [选项] 文件名// 选项:// -n 行数:从文件结尾开始,显示指定行数// -f:监听文件的新增内容
#tail显示文件尾10行[root@server21 ~]# tail install.log #显示文件尾10行[root@server21 ~]# tail -n 20 install.log #显示文件尾特定行数#监听某一个文件的新增内容[root@server21 ~]# tail -f install.log*** FINISHED INSTALLING PACKAGES *** #ctrl+C退出
8.ln 命令
// 我们来看看 ln 命令的基本信息。// 命令名称:ln。// 英文原意:make links between file。// 所在路径:/bin/ln。// 执行权限:所有用户。// 功能描述:在文件之间建立链接
[root@server21 ~]# ls -ild / #i显示i节点号,l长格式显示,d只显示目录2 dr-xr-xr-x. 22 root root 4096 Feb 4 17:19 /#所有系统的根目录的i及诶单号都是2,1在系统内核加载的时候已经占用了。根是从2开始计算的。
8.1、ln 命令的基本格式如下:
[root@localhost ~]# ln [选项] 源文件 目标文件// 选项:// -s:建立软链接文件。如果不加“-s”选项,则建立硬链接文件// -f:强制。如果目标文件已经存在,则删除目标文件后再建立链接文件// 如果创建硬链接:[root@server21 ~]# ln yanqi /tmp/yanqi_ln[root@server21 ~]# ls -il yanqi /tmp/yanqi_ln2621452 -rw-r--r-- 2 root root 0 Feb 4 18:02 /tmp/yanqi_ln2621452 -rw-r--r-- 2 root root 0 Feb 4 18:02 yanqi#建立硬链接文件,目标文件没有写文件名,会和原名一致#也就是/root/yanqi 和/tmp/yanqi_ln 是硬链接文件#修改源文件查看硬链接文件[root@server21 ~]# echo 硬连接 >> yanqi #源文件内修改文件内容[root@server21 ~]# cat /tmp/yanqi_ln #硬链接里面的内容会随之发生变化硬连接#修改硬链接文件查看源文件[root@server21 ~]# echo 硬链接里面添加数据 >> /tmp/yanqi_ln #硬链接里面添加数据[root@server21 ~]# cat yanqi #源文件内容也会随之发生变化硬连接硬链接里面添加数据// 如果创建软链接:[root@localhost ~]# touch bols[root@localhost ~]# ln -s /root/bols /tmp/#建立软链接文件
8.2 硬链接与软连接的特征
// 硬链接特征:// 源文件和硬链接文件拥有相同的 Inode 和 Block// 修改任意一个文件,另一个都改变// 删除任意一个文件,另一个都能使用// 硬链接标记不清,很难确认硬链接文件位置,不建议使用// 硬链接不能链接目录// 硬链接不能跨分区#硬链接不建议使用,它的标记是一个,不容易识别#硬链接不可以链接目录;目录做硬链接资源消耗太大// 软链接特征:// 软链接和源文件拥有不同的 Inode 和 Block// 两个文件修改任意一个,另一个都改变// 删除软链接,源文件不受影响;删除源文件,软链接不能使用// 软链接没有实际数据,只保存源文件的 Inode,不论源文件多大,软链接大小不变// 软链接的权限是最大权限 lrwxrwxrwx.,但是由于没有实际数据,最终访问时需要参考源文件权限// 软链接可以链接目录// 软链接可以跨分区// 软链接特征明显,建议使用软连接
#软连接:相当于windows下的快捷方式#软连接源文件删除后,软链接文件会随时消失[root@server21 ~]# rm -rf /tmp/*[root@server21 ~]# ln -s /root/yanqi /tmp/yanqi_软连接[root@server21 ~]# ll /tmp/yanqi_软连接lrwxrwxrwx 1 root root 11 Feb 4 18:20 /tmp/yanqi_软连接 -> /root/yanqi#i节点号完全不一致#修改软链接源文件,查看软链接文件[root@server21 ~]# echo 软链接 >> yanqi[root@server21 ~]# cat /tmp/yanqi_软连接软链接#修改软链接文件,查看源文件[root@server21 ~]# echo 软链接文件 >> /tmp/yanqi_软连接[root@server21 ~]# cat yanqi软链接软链接文件#删除源文件,查看软链接文件报错,查找不到该文件[root@server21 ~]# rm -rf /root/yanqi[root@server21 ~]# cat /tmp/yanqi_软连接cat: /tmp/yanqi_软连接: No such file or directory#在源文件写入大量的文件内容,而软链接文件的大小不会发生变化[root@server21 ~]# ls -ihl /root/yanqi /tmp/yanqi_软链接2621453 -rw-r--r-- 1 root root 2.8K Feb 4 18:28 /root/yanqi3932162 lrwxrwxrwx 1 root root 11 Feb 4 18:27 /tmp/yanqi_软链接 -> /root/yanqi#软链接链目录[root@server21 ~]# mkdir yanqi目录[root@server21 ~]# ln -s /root/yanqi目录/ /tmp/yanqi软链接目录[root@server21 ~]# ll /tmp/total 0lrwxrwxrwx 1 root root 11 Feb 4 18:27 yanqi_软链接 -> /root/yanqilrwxrwxrwx 1 root root 18 Feb 4 18:32 yanqi软链接目录 -> /root/yanqi目录/#软连接一定要写绝对路径[root@server21 ~]# ln -s yanqi /tmp/yanqi_软连接相对路径[root@server21 ~]# ln -s /root/yanqi /tmp/yan_软连接绝对路径[root@server21 ~]# ll /tmp/total 0lrwxrwxrwx 1 root root 5 Feb 4 18:38 yan_软连接相对路径 -> yanqi #报错lrwxrwxrwx 1 root root 11 Feb 4 18:39 yan_软连接绝对路径 -> /root/yanqi[root@server21 ~]# cat /tmp/yan_软连接相对路径 #查看文件失败cat: /tmp/yan_软连接相对路径: No such file or directory
四、目录和文件都能操作的命令
1.rm 命令
// rm 是强大的删除命令,不仅可以删除文件,也可以删除目录。这个命令的基本信息如下。// 命令名称:rm。// 英文原意:remove files or directories。// 所在路径:/bin/rm。// 执行权限:所有用户。// 功能描述:删除文件或目录。// 命令格式[root@localhost ~]# rm [选项] 文件或目录// 选项:// -f:强制删除(force)// -i:交互删除,在删除之前会询问用户// -r:递归删除,可以删除目录(recursive)
#-i必须添加的,默认就是-i选项[root@server21 ~]# rm -ir yanqi目录/rm: remove directory `yanqi目录'? y
2.cp 命令
// cp 是用于复制的命令,其基本信息如下:// 命令名称:cp。// 英文原意:copy files and directories。// 所在路径:/bin/cp。// 执行权限:所有用户。// 功能描述:复制文件和目录。// 命令格式[root@localhost ~]# cp [选项] 源文件 目标文件// 选项:// -a:相当于-dpr 选项的集合,这几个选项我们一一介绍// -d:如果源文件为软链接(对硬链接无效),则复制出的目标文件也为软链接// -i:询问,如果目标文件已经存在,则会询问是否覆盖// -p:复制后目标文件保留源文件的属性(包括所有者、所属组、权限和时间)// -r:递归复制,用于复制目录
#复制目录需要添加-r选项,递归复制#辅助后文件时间发生变化[root@server21 ~]# lltotal 4-rw-r--r-- 1 root root 2861 Feb 4 18:28 yanqi[root@server21 ~]# cp yanqi /tmp/[root@server21 ~]# ll /tmp/total 4-rw-r--r-- 1 root root 2861 Feb 4 18:44 yanqi#被复制的文件和源文件参数都一致,包括系统时间保持一致#-a:保持目标文件和源文件保持一致[root@server21 ~]# ll yanqi-rw-r--r-- 1 root root 2861 Feb 4 18:28 yanqi[root@server21 ~]# cp -a yanqi /tmp/[root@server21 ~]# ll /tmp/total 4-rw-r--r-- 1 root root 2861 Feb 4 18:28 yanqi
3.mv 命令
// mv 是用来剪切的命令,其基本信息如下。// 命令名称:mv。// 英文原意:move (rename) files。// 所在路径:/bin/mv。// 执行权限:所有用户。// 功能描述:移动文件或改名。// 命令格式[root@localhost ~]# mv [选项] 源文件 目标文件// 选项:// -f:强制覆盖,如果目标文件已经存在,则不询问,直接强制覆盖// -i:交互移动,如果目标文件已经存在,则询问用户是否覆盖(默认选项)// -v:显示详细信息
#文件移动或重命名#移动[root@server21 ~]# mv yanqi /tmp/[root@server21 ~]# ll /tmp/total 4-rw-r--r-- 1 root root 2861 Feb 4 18:28 yanqi#改名[root@server21 ~]# lsyanqi[root@server21 ~]# mv yanqi /tmp/yanqi_gaiming[root@server21 ~]# ll /tmp/total 0-rw-r--r-- 1 root root 0 Feb 4 18:49 yanqi_gaiming#剪贴后源文件消失#源文件和目标文件在同一个目录下就是重命名,若是不在同一个目录下,就是剪贴
五、基本权限管理
1、权限的介绍
// 1.权限的介绍// 权限位的含义// 前面讲解 ls 命令时,我们已经知道长格式显示的第一列就是文件的权限,例如:[root@localhost ~]# ls -l install.log-rw-r--r--. 1 root root 24772 1 月 14 18:17 install.log// 第一列的权限位如果不计算最后的“.”(这个点的含义我们在后面解释),则共有 10 位,这 10位权限位的含义如图 4-4 所示。

// 第 1 位代表文件类型。Linux 不像 Windows 使用扩展名表示文件类型,而是使用权限位的第 1位表示文件类型。虽然 Linux 文件的种类不像 Windows 中那么多,但是分类也不少,详细情况可以使用“info ls”命令查看。超哥在这里只讲一些常见的文件类型。# - “-”:普通文件。// - “b”:块设备文件。这是一种特殊设备文件,存储设备都是这种文件,如分区文件/dev/sda1就是这种文件。// - “c”:字符设备文件。这也是特殊设备文件,输入设备一般都是这种文件,如鼠标、键盘等。# - “d”:目录文件。Linux 中一切皆文件,所以目录也是文件的一种。# - “l”:软链接文件。// - “p”:管道符文件。这是一种非常少见的特殊设备文件。// - “s”:套接字文件。这也是一种特殊设备文件,一些服务支持 Socket 访问,就会产生这样的文件。第 2~4 位代表文件所有者的权限。// - r:代表 read,是读取权限。// - w:代表 write,是写权限。// - x:代表 execute,是执行权限。如果有字母,则代表拥有对应的权限;如果是“-”,则代表没有对应的权限。第 5~7 位代表文件所属组的权限,同样拥有“rwx”权限。第 8~10 位代表其他人的权限,同样拥有“rwx”权限。
#linux的帮助命令:man:帮助信息,info:更详细的信息[root@server21 ~]# ls -ltotal 20-rw-------. 1 root root 1112 Feb 4 07:46 anaconda-ks.cfg-rw-r--r--. 1 root root 9615 Feb 4 07:46 install.log-rw-r--r--. 1 root root 3161 Feb 4 07:45 install.log.syslog-rw-r--r-- 1 root root 0 Feb 4 18:53 yanqi# 中 . 表示受selinux保护的,#PHP和MySQL的时候会成.sock文件,谨慎使用,删除后拷贝同版本的文件还是会失效,只有重装解决。
2.基本权限命令
#chmod// 首先来看修改权限的命令 chmod,其基本信息如下。// 命令名称:chmod。// 英文原意:change file mode bits。// 所在路径:/bin/chmod。// 执行权限:所有用户。// 功能描述:修改文件的权限模式。// 2.1.命令格式[root@localhost ~]# chmod [选项] 权限模式 文件名// 选项:// -R:递归设置权限,也就是给子目录中的所有文件设定权限// 2.2.权限模式// chmod 命令的权限模式的格式是“[ugoa][[+-=][perms]]”,也就是“[用户身份][[赋予方式][权限]]”的格式,我们来解释一下。// 用户身份。// - u:代表所有者(user)。// - g:代表所属组(group)。// - o:代表其他人(other)。// - a:代表全部身份(all)。// 赋予方式。// - +:加入权限。// - -:减去权限。// - =:设置权限。// 权限。// - r:读取权限(read)。// - w:写权限(write)。// - x:执行权限(execute)。// 2.3.数字权限// 数字权限的赋予方式是最简单的,但是不如之前的字母权限好记、直观。我们来看看这些数字权限的含义。// 4:代表“r”权限。// 2:代表“w”权限。// 1:代表“x”权限。// 2.4.常用权限// 数字权限的赋予方式更加简单,但是需要用户对这几个数字更加熟悉。其实常用权限也并不多,只有如下几个。// 644:这是文件的基本权限,代表所有者拥有读、写权限,而所属组和其他人拥有只读权限。// 755:这是文件的执行权限和目录的基本权限,代表所有者拥有读、写和执行权限,而所属组和其他人拥有读和执行权限。// 777:这是最大权限。在实际的生产服务器中,要尽力避免给文件或目录赋予这样的权限,这会造成一定的安全隐患。
#给所有者添加执行权限[root@server21 ~]# ll yanqi-rw-r--r-- 1 root root 0 Feb 4 18:53 yanqi[root@server21 ~]# chmod u+x yanqi[root@server21 ~]# ll yanqi-rwxr--r-- 1 root root 0 Feb 4 18:53 yanqi#给所属组合其他人加入写权限,Linux是允许逗号隔开,执行多个参数的[root@server21 ~]# ll yanqi-rwxr--r-- 1 root root 0 Feb 4 18:53 yanqi[root@server21 ~]# chmod g+w,o+w yanqi[root@server21 ~]# ll yanqi-rwxrw-rw- 1 root root 0 Feb 4 18:53 yanqi#减去刚才给yanqi文件赋予的权限[root@server21 ~]# chmod u-x yanqi[root@server21 ~]# chmod g-w,o-w yanqi[root@server21 ~]# ll yanqi-rw-r--r-- 1 root root 0 Feb 4 18:53 yanqi
#也可以使用=号去确定,不用在意之前的权限,直接定义为等号后面的权限#用数字赋予文件权限#给文件授予755权限[root@server21 ~]# ll yanqi-rw-r--r-- 1 root root 0 Feb 4 18:53 yanqi[root@server21 ~]# chmod 755 yanqi[root@server21 ~]# ll yanqi-rwxr-xr-x 1 root root 0 Feb 4 18:53 yanqi#给目录授予644权限[root@server21 ~]# chmod 644 yanqi_mulu/[root@server21 ~]# ll-rwxr-xr-x 1 root root 0 Feb 4 18:53 yanqidrw-r--r-- 2 root root 4096 Feb 4 19:14 yanqi_mulu#创建的权限:# 644:这是文件的基本权限,代表所有者拥有读、写权限,而所属组和其他人拥有只读权限。# 755:这是文件的执行权限和目录的基本权限,代表所有者拥有读、写和执行权限,而所属组和其他人拥有读和执行权限。# 777:这是最大权限。在实际的生产服务器中,要尽力避免给文件或目录赋予这样的权限,这会造成一定的安全隐患。#所有者的权限>=所属组>=其他用户权限
3.基本权限的作用
// 3.1.权限含义的解释// 首先,读、写、执行权限对文件和目录的作用是不同的。// 权限对文件的作用。// - 读(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 命令,进入// 目录。// 3.1.目录的可用权限// 目录的可用权限其实只有以下几个。// 0:任何权限都不赋予。// 5:基本的目录浏览和进入权限。// 7:完全权限。
4.所有者和所属组命令
#4.1.chown 命令// chown 是修改文件和目录的所有者和所属组的命令,其基本信息如下。// 命令名称:chown。// 英文原意:change file owner and group。// 所在路径:/bin/chown。// 执行权限:所有用户。// 功能描述:修改文件和目录的所有者和所属组。1)命令格式[root@localhost ~]# chown [选项] 所有者:所属组 文件或目录//选项:// -R递归设置权限,也就是给子目录中的所有文件设置权限普通用户不能修改文件的所有者,哪怕自己是这个文件的所有者也不行。// 普通用户可以修改所有者是自己的文件的权限。#4.2.chgrp 命令// chgrp 是修改文件和目录的所属组的命令,其基本信息如下。// 命令名称:chgrp。// 英文原意:change group ownership。// 所在路径:/bin/chgrp。// 执行权限:所有用户。// 功能描述:修改文件和目录的所属组。#需要删除文件,需要对文件的上级目录,要有写权限,才可以删除该文件#在linux下该文件有执行权限,就可以执行;到底可不可以执行,要看文件代码是否正确;对于文件来说:最大权限是执行权限#执行权限来说,对于目录来说没有什么意义。写权限是最大权限。#对于目录来说,赋只读是没有意义的
#添加yanqi用户#若是添加一个用户,会生成一个同名的初始组。[root@server21 ~]# useradd yanqi[root@server21 ~]# passwd yanqiChanging password for user yanqi.New password:BAD PASSWORD: it is WAY too shortBAD PASSWORD: is a palindromeRetype new password:passwd: all authentication tokens updated successfully.#修改文件的所有者和所属组[root@server21 ~]# lltotal 4-rwxr-xr-x 1 root root 0 Feb 4 18:53 yanqidrw-r--r-- 2 root root 4096 Feb 4 19:14 yanqi_mulu[root@server21 ~]# chown yanqi yanqi[root@server21 ~]# lltotal 4-rwxr-xr-x 1 yanqi root 0 Feb 4 18:53 yanqidrw-r--r-- 2 root root 4096 Feb 4 19:14 yanqi_mulu#修改文件的所属组[root@server21 ~]# lltotal 4-rwxr-xr-x 1 yanqi root 0 Feb 4 18:53 yanqidrw-r--r-- 2 root root 4096 Feb 4 19:14 yanqi_mulu[root@server21 ~]# chgrp yanqi yanqi[root@server21 ~]# lltotal 4-rwxr-xr-x 1 yanqi yanqi 0 Feb 4 18:53 yanqidrw-r--r-- 2 root root 4096 Feb 4 19:14 yanqi_mulu#chown既可以改所有者和所属组;中间用冒号和.号分割[root@server21 ~]# lltotal 4-rwxr-xr-x 1 yanqi yanqi 0 Feb 4 18:53 yanqidrw-r--r-- 2 root root 4096 Feb 4 19:14 yanqi_mulu[root@server21 ~]# chown root:root yanqi[root@server21 ~]# lltotal 4-rwxr-xr-x 1 root root 0 Feb 4 18:53 yanqidrw-r--r-- 2 root root 4096 Feb 4 19:14 yanqi_mulu#只有超级用户才可以修改文件的所有者和所属组;普通用户可以修改文件的所有者和所属组?[root@server21 ~]# su yanqi[yanqi@server21 ~]$ lltotal 0-rw-rw-r-- 1 yanqi yanqi 0 Feb 4 19:26 yanqi[yanqi@server21 ~]$ chmod 755 yanqi[yanqi@server21 ~]$ lltotal 0-rwxr-xr-x 1 yanqi yanqi 0 Feb 4 19:26 yanqi//普通用户是可以修改所有和是自己的文件的权限[yanqi@server21 ~]$ chown yanqi1 yanqichown: changing ownership of `yanqi': Operation not permitted #不允许操作。//普通用户不能修改文件的所有者(哪怕文件是属于这个普通用户的)只有超级用户才能修改所有者和所属组。
#普通用户下实验[yanqi@server21 ~]$ mkdir yanqi_ceshi[yanqi@server21 ~]$ touch yanqi_ceshi/yanqi#用户匹配的是哪个权限,用户匹配是文件的所有者权限#建个测试目录及文件并把它的权限改为0#root用户不可以不能做该实验;所有者可以更改所属文件的权限;yanqi用户匹配的是自己的权限#修改文件的权限所有者权限为0[yanqi@server21 ~]$ chmod 064 yanqi_ceshi/yanqi[yanqi@server21 ~]$ ll yanqi_ceshi/yanqi----rw-r-- 1 yanqi yanqi 0 Feb 4 10:34 yanqi_ceshi/yanqi#修改目录的权限所有者为0[yanqi@server21 ~]$ chmod 075 yanqi_ceshi/[yanqi@server21 ~]$ lltotal 4d---rwxr-x 2 yanqi yanqi 4096 Feb 4 10:34 yanqi_ceshi#所有者没有权限,文件都所有者都是不可以被操作的[yanqi@server21 ~]$ ls yanqi_ceshi/ls: cannot open directory yanqi_ceshi/: Permission denied[yanqi@server21 ~]$ cd yanqi_ceshi/bash: cd: yanqi_ceshi/: Permission denied#修改所有者权限为只读[yanqi@server21 ~]$ chmod 475 yanqi_ceshi///可以查看到文件,但是文件内容是不可以查看的,没有任何权限的[yanqi@server21 ~]$ lltotal 4dr--rwxr-x 2 yanqi yanqi 4096 Feb 4 10:34 yanqi_ceshi[yanqi@server21 ~]$ ls yanqi_ceshi/ls: cannot access yanqi_ceshi/yanqi: Permission deniedyanqi[yanqi@server21 ~]$ ls -l yanqi_ceshi/ls: cannot access yanqi_ceshi/yanqi: Permission deniedtotal 0-????????? ? ? ? ? ? yanqi//赋予575权限,可以正常查看[yanqi@server21 ~]$ chmod 575 yanqi_ceshi/[yanqi@server21 ~]$ ll -l yanqi_ceshi/total 0----rw-r-- 1 yanqi yanqi 0 Feb 4 10:34 yanqi#所有者没有任何权限,读写删都不可以执行[yanqi@server21 yanqi_ceshi]$ lltotal 0----rw-r-- 1 yanqi yanqi 0 Feb 4 10:34 yanqi[yanqi@server21 yanqi_ceshi]$ cat yanqicat: yanqi: Permission denied[yanqi@server21 yanqi_ceshi]$ echo ceshi >> yanqibash: yanqi: Permission denied[yanqi@server21 yanqi_ceshi]$ rm -rf yanqirm: cannot remove# `yanqi': Permission denied//赋予464权限[yanqi@server21 yanqi_ceshi]$ chmod 464 yanqi[yanqi@server21 yanqi_ceshi]$ lltotal 0-r--rw-r-- 1 yanqi yanqi 0 Feb 4 10:34 yanqi[yanqi@server21 yanqi_ceshi]$ cat yanqi #可以正常读[yanqi@server21 yanqi_ceshi]$ echo ceshi >> yanqi #不可以写bash: yanqi: Permission denied//为文件授予写权限[yanqi@server21 yanqi_ceshi]$ echo ceshi >> yanqibash: yanqi: Permission denied[yanqi@server21 yanqi_ceshi]$ chmod 664 yanqi[yanqi@server21 yanqi_ceshi]$ echo ceshi >> yanqi[yanqi@server21 yanqi_ceshi]$ cat yanqiceshi#为文件授予删除权限;需要给上级目录授予写权限,才可以执行删除权限[yanqi@server21 ~]$ lltotal 4dr-xrwxr-x 2 yanqi yanqi 4096 Feb 4 10:34 yanqi_ceshi[yanqi@server21 ~]$ rm -rf yanqi_ceshi/yanqi #上级目录没有写权限,执行删除文件报错rm: cannot remove# `yanqi_ceshi/yanqi': Permission denied[yanqi@server21 ~]$ chmod 775 yanqi_ceshi/ #为上级目录授予写权限,执行目录下的删除文件[yanqi@server21 ~]$ rm -rf yanqi_ceshi/yanqi[yanqi@server21 ~]$ ll yanqi_ceshi/total 0
5.umask 默认权限
// 5.1 查看系统的 umask 权限[root@localhost ~]# umask0022// 用八进制数值显示 umask 权限[root@localhost ~]# umask -Su=rwx,g=rx,o=rx// 用字母表示文件和目录的初始权限// 2 umask 权限的计算方法// 我们需要先了解一下新建文件和目录的默认最大权限。// 对文件来讲,新建文件的默认最大权限是 666,没有执行(x)权限。这是因为执行权限对文件来讲比较危险,不能在新建文件的时候默认赋予,而必须通过用户手工赋予。// 对目录来讲,新建目录的默认最大权限是 777。这是因为对目录而言,执行(x)权限仅仅代表进入目录,所以即使建立新文件时直接默认赋予,也没有什么危险。按照官方的标准算法,umask 默认权限需要使用二进制进行逻辑与和逻辑非联合运算才可以得到正确的新建文件和目录的默认权限。这种方法既不好计算,也不好理解,超哥并不推荐。我们在这里还是按照权限字母来讲解 umask 权限的计算方法。我们就按照默认的 umask 值是 022来分别计算一下新建文件和目录的默认权限吧。// 文件的默认权限最大只能是 666,而 umask 的值是 022 “-rw-rw-rw-”减去 “-----w--w-”等于“-rw-r--r—”// 目录的默认权限最大可以是 777,而 umask 的值是 022 “drwxrwxrwx”减去“d----w--w-”等于“drwx-r-xr-x”// 注意:umask 默认权限的计算绝不是数字直接相减。// 例如 umask 是 033 呢?// 文件的默认权限最大只能是 666,而 umask 的值是 033 “-rw-rw-rw-”减去“-----wx-wx”等于“-rw-r--r—”
#umask查看系统权限;查看当前系统的默认权限的[root@server21 ~]# umask0022 #第二个0[root@server21 ~]# umask -Su=rwx,g=rx,o=rx#新建文件,查看默认权限[yanqi@server21 ~]$ touch yanqi_umask[yanqi@server21 ~]$ lltotal 0-rw-rw-r-- 1 yanqi yanqi 0 Feb 4 10:51 yanqi_umask#umask基本上不会去更改#linux是修改umask值;证明umask值不是644-022的方式[yanqi@server21 ~]$ umask 033[yanqi@server21 ~]$ touch yanqi_umask_xin[yanqi@server21 ~]$ lltotal 0-rw-rw-r-- 1 yanqi yanqi 0 Feb 4 10:51 yanqi_umask-rw-r--r-- 1 yanqi yanqi 0 Feb 4 11:07 yanqi_umask_xin[yanqi@server21 ~]$ umask0033#linux的umask值是通过二进制进行逻辑运算再进行逻辑位运算,对于计算机上,基本上不消耗任何资源#官方建议使用rwx字母来定义#减完如果是负,只是空权限;没有空权限[yanqi@server21 ~]$ umask 022#永久修改系统umask值,环境变量配置文件[yanqi@server21 ~]$ vim /etc/profileif [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; thenumask 002elseumask 022fi
六、帮助命令
// 1.man 命令// man 是最常见的帮助命令,也是 Linux 最主要的帮助命令,其基本信息如下。// 命令名称:man。// 英文原意:format and display the on-line manual pages。// 所在路径:/usr/bin/man。// 执行权限:所有用户。// 功能描述:显示联机帮助手册。// 1.1.命令格式[root@localhost ~]# man [选项] 命令// 选项:// -f:查看命令拥有哪个级别的帮助// -k:查看和命令相关的所有帮助
1.2.man 命令的快捷键
| 作用 | |
| 上箭头 | 向上移动一行 |
| 下箭头 | 向下移动一行 |
| PgUp | 向上翻一页 |
| PgDn | 向下翻一页 |
| g | 移动到第一页 |
| G | 移动到最后一页 |
| q | 退出 |
| /字符串 | 从当前页向下搜索字符串 |
| ?字符串 | 从当前页向下搜索字符串 |
| n | 当搜索字符串时,可以使用n键找到下一个字符串 |
| N | 当搜索字符串时,使用N键反向查询字符串,也就是说,如果使用“/字符串”方式搜索,则N键表示向上搜索字符串,如果使用“?字符串”方式搜索,则N键表示向下搜索字符串。 |
1.3、man命令的帮助级别
| 作用 | |
| 1 | 普通用户可以执行的系统命令和可执行文件的帮助 |
| 2 | 内核可以调用的函数和工具的帮助 |
| 3 | C语言函数的帮助 |
| 4 | 设备和特殊文件的帮助 |
| 5 | 配置文件的帮助 |
| 6 | 游戏的帮助(个人版的Linux中是有游戏的) |
| 7 | 杂项的帮助 |
| 8 | 超级用户可以执行的系统命令的帮助 |
| 9 | 内核的帮助 |
man -f 命令 或 whatis 命令// 查看命令拥有哪个级别的帮助man -k 命令 或 apropos 命令// 查看和命令相关的所有帮助
#man帮助命令#查看命令位置[root@server11 ~]# whereis lsls: /usr/bin/ls /usr/share/man/man1/ls.1.gz /usr/share/man/man1p/ls.1p.gz#查看当前登录的用户[root@server11 ~]# whoamiroot#查看该命令的作用[root@server11 ~]# man -f lsls (1) - list directory contentsls (1p) - list directory contents[root@server11 ~]# whatis lsls (1) - list directory contentsls (1p) - list directory contents[root@server11 ~]# whatis passwdpasswd (5) - password filepasswd (1) - update user's authentication tokenssslpasswd (1ssl) - compute password hashe#更新数据库[root@server11 ~]# makewhatis#查看该命令中所有包含目标命令的所有目录[root@server11 ~]# man -k ls
2.info 命令
info 命令的帮助信息是一套完整的资料,每个单独命令的帮助信息只是这套完整资料中的某一个小章节。
| 作用 | |
| 上箭头 | 向上移动一行 |
| 下箭头 | 向下移动一行 |
| PgUp | 向上翻一行 |
| PgDn | 向下翻一行 |
| Tab | 在有“*”符号的节点间进行切换 |
| 回车 | 进入有“*”符号的子页面,查看详细帮助信息 |
| u | 进入上一层信息(回车是进入下一层信息) |
| n | 进入下一小节信息 |
| p | 进入上一小节信息 |
| ? | 查看帮助信息 |
| q | 退出info信息 |
[root@server11 ~]# info ls10.1 'ls': List directory contents #n下一小节10.2 'dir': Briefly list directory contents10.3 'vdir': Verbosely list directory contents10.1 'ls': List directory contents #p下一小节10.2 'dir': Briefly list directory contents
3.help 命令
// help 只能获取 Shell 内置命令的帮助// help 命令的基本信息如下。// 命令名称:help。// 英文原意:help。// 所在路径:Shell 内置命令。// 执行权限:所有用户。// 功能描述:显示 Shell 内置命令的帮助。可以使用 type 命令来区分内置命令与外部命令// shell 是 Linux 的命令解释器。
4.--help 选项
// 绝大多数命令都可以使用“--help”选项来查看帮助,这也是一种获取帮助的方法。例如:[root@localhost ~]# ls --help// 这种方法非常简单,输出的帮助信息基本上是 man 命令的信息简要版。对于这 4 种常见的获取帮助的方法,大家可以按照自己的习惯任意使用。
#怎么区分命令是内部命令还是外部命令[root@server11 ~]# type mkdirmkdir is /usr/bin/mkdir #只要可以看到命令的执行文件就是外部命令[root@server11 ~]# type cdcd is a shell builtin #内部命令;只能查看linux的内部命令[root@server11 ~]# help mkdir-bash: help: no help topics match `mkdir'. Try `help help' or `man -k mkdir' or `info mkdir'.[root@server11 ~]# man cd #man也可以查看内部命令;而查看的是所有相关的意义[root@server11 ~]# ls --help #解释更详细
七、搜索命令
1.whereis 命令
// whereis 是搜索系统命令的命令(像绕口令一样),也就是说,whereis 命令不能搜索普通文件,而只能搜索系统命令。whereis 命令的基本信息如下。// 命令名称:whereis。// 英文原意:locate the binary, source, and manual page files for a command。// 所在路径:/usr/bin/whereis。// 执行权限:所有用户。// 功能描述:查找二进制命令、源文件和帮助文档的命令。
2.which 命令
// which 也是搜索系统命令的命令。和 whereis 命令的区别在于:// whereis 命令可以在查找到二进制命令的同时,查找到帮助文档的位置;而 which 命令在查找到二进制命令的同时,如果这个命令有别名,则还可以找到别名命令。// which 命令的基本信息如下。// 命令名称:which。// 英文原意:shows the full path of (shell) commands。// 所在路径:/usr/bin/which。// 执行权限:所有用户。// 功能描述:列出命令的所在路径。
#搜索命令的命令;只能搜索系统命令,不能搜索系统文件[root@server11 ~]# whereis lsls: /usr/bin/ls /usr/share/man/man1/ls.1.gz /usr/share/man/man1p/ls.1p.gz[root@server11 ~]# which lsalias ls='ls --color=auto' #别名/usr/bin/ls#系统存在的别名[root@server11 ~]# aliasalias cp='cp -i'alias egrep='egrep --color=auto'alias fgrep='fgrep --color=auto'alias grep='grep --color=auto'alias l.='ls -d .* --color=auto'alias ll='ls -l --color=auto'alias ls='ls --color=auto'alias mv='mv -i'alias rm='rm -i'alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
3.locate 命令
// 3.1 基本用法// locate 命令才是可以按照文件名搜索普通文件的命令。// 优点:按照数据库搜索,搜索速度快,消耗资源小。数据库位置/var/lib/mlocate/mlocate.db,可以使用 updatedb 命令强制更新数据库。// 缺点:只能按照文件名来搜索文件,而不能执行更复杂的搜索,比如按照权限、大小、修改时间等搜索文件。locate 命令的基本信息如下。// 命令名称:locate。// 英文原意:find files by name。// 所在路径:/usr/bin/locate。// 执行权限:所有用户。// 功能描述:按照文件名搜索文件。// 3.2 配置文件[root@localhost ~]# vi /etc/updatedb.confPRUNE_BIND_MOUNTS = "yes"// 开启搜索限制,也就是让这个配置文件生效PRUNEFS = "……"// 在 locate 执行搜索时,禁止搜索这些文件系统类型PRUNENAMES = "……"// 在 locate 执行搜索时,禁止搜索带有这些扩展名的文件PRUNEPATHS = "……"// 在 locate 执行搜索时,禁止搜索这些系统目录
#搜索普通文件,只能搜索文件名;所索的速度快,速度极快#locate的执行数据库[root@server11 ~]# vim /var/lib/mlocate/mlocate.db#locate搜索root下的文件搜索不到[root@server11 ~]# locate yanqi #库没有更新;退出登录之后就会更新或者重启#升级数据库;[root@server11 ~]# updatedb #强制更新数据库[root@server11 ~]# locate yanqi #现在就可以搜索到/root/yanqi#tmp下创建yanqi文件[root@server11 ~]# touch /tmp/yanqi[root@server11 ~]# updatedb[root@server11 ~]# locate yanqi #tmp下的还是搜索不到/root/yanqi#解释tmp下搜索不到yanqi文件的原因[root@server11 ~]# vim /etc/updatedb.confPRUNE_BIND_MOUNTS = "yes" #配置文件生效PRUNEFS = "9p afs anon_inodefs auto autofs bdev binfmt_misc cgroup cifs coda configfs cpuset debugfs devpts ecryptfs exofs fuse fuse.sshfs fusectl gfs gfs2 gpfs hugetlbfs inotifyfs iso9660 jffs2 lustre mqueue ncpfs nfs nfs4 nfsd pipefs proc ramfs rootfs rpc_pipefs securityfs selinuxfs sfs sockfs sysfs tmpfs ubifs udf usbfs fuse.glusterfs ceph fuse.ceph" #不搜索光盘,网络存储不不搜,PRUNENAMES = ".git .hg .svn" #禁止搜索这些后缀名的,是系统文件,没有意义PRUNEPATHS = "/afs /media /mnt /net /sfs /tmp /udev /var/cache/ccache /var/lib/yum/yumdb /var/spool/cups /var/spool/squid /var/tmp /var/lib/ceph" #禁止搜索这些目录,tmp下是临时文件,搜索没有意义
4.find 命令
// find 命令的基本信息如下。// 命令名称:find。// 英文原意:search for files in a directory hierarchy。// 所在路径:/bin/find。// 执行权限:所有用户。// 功能描述:在目录中搜索文件。// 4.1 按照文件名搜索[root@localhost ~]# find 搜索路径 [选项] 搜索内容// 选项:// -name:按照文件名搜索// -iname:按照文件名搜索,不区分文件名大小写// -inum:按照 inode 号搜索// 4.2.按照文件大小搜索[root@localhost ~]# find 搜索路径 [选项] 搜索内容// 选项:// -size [+|-]大小:按照指定大小搜索文件这里的“+”的意思是搜索比指定大小还要大的文件,“-”的意思是搜索比指定大小还要小的文件。// find 命令的单位:[root@localhost ~]# man find-size n[cwbkMG]File uses n units of space. The following suffixes can be used:'b' for 512-byte blocks (this is the default if no suffix is used)// 这是默认单位,如果单位为 b 或不写单位,则按照 512 Byte 搜索'c' for bytes// 搜索单位是 c,按照字节搜索'w' for two-byte words// 搜索单位是 w,按照双字节(中文)搜索'k' for Kilobytes (units of 1024 bytes)// 按照 KB 单位搜索,必须是小写的 k'M' for Megabytes (units of 1048576 bytes)// 按照 MB 单位搜索,必须是大写的 M'G' for Gigabytes (units of 1073741824 bytes)// 按照 GB 单位搜索,必须是大写的 G// 4.3 按照修改时间搜索// Linux 中的文件有访问时间(atime)、数据修改时间(mtime)、状态修改时间(ctime)这三个时间,我们也可以按照时间来搜索文件。[root@localhost ~]# find 搜索路径 [选项] 搜索内容// 选项:// -atime [+|-]时间:按照文件访问时间搜索// -mtime [+|-]时间:按照文件数据修改时间搜索// -ctime [+|-]时间:按照文件状态修改时间搜索// 这三个时间的区别我们在 stat 命令中已经解释过了,这里用 mtime 数据修改时间来举例,重点说说“[+-]”时间的含义。// -5:代表 5 天内修改的文件。// 5:代表前 5~6 天那一天修改的文件。// +5:代表 6 天前修改的文件。// 我们画一个时间轴,来解释一下,如图 4-6 所示。

// 4.4 按照权限搜索// 命令格式。[root@localhost ~]# find 搜索路径 [选项] 搜索内容// 选项:// -perm 权限模式:查找文件权限刚好等于“权限模式”的文件// -perm -权限模式:查找文件权限全部包含“权限模式”的文件// -perm +权限模式:查找文件权限包含“权限模式”的任意一个权限的文件// 4.5 按照所有者和所属组搜索[root@localhost ~]# find 搜索路径 [选项] 搜索内容// 选项:// -uid 用户 ID:按照用户 ID 查找所有者是指定 ID 的文件// -gid 组 ID:按照用户组 ID 查找所属组是指定 ID 的文件// -user 用户名:按照用户名查找所有者是指定用户的文件// -group 组名:按照组名查找所属组是指定用户组的文件// -nouser:查找没有所有者的文件按照所有者和所属组搜索时,“-nouser”选项比较常用,主要用于查找垃圾文件。只有一种情况例外,那就是外来文件。比如光盘和 U 盘中的文件如果是由 Windows 复制的,在Linux 中查看就是没有所有者的文件;再比如手工源码包安装的文件,也有可能没有所有者// 4.6 按照文件类型搜索[root@localhost ~]# find 搜索路径 [选项] 搜索内容// 选项:// -type d:查找目录// -type f:查找普通文件// -type l:查找软链接文件// 4.7 逻辑运算符[root@localhost ~]# find 搜索路径 [选项] 搜索内容// 选项:// -a:and 逻辑与// -o:or 逻辑或// -not:not 逻辑非// 1)-a:and 逻辑与// find 命令也支持逻辑运算符选项,其中-a 代表逻辑与运算,也就是-a 的两个条件都成立,find 搜索的结果才成立。举个例子:[root@localhost ~]# find . -size +2k -a -type f// 在当前目录下搜索大于 2KB,并且文件类型是普通文件的文件// 2)-o:or 逻辑或-o 选项代表逻辑或运算,也就是-o 的两个条件只要其中一个成立,find 命令就可以找到结果。例// 如:[root@localhost ~]# find . -name cangls -o -name bols./cangls./bols// 在当前目录下搜索文件名要么是 cangls 的文件,要么是 bols 的文件// 3)-not:not 逻辑非-not 是逻辑非,也就是取反的意思。举个例子:[root@localhost ~]# find . -not -name cangls// 在当前目录下搜索文件名不是 cangls 的文件// 4.8 其他选项// 1)-exec 选项// 这里我们主要讲解两个选项“-exec”和“-ok”,这两个选项的基本作用非常相似。我们先来看看“-exec”选项的格式。[root@localhost ~]# find 搜索路径 [选项] 搜索内容 -exec 命令 2 {} \;// 其次,这个选项的作用其实是把 find 命令的结果交给由“-exec”调用的命令 2 来处理。“{}”就代表 find 命令的查找结果。// 2)-ok 选项// “-ok”选项和“-exec”选项的作用基本一致,区别在于:“-exec”的命令 2 会直接处理,而不询问;“-ok”的命令 2 在处理前会先询问用户是否这样处理,在得到确认命令后,才会执行。
#find命令;搜索位置越大,消耗的资源越大#1、搜索文件;[root@server11 ~]# find . -name yanqi #-name选项,按照文件名搜索;匹配搜索./yanqi#2、忽略大小写[root@server11 ~]# lsyanqi YANQI yanqi_ceshi[root@server11 ~]# find . -name yanqi./yanqi[root@server11 ~]# find . -iname yanqi #-iname:忽略大小写./yanqi./YANQI#3、通过I节点号搜索文件名[root@server11 ~]# ls -i yanqi134315090 yanqi[root@server11 ~]# find . -inum 134315090./yanqi# 4、通过find 的-inum来确定硬链接[root@server11 ~]# ln yanqi /tmp/yanqi_yinlianjie[root@server11 ~]# ll -i yanqi /tmp/yanqi_yinlianjie134315090 -rw-r--r-- 2 root root 0 Mar 4 15:37 /tmp/yanqi_yinlianjie134315090 -rw-r--r-- 2 root root 0 Mar 4 15:37 yanqi[root@server11 ~]# find / -inum 134315090/root/yanqi/tmp/yanqi_yinlianjie# 5、按照文件大小搜索[root@server11 ~]# echo aaaaaaaaaaaaaaaa >> yanqi[root@server11 ~]# lltotal 4-rw-r--r-- 1 root root 17 Mar 4 15:56 yanqi-rw-r--r-- 1 root root 0 Mar 4 15:52 YANQI-rw-r--r-- 1 root root 0 Mar 4 15:51 yanqi_ceshi[root@server11 ~]# lltotal 4-rw-r--r-- 1 root root 925 Mar 4 15:57 yanqi-rw-r--r-- 1 root root 0 Mar 4 15:52 YANQI-rw-r--r-- 1 root root 0 Mar 4 15:51 yanqi_ceshi[root@server11 ~]# find . -size 925c./yanqi#搜索小于28M的文件[root@server11 ~]# find . -size -28M#find的帮助;[root@server11 ~]# man find #默认是b字节,什么都不加是15*512,默认单位是512个字节# 6、按照文件修改时间搜索//time时间,默认是天,//-5代表5天内修改的文件,5代表前5~6天之间的文件;+5代表代表 6 天前修改的文件。[root@server11 ~]# find . -mtime +5[root@server11 ~]# find . -mtime 5[root@server11 ~]# find . -mtime -5# 7、按照权限搜索[root@server11 ~]# lltotal 4-rw-r--r-- 1 root root 925 Mar 4 15:57 yanqi-rw-r--r-- 1 root root 0 Mar 4 15:52 YANQI-rw-r--r-- 1 root root 0 Mar 4 15:51 yanqi_ceshi[root@server11 ~]# find . -perm 644//减权限[root@server11 test]# lltotal 0-rw-r--r-- 1 root root 0 Mar 4 16:33 yanqi1-rw-r--r-- 1 root root 0 Mar 4 16:33 yanqi2[root@server11 test]# chmod 600 yanqi1[root@server11 test]# lltotal 0-rw------- 1 root root 0 Mar 4 16:33 yanqi1-rw-r--r-- 1 root root 0 Mar 4 16:33 yanqi2[root@server11 test]# find . -perm -444../yanqi2[root@server11 test]# find . -perm +444#加号:只要是所有者所属组其他人任意一个权限大于该权限,都可以被搜索到#减号:所有权限必须大于444权限才可以被找到# 8、按照文件所有者和所属组搜索[root@server11 test]# find . -user root../yanqi1./yanqi2#查找没有所有者的文件;Linux中只有一种情况没有所有者的权限文件是正常文件,外来文件,在光盘或者U盘里没有所有者文件,是正常的。源码包文件,也可能没有所有者[root@server11 test]# find / -nouser #没有找到这种类型的文件find: ‘/proc/16443/task/16443/fd/5’: No such file or directoryfind: ‘/proc/16443/task/16443/fdinfo/5’: No such file or directoryfind: ‘/proc/16443/fd/6’: No such file or directoryfind: ‘/proc/16443/fdinfo/6’: No such file or directory# 9、按照文件类型来搜索[root@server11 test]# find . -type d.# 10、按照普通文件搜索[root@server11 test]# find . -type f./yanqi1./yanqi2#11、逻辑运算符//逻辑与运算:两个条件都成立[root@server21 ~]# find . -size +1k -a -type f./.bash_history//逻辑或运算:只有一个条件成立一个就可以[root@server21 ~]# find . -size +1k -o -type f//逻辑非运算;取反的意思[root@server21 ~]# find . -name yanqi./yanqi[root@server21 ~]# find . -not -name yanqi# OR[root@server21 ~]# find . ! -name yanqi#12、exec是把命令1的结果交给命令2来处理[root@server21 ~]# find . -size +1k -a -type f -exec ls -1h {} \; #必须以\;结束./.bash_history[yanqi@server21 ~]$ find /var/log/ -mtime +10 =exec rm -rf {} \; #不建议使用[yanqi@server21 ~]$ find /var/log/ -mtime +10 -ok rm -rf {} \; #建议使用
5.grep 命令:补充命令
// grep 的作用是在文件中提取和匹配符合条件的字符串行。命令格式如下:[root@localhost ~]# grep [选项] "搜索内容" 文件名// 选项:// -i: 忽略大小写// -n: 输出行号// -v:反向查找// --color=auto: 搜索出的关键字用颜色显示// find 也是搜索命令,那么 find 命令和 grep 命令有什么区别呢?// 1)find 命令// find 命令用于在系统中搜索符合条件的文件名,如果需要模糊查询,则使用通配符进行匹配,通配符是完全匹配(find 命令可以通过-regex 选项,把匹配规则转为正则表达式规则,但是不建议如此)。// 2)grep 命令// grep 命令用于在文件中搜索符合条件的字符串,如果需要模糊查询,则使用正则表达式进行匹配,正则表达式是包含匹配。
3)通配符与正则表达式的区别通配符:用于匹配文件名,完全匹配
| 作用 | |
| ? | 匹配一个任意字符 |
| * | 匹配0个或任意多个任意字符,也就是可以匹配任何内容 |
| [] | 匹配中括号中任意的一个字符,例如[abc]代表一定匹配一个字符,或者a,或者是b,或者是c, |
| [-] | 匹配中括号中任意一个字符,-代表一个范围。例如[a-z]代表匹配一个小写字母 |
| [^] | 逻辑非,表示匹配不是中括号内的一个字符,例如,[0-9]代表匹配一个不是数字的字符 |
正则表达式:用于匹配字符串,包含匹配
| 作用 | |
| ? | 匹配前一个字符重复0次,或1次(?是扩展正则,需要使用egrep命令) |
| * | 匹配前一个重复次,或任意多次 |
| [] | 匹配中括号中任意的一个字符,例如[abc]代表一定匹配一个字符,或者a,或者是b,或者是c, |
| [-] | 匹配中括号中任意一个字符,-代表一个范围。例如[a-z]代表匹配一个小写字母 |
| [^] | 逻辑非,表示匹配不是中括号内的一个字符,例如,[0-9]代表匹配一个不是数字的字符 |
| ^ | 匹配行首 |
| $ | 匹配行尾 |
#搜索文件里的数据的[root@server11 ~]# grep "123" yanqi123123abcabc123#显示行号原始文件[root@server11 ~]# grep -n "123" yanqi1:1233:123abc4:abc123#取反[root@server11 ~]# grep -v "123" yanqiabcABCAbcBCA#加入颜色,需要显示的内容用红色表示[root@server11 ~]# grep --color=auto "123" yanqi123123abcabc123#find是完全匹配,grep是包含匹配
#通配符 *[root@server11 ~]# find . -name "yanqi*"./yanqi_ceshi./yanqi[root@server11 ~]# rm -rf /tmp/*#通配符 ?问号表示任意一个内容[root@server11 ~]# find . -name "a?c"./abc./acc #ac是找不到的#通配符 [][root@server11 ~]# find . -name "a[bc]c"./abc./acc#通配符[-][root@server11 ~]# find . -name "a[A-z]c" #大写可以,小写也可以,大写要写在小写的前面./abc./acc#通配符[^]取反[root@server11 ~]# find . -name "a[^b]c"./acc
#正则匹配所有a字段的内容[root@server11 ~]# grep "a*" yanqi123abcabc123[root@server11 ~]# grep "aaa*" yanqiaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbccccccccccccccccccc123aaabbbbbbccccccccc#扩展正则egrep[root@server11 ~]# egrep "aaa?" yanqiaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbccccccccccccccccccc123aaabbbbbbccccccccc[root@server11 ~]# egrep "3aa?b" yanqi123abc#限位符[root@server11 ~]# grep "[0-9]$" yanqi123abc123#正则判断是文本判断,消耗资源少;程序判断会消耗很大的资源
6.管道符:补充命令
// 命令格式:// 命令 1 | 命令 2// 命令 1 的正确输出作为命令 2 的操作对象// 1)例子 1:// 举个例子,我们经常需要使用“ll”命令查看文件的长格式,不过在有些目录中文件众多,比如/etc/目录,使用“ll”命令显示的内容就会非常多,只能看到最后的内容,而不能看到前面输出的内容。这时我们马上想到 more 命令可以分屏显示文件内容,可是怎么让 more 命令分屏显示命令的输出呢?// 我想到了一种笨办法:[root@localhost ~]# ll -a /etc/ > /root/testfile// 用输出重定向,把 ll 命令的输出保存到/root/testfile 文件中[root@localhost ~]# more /root/testfile// 既然 testfile 是文件,当然可以用 more 命令分屏显示了总用量 1784drwxr-xr-x. 105 root root 12288 10 月 21 12:49 .dr-xr-xr-x. 26 root root 4096 6 月 5 19:06 ..…省略部分输出…-rwxr-xr-x. 1 root root 687 6 月 22 2012 auto.smb--More--(7%)// 可是这样操作实在不方便,这时就可以利用管道符了。命令如下:[root@localhost ~]# ll -a /etc/ | more// 2)例子 2:// 我想在命令 ll /etc/的结果中搜索 yum 的文件名,应该使用 find 命令?还是 grep 命令?[root@localhost ~]# ll -a /etc/ | grep yum// 3)例子 3:// netstat 命令(CentOS 7 中,需要安装 net-snmp.x86_64,net-tools.x86_64 两个包才有此命令。7.5系统中已经自动安装)格式如下:[root@localhost ~]# netstat [选项]// 选项:// -a:列出所有网络状态,包括 Socket 程序// -c 秒数:指定每隔几秒刷新一次网络状态// -n:使用 IP 地址和端口号显示,不使用域名与服务名// -p:显示 PID 和程序名// -t:显示使用 TCP 协议端口的连接状况// -u:显示使用 UDP 协议端口的连接状况// -l:仅显示监听状态的连接// -r:显示路由表[root@localhost ~]# netstat -an | grep "ESTABLISHED" | wc -l// 如果想知道具体的网络连接数量,就可以再使用 wc 命令统计行数// 统计正在连接的网络连接数量
#管道符:命令1的结果作为命令2的操作对象#管道符和exec基本一致#也称之为文本流操作#find不支持文本流操作#exec和管道符作用一致,但是find不支持管道符作用#把执行结果保存在一个文件中,并查看[root@server11 ~]# ll /etc/ | more #这个文件是不存在,临时的#管道符是文本流;只要加了管道符之后,执行后的结果都是文本字符串#只要加了管道符,后面是字符串,必须用grep[root@server11 ~]# ll /etc/ | grep yumdrwxr-xr-x. 6 root root 100 Feb 5 00:39 yum-rw-r--r--. 1 root root 970 Apr 13 2018 yum.confdrwxr-xr-x. 3 root root 72 Feb 5 01:59 yum.repos.d
#netstat[root@server11 ~]# netstat -tuln #查询系统当中开启的所有端口Active Internet connections (only servers)Proto Recv-Q Send-Q Local Address Foreign Address Statetcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN[root@server11 ~]# netstat -tuln |grep 80 #判断80端口是否存在[root@server11 ~]# netstat -an #查看所有,包括登录项目tcp 0 52 10.10.10.11:22 10.10.10.240:52107 ESTABLISHED#判断当前系统当中有多少用户在访问 #生产环境中操作[yanqi@server21 ~]$ netstat -an |grep "ESTABLISHED"tcp 0 0 20.20.20.21:22 20.20.20.240:51416 ESTABLISHED[yanqi@server21 ~]$ netstat -an |grep "ESTABLISHED" | wc -l #双管道符契合1
7.命令的别名:补充命令
// 命令的别名,就是命令的小名,主要是用于照顾管理员使用习惯的。// 命令格式:[root@localhost ~]# alias// 查询命令别名[root@localhost ~]# alias 别名='原命令'// 设定命令别名// 例如:[root@localhost ~]# alias ser='service network restart'// 用 ser 别名,替代 service network restart 命令// 用命令定义的别名,是临时生效的,要想永久生效,需要写入环境变量配置文件~/.bashrc
#别名#查询系统中已经生效的别名[yanqi@server21 ~]$ aliasalias l.='ls -d .* --color=auto'alias ll='ls -l --color=auto'alias ls='ls --color=auto'alias vi='vim'alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'#自己生成一个别名[yanqi@server21 ~]$ alias grep='grep --color=auto'[yanqi@server21 ~]$ aliasalias grep='grep --color=auto'#定义一个别名#别名的优先级高于系统命令的;定义一个系统别名的时候,不要和系统命令冲突;在定义之前执行以下命令看是否会执行或者whereies查看一下[yanqi@server21 ~]$ alias ser='service network restart'[yanqi@server21 ~]$ aliasalias ser='service network restart'[yanqi@server21 ~]$ ser#上述为临时生效的#永久生效需要写入到文件中 #环境变量放在/etc下对所有用户生效,放在自己家目录下,只对自己生效[yanqi@server21 ~]$ vim ~/.bashrcalias ser=' service network restart'
8.常用快捷键:补充命令
| 作用 | |
| Tab键 | 命令或文件补全 |
| Ctrl+A | 把光标移动到命令行开头,如果我们输入的命令过长,想要光标移动到命令行开头时使用 |
| Ctrl+E | 把光标移动到命令行结尾 |
| Ctrl+C | 强制终止当前的命令 |
| Ctrl+L | 清屏,相当于clear命令 |
| Ctrl+U | 删除或剪切光标之前的命令,我输入了一行很长的命令,不用使用退隔间一个一个字符的删除,使用这个快捷键就会更加方便 |
| Ctrl+Y | 粘贴ctrl+U剪切的内容 |
八、压缩和解压缩命令
在 Linux 中可以识别的常见压缩格式有十几种,比如“.zip”“.gz” .bz2”“.tar”“.tar.gz”“.tar.bz2”等。
1.“.zip”格式
// “.zip”是 Windows 中最常用的压缩格式,Linux 也可以正确识别“.zip”格式,这可以方便地和Windows 系统通用压缩文件。// 1.1.“.zip”格式的压缩命令// 压缩命令就是 zip,其基本信息如下。// 命令名称:zip。// 英文原意:package and compress (archive) files。// 所在路径:/usr/bin/zip。// 执行权限:所有用户。// 功能描述:压缩文件或目录。// 命令格式如下:[root@localhost ~]# zip [选项] 压缩包名 源文件或源目录// 选项:// -r:压缩目录// 例如:[root@localhost ~]# zip ana.zip anaconda-ks.cfg// 1.2.“.zip”格式的解压缩命令// “.zip”格式的解压缩命令是 unzip,其基本信息如下。// 命令名称:unzip。// 英文原意:list, test and extract compressed files in a ZIP archive。// 所在路径:/usr/bin/unzip。// 执行权限:所有用户。// 功能描述:列表、测试和提取压缩文件中的文件。// 命令格式如下:[root@localhost ~]# unzip [选项] 压缩包名// 选项:// -d:指定解压缩位置// 例如:[root@localhost ~]# unzip -d /tmp/ ana.zip// 把压缩包解压到指定位置
#zip#压缩文件[root@server11 ~]# zip yanqi.zip yanqi yanqi_yasuoadding: yanqi (deflated 80%)adding: yanqi_yasuo (stored 0%)[root@server11 ~]# rm -rf yanqi yanqi_yasuo[root@server11 ~]# unzip yanqi.zipArchive: yanqi.zipinflating: yanqiextracting: yanqi_yasuo[root@server11 ~]# lsyanqi yanqi_yasuo yanqi.zip#-d指定解压缩位置[root@server11 ~]# unzip -d /tmp yanqi.zipArchive: yanqi.zipinflating: /tmp/yanqiextracting: /tmp/yanqi_yasuo[root@server11 ~]# ls /tmp/yanqi yanqi_yasuo
2.“.gz”格式 不会打包
// 2.1.“.gz”格式的压缩命令// “.gz”格式是 Linux 中最常用的压缩格式,使用 gzip 命令进行压缩,其基本信息如下。// 命令名称:gzip。// 英文原意:compress or expand files。// 所在路径:/bin/gzip。// 执行权限:所有用户。// 功能描述:压缩文件或目录。// 这个命令的格式如下:[root@localhost ~]# gzip [选项] 源文件// 选项:// -c:将压缩数据输出到标准输出中,可以用于保留源文件// -d:解压缩// -r:压缩目录[root@localhost ~]# gzip -c anaconda-ks.cfg > anaconda-ks.cfg.gz#使用-c 选项,但是不让压缩数据输出到屏幕上,而是重定向到压缩文件中#这样可以在压缩文件的同时不删除源文件// 2.“.gz”格式的解压缩命令// 如果要解压缩“.gz”格式,那么使用“gzip -d 压缩包”和“gunzip 压缩包”命令都可以。我们// 先看看 gunzip 命令的基本信息。// 命令名称:gunzip。// 英文原意:compress or expand files。// 所在路径:/bin/gunzip。// 执行权限:所有用户。// 功能描述:解压缩文件或目录。// 例如:[root@localhost ~]# gunzip install.log.gz[root@localhost ~]# gzip -d anaconda-ks.cfg.gz// 两个命令都可以解压缩“.gz”格式
#gzip压缩完会把源文件删除掉;gzip默认是不保留源文件的[root@server11 ~]# gzip yanqi yanqi_yasuo[root@server11 ~]# lsyanqi.gz yanqi_yasuo.gz[root@server11 ~]# gzip -d yanqi.gz yanqi_yasuo.gz[root@server11 ~]# lsyanqi yanqi_yasuo yanqi.zip#保留源文件[root@server11 ~]# gzip -c yanqi #保留源文件®׀`yanqi342剌J䰴2Q@dq9:9s9¹NΉ\䨥4#[root@server11 ~]# gzip -c yanqi >> yanqi.gz #输出保留源文件,单大于号是覆盖,双大于号是追加[root@server11 ~]# lsyanqi yanqi.gz#压缩目录:不会压缩目录,而是把里面的文件直接压缩[root@server11 ~]# gzip -r yanqi.mulu/[root@server11 ~]# lsyanqi.mulu[root@server11 ~]# ls yanqi.mulu/yanqi.gz yanqi_yasuo.gz#gz格式是不会打包的[root@server11 ~]# gzip -r yanqi_mulu/
3.“.bz2”格式 不能压缩目录
// 3.1.“.bz2”格式的压缩命令// “.bz2”格式是 Linux 的另一种压缩格式,从理论上来讲,“.bz2”格式的算法更先进、压缩比更好;而“.gz”格式相对来讲压缩的时间更快。// “.bz2”格式的压缩命令是 bzip2,我们来看看这个命令的基本信息。// 命令名称:bzip2。// 英文原意:a block-sorting file compressor。// 所在路径:/usr/bin/bzip2。// 执行权限:所有用户。// 功能描述:.bz2 格式的压缩命令。// 来看看 bzip2 命令的格式。[root@localhost ~]# bzip2 [选项] 源文件// 选项:// -d:解压缩// -k:压缩时,保留源文件// -v:显示压缩的详细信息// 例如:[root@localhost ~]# bzip2 anaconda-ks.cfg// 压缩成.bz2 格式[root@localhost ~]# bzip2 -k install.log.syslog// 保留源文件压缩// 3.2.“.bz2”格式的解压缩命令// “.bz2”格式可以使用“bzip2 -d 压缩包”命令来进行解压缩,也可以使用“bunzip2 压缩包”命令来进行解压缩。先看看 bunzip2 命令的基本信息。// 命令名称:bunzip2。// 英文原意:a block-sorting file compressor。// 所在路径:/usr/bin/bunzip2。// 执行权限:所有用户。// 功能描述:.bz2 格式的解压缩命令。[root@localhost ~]# bunzip2 anaconda-ks.cfg.bz2[root@localhost ~]# bzip2 -d install.log.syslog.bz2// 两个命令都可以解压缩
#.bz2不能压缩目录[root@server11 ~]# bzip2 yanqi[root@server11 ~]# lsyanqi.bz2 yanqi_yasuo#保留源文件[root@server11 ~]# bzip2 -k yanqi_yasuo[root@server11 ~]# lsyanqi.bz2 yanqi_yasuo yanqi_yasuo.bz2#解压缩[root@server11 ~]# bzip2 -d yanqi.bz2[root@server11 ~]# lsyanqi[root@server11 ~]# bzip2 -d yanqi_yasuo.bz2bzip2: Output file yanqi_yasuo already exists.[root@server11 ~]# rm -rf yanqi_yasuo[root@server11 ~]# bzip2 -d yanqi_yasuo.bz2[root@server11 ~]# lsyanqi yanqi_yasuo#压缩目录[root@server11 ~]# bzip2 -r yanqi_mulu/ #直接报错
4.“.tar”格式 打包不会压缩
// 4.1.“.tar”格式的打包命令// “.tar”格式的打包和解打包都使用 tar 命令,区别只是选项不同。我们先看看 tar 命令的基本信息。// 命令名称:tar。// 英文原意:tar。// 所在路径:/bin/tar。// 执行权限:所有用户。// 功能描述:打包与解打包命令。// 命令的基本格式如下:[root@localhost ~]# tar [选项] [-f 压缩包名] 源文件或目录// 选项:// -c:打包// -f:指定压缩包的文件名。压缩包的扩展名是用来给管理员识别格式的,所以一定要正确指定扩展名// -v:显示打包文件过程[root@localhost ~]# tar -cvf anaconda-ks.cfg.tar anaconda-ks.cfg// 打包,不会压缩// 4.2.“.tar”格式的解打包命令// “.tar”格式的解打包也需要使用 tar 命令,但是选项不太一样。命令格式如下:[root@localhost ~]# tar [选项] 压缩包// 选项:// -x:解打包// -f:指定压缩包的文件名// -v:显示解打包文件过程// -t:测试,就是不解打包,只是查看包中有哪些文件// -C(大) 目录: 指定解打包位置// 例如[root@localhost ~]# tar -xvf anaconda-ks.cfg.tar// 解打包到当前目录下
#打包[root@server11 ~]# lsyanqi_mulu.tar[root@server11 ~]# tar -cvf yanqi_mulu.tar#解打包[root@server11 ~]# tar -xvf yanqi_mulu.taryanqi_mulu/yanqiyanqi_yasuo#压缩[root@server11 ~]# lsyanqi_yasuo.tar[root@server11 ~]# gzip yanqi_yasuo.tar[root@server11 ~]# lsyanqi_yasuo.tar.gz#解压缩;解打包[root@server11 ~]# lsyanqi_yasuo.tar.gz[root@server11 ~]# gzip -d yanqi_yasuo.tar.gz[root@server11 ~]# lsyanqi_yasuo.tar[root@server11 ~]# tar -xvf yanqi_yasuo.taryanqiyanqi_mulu/yanqi_yasuo[root@server11 ~]# lsyanqi yanqi_mulu yanqi_yasuo yanqi_yasuo.tar
5.“.tar.gz”和“.tar.bz2”格式
// 使用 tar 命令直接打包压缩。命令格式如下:[root@localhost ~]# tar [选项] 压缩包 源文件或目录// 选项:// -z:压缩和解压缩“.tar.gz”格式// -j:压缩和解压缩“.tar.bz2”格式// 例如:.tar.gz 格式[root@localhost ~]# tar -zcvf tmp.tar.gz /tmp/// 把/tmp/目录直接打包压缩为“.tar.gz”格式[root@localhost ~]# tar -zxvf tmp.tar.gz// 解压缩与解打包“.tar.gz”格式// 例如:.tar.bz2 格式[root@localhost ~]# tar -jcvf tmp.tar.bz2 /tmp/// 打包压缩为“.tar.bz2”格式,注意压缩包文件名[root@localhost ~]# tar -jxvf tmp.tar.bz2// 解压缩与解打包“.tar.bz2”格式// 再举几个例子:[root@localhost ~]# mkdir test[root@localhost ~]# touch test/abc[root@localhost ~]# touch test/bcd[root@localhost ~]# touch test/cde// 建立测试目录和测试文件[root@localhost ~]# tar -zcvf test.tar.gz test/// 压缩[root@localhost ~]# tar -ztvf test.tar.gz// 只查看,不解压[root@localhost ~]# tar -zxvf test.tar.gz -C /tmp// 解压缩到指定位置[root@localhost ~]# tar -zxvf test.tar.gz -C /tmp test/cde// 只解压压缩包中的特定文件,到指定位置
# .tar.gz//压缩[root@server11 ~]# lsyanqi yanqi_mulu yanqi_yasuo[root@server11 ~]# tar -zcvf yanqi.tar.gz yanqi yanqi_mulu/ yanqi_yasuoyanqiyanqi_mulu/yanqi_yasuo[root@server11 ~]# lsyanqi yanqi_mulu yanqi.tar.gz yanqi_yasuo//解压缩[root@server11 ~]# rm -rf yanqi yanqi_mulu/ yanqi_yasuo[root@server11 ~]# tar -zxvf yanqi.tar.gzyanqiyanqi_mulu/yanqi_yasuo[root@server11 ~]# lsyanqi yanqi_mulu yanqi.tar.gz yanqi_yasuo# .tar.bz2//压缩[root@server11 ~]# tar -jcvf yanqi.tar.bz2 yanqi yanqi_mulu/ yanqi_yasuoyanqiyanqi_mulu/yanqi_yasuo[root@server11 ~]# lsyanqi yanqi_mulu yanqi.tar.bz2 yanqi_yasuo//解压缩[root@server11 ~]# rm rm -rf yanqi yanqi_mulu/ yanqi_yasuo[root@server11 ~]# tar -jxvf yanqi.tar.bz2 yanqi yanqi_mulu/ yanqi_yasuoyanqiyanqi_mulu/yanqi_yasuo[root@server11 ~]# lsyanqi yanqi_mulu yanqi.tar.bz2 yanqi_yasuo#只看不解压 -t:选项;只查看不解压[root@server11 ~]# lsyanqi.tar.gz[root@server11 ~]# tar -ztvf yanqi.tar.gz-rw-r--r-- root/root 10240 2021-03-04 21:10 yanqidrwxr-xr-x root/root 0 2021-03-04 21:03 yanqi_mulu/-rw-r--r-- root/root 0 2021-03-04 21:01 yanqi_yasuo[root@server11 ~]# lsyanqi.tar.gz#指定解压位置 -C:选项:指定解压位置[root@server11 ~]# tar -ztvf yanqi.tar.gz -C /tmp/-rw-r--r-- root/root 10240 2021-03-04 21:10 yanqidrwxr-xr-x root/root 0 2021-03-04 21:03 yanqi_mulu/-rw-r--r-- root/root 0 2021-03-04 21:01 yanqi_yasuo[root@server11 ~]# rm -rf /tmp/*[root@server11 ~]# ls /tmp/yanqi yanqi_yasuo#解压执行文件 #将需要解压的某一个文件写在目标目录后面[root@server11 ~]# tar -zxvf yanqi.tar.gz -C /tmp/ yanqi #yanqi这个文件就是需要解压的单个文件yanqi[root@server11 ~]# ll /tmp/total 12-rw-r--r-- 1 root root 10240 Mar 4 21:10 yanqi
九、关机和重启命令
1.sync 数据同步
// sync 命令的基本信息如下。// 命令名称:sync。// 英文原意:flush file system buffers。// 所在路径:/bin/sync。// 执行权限:所有用户。// 功能描述:刷新文件系统缓冲区。
#sync数据同步命令[root@server11 ~]# sync
2.shutdown 命令
// shutdown 命令的基本信息如下。// 命令名称:shutdown。// 英文原意:bring the system down。// 所在路径:/sbin/shutdown。// 执行权限:超级用户。// 功能描述:关机和重启// 命令的基本格式如下:[root@localhost ~]# shutdown [选项] 时间 [警告信息]// 选项:// -c:取消已经执行的 shutdown 命令// -h:关机// -r:重启
#shutdown既可以关机也可以重启[root@server11 ~]# shutdown -r now //现在重启[root@server11 ~]# shutdown -r 05:30 //定义明天早上5:30重启Shutdown scheduled for Fri 2021-03-05 05:30:00 CST, use 'shutdown -c' to cancel.[root@server11 ~]# shutdown -c //取消重启Broadcast message from root@server11 (Thu 2021-03-04 21:31:35 CST):The system shutdown has been cancelled at Thu 2021-03-04 21:32:35 CST!#不建议重启,并不推荐重启和关机让计算机自己完成#是最安全的重启命令;推荐尽量使用shutdown命令
3.reboot 命令
// 在现在的系统中,reboot 命令也是安全的,而且不需要加入过多的选项。[root@localhost ~]# reboot// 重启
[root@server11 ~]# reboot
4.halt 和 poweroff 命令
// 这两个都是关机命令,直接执行即可。这两个命令不会完整关闭和保存系统的服务,不建议使用。[root@localhost ~]# halt// 关机[root@localhost ~]# poweroff// 关机#不建议使用;不会对数据进行保存
5.init 命令
// init 是修改 Linux 运行级别的命令,也可以用于关机和重启。这个命令并不安全,不建议使用。[root@localhost ~]# init 0// 关机,也就是调用系统的 0 级别[root@localhost ~]# init 6// 重启,也就是调用系统的 6 级别
十、常用网络命令
1.配置 IP 地址
// 1.1 配置 IP 地址// IP 地址是计算机在互联网中唯一的地址编码。每台计算机如果需要接入网络和其他计算机进行数据通信,就必须配置唯一的公网 IP 地址。// 配置 IP 地址有两种方法:# 1)setup 工具;redhat系列专有;#2)vi /etc/sysconfig/network-scripts/ifcfg-eth0// 手工修改配置文件// 1.2 重启网络服务[root@localhost ~]# service network restart// 重启网络服务// 1.3 虚拟机需要桥接到有线网卡,并重启网络服务// 1.4 复制镜像有可能需要重置 UUID(唯一识别符)[root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0// 删除 MAC 地址行[root@localhost ~]# rm -rf /etc/udev/rules.d/70-persistent-net.rules// 删除 MaC 地址和 UUID 绑定文件[root@localhost ~]# reboot// 重启 Linux
#UUID冲突:[root@server11 ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens33UUID=d7c8b741-64f3-4dac-b60b-859521c80dd6#UUID冲突也会导致IP不生效#快照第一次重启会是有发生#解决方案:UUID冲突;//删除mac地址,重新计算UUID[root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0// 删除 MaC 地址和 UUID 绑定文件[root@server11 ~]# rm -rf /etc/udev/rules.d/70-persistent-ipoib.rules[root@localhost ~]# reboot// 重启 Linux
2.ifconfig 命令
// 命令名称:ifconfig。// 英文原意:configure a network interface。// 所在路径:/sbin/ifconfig。// 执行权限:超级用户。// 功能描述:配置网络接口。// ifconfig 命令最主要的作用就是查看 IP 地址的信息,直接输入 ifconfig 命令即可。[root@localhost ~]# ifconfigeth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> 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<link>#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<UP,LOOPBACK,RUNNING> mtu 65536#本地回环网卡inet 127.0.0.1 netmask 255.0.0.0inet6 ::1 prefixlen 128 scopeid 0x10<host>loop txqueuelen 1000 (Local Loopback)RX packets 8 bytes 696 (696.0 B)RX errors 0 dropped 0 overruns 0 frame 0TX packets 8 bytes 696 (696.0 B)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
[root@server11 ~]# ifconfigens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500inet 192.168.1.11 netmask 255.255.255.0 broadcast 192.168.1.255inet6 fe80::820d:b26d:3507:5834 prefixlen 64 scopeid 0x20<link>ether 00:0c:29:29:49:ea txqueuelen 1000 (Ethernet)RX packets 35244 bytes 34284855 (32.6 MiB)RX errors 0 dropped 46 overruns 0 frame 0TX packets 8188 bytes 551041 (538.1 KiB)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
3.ping 命令
// ping 是常用的网络命令,主要通过 ICMP 协议进行网络探测,测试网络中主机的通信情况。ping// 命令的基本信息如下。// 命令名称:ping。// 英文原意:send ICMP ECHO_REQUEST to network hosts。// 所在路径:/bin/ping。// 执行权限:所有用户。// 功能描述:向网络主机发送 ICMP 请求。// 命令的基本格式如下:[root@localhost ~]# ping [选项] IP// 选项:// -b:后面加入广播地址,用于对整个网段进行探测// -c 次数:用于指定 ping 的次数// -s 字节:指定探测包的大小// 例子:探测网段中的可用主机// 在 ping 命令中,可以使用“-b”选项,后面加入广播地址,探测整个网段。我们可以使用这个选项知道整个网络中有多少主机是可以和我们通信的,而不用一个一个 IP 地址地进行探测。例如:[root@localhost ~]# ping -b -c 3 192.168.103.255WARNING: pinging broadcast addressPING 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 ms64 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!)…省略部分内容…// 探测 192.168.103.0/24 网段中有多少可以通信的主机
[root@server11 ~]# ping www.baidu.com#-c指定次数[root@server11 ~]# ping -c 1 www.baidu.comPING www.a.shifen.com (180.101.49.11) 56(84) bytes of data.64 bytes from 180.101.49.11 (180.101.49.11): icmp_seq=1 ttl=51 time=13.1 ms#-b后面加入广播地址,用于对整个网段进行探测,该网段有多个IP地址在线[root@server11 ~]# ping -b -c 3 10.10.10.255WARNING: pinging broadcast addressPING 10.10.10.255 (10.10.10.255) 56(84) bytes of data.--- 10.10.10.255 ping statistics ---3 packets transmitted, 0 received, 100% packet loss, time 1999ms
4.netstat 命令
// netstat 是网络状态查看命令,既可以查看到本机开启的端口,也可以查看有哪些客户端连接。在 CentOS 7.x 中 netstat 命令默认没有安装,如果需要使用,需要安装 net-snmp 和 net-tools 软件包。// netstat 命令的基本信息如下。// 命令名称:netstat。// 英文原意:Print network connections, routing tables, interface statistics, masquerade connections,and multicast memberships。// 所在路径:/bin/netstat。// 执行权限:所有用户。// 功能描述:输出网络连接、路由表、接口统计、伪装连接和组播成员。// 命令格式如下:[root@localhost ~]# netstat [选项]// 选项:// -a:列出所有网络状态,包括 Socket 程序// -c 秒数:指定每隔几秒刷新一次网络状态// -n:使用 IP 地址和端口号显示,不使用域名与服务名// -p:显示 PID 和程序名// -t:显示使用 TCP 协议端口的连接状况// -u:显示使用 UDP 协议端口的连接状况// -l:仅显示监听状态的连接// -r:显示路由表// 例子 1:查看本机开启的端口// 这是本机最常用的方式,使用选项“-tuln”。因为使用了“-l”选项,所以只能看到监听状态的连接,而不能看到已经建立连接状态的连接。例如:[root@localhost ~]# netstat -tuln// 协议 接收队列 发送队列 本机的 IP 地址及端口号 远程主机的 IP 地址及端口号 状态这个命令的输出较多。// 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 状态,一种代表正在监听,另一种代表已经建立连接。// 例子 2:查看本机有哪些程序开启的端口,如果使用“-p”选项,则可以查看到是哪个程序占用了端口,并且可以知道这个程序的 PID。例如:[root@localhost ~]# netstat -tulnp// 比之前的命令多了一个“-p”选项,结果多了“PID/程序名”,可以知道是哪个程序占用了端口// 例子 3:查看所有连接// 使用选项“-an”可以查看所有连接,包括监听状态的连接(LISTEN)、已经建立连接状态的连接(ESTABLISHED)、Socket 程序连接等。因为连接较多,所以输出的内容有很多。例如:[root@localhost ~]# netstat -an// …省略部分内容…// …省略部分内容…// 从“Active UNIX domain sockets”开始,之后的内容就是 Socket 程序产生的连接,之前的内容都是网络服务产生的连接。我们可以在“-an”选项的输出中看到各种网络连接状态,而之前的“-tuln”选项则只能看到监听状态
#查询本机开启的所有端口[root@server11 ~]# netstat -tulnActive Internet connections (only servers)Proto Recv-Q Send-Q Local Address Foreign Address StateProto Recv-Q Send-Q Local Address Foreign Address State//网络连接协议 接收到数据 本机发送的数据 本地的IP地址和端口号 远程主机的IP地址和端口 状态#-p:可以查看到这个端口是哪个服务开启的[root@server11 ~]# netstat -tulnpActive Internet connections (only servers)Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program nametcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 597/rpcbind[root@server11 ~]# netstat -an #查看所有#-r显示路由表;查看网关[root@server11 ~]# netstat -rKernel IP routing tableDestination Gateway Genmask Flags MSS Window irtt Ifacedefault gateway 0.0.0.0 UG 0 0 0 ens3310.10.10.0 0.0.0.0 255.255.255.0 U 0 0 0 ens34192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 ens33192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
5.write 命令
// write 命令的基本信息如下。// 命令名称:write。// 英文原意:send a message to another user。// 所在路径:/usr/bin/write。// 执行权限:所有用户。// 功能描述:向其他用户发送信息。[root@localhost ~]#write user1 pts/1helloI will be in 5 minutes to restart, please save your data// 向在 pts/1(远程终端 1)登录的 user1 用户发送信息,使用“Ctrl+D”快捷键保存发送的数据
#登录终端#本地字符终端 tty1-6 alt+F1-6#本地图形终端 tty7 ctrl+alt+F7(按住3秒,需要安装启动图形界面)#远程终端 pts/0-255#给指定终端发送信息[root@server11 ~]# w22:02:48 up 8:01, 2 users, load average: 0.00, 0.01, 0.05USER TTY FROM LOGIN@ IDLE JCPU PCPU WHATroot tty1 22:04 32.00s 0.02s 0.02s -bash #本地字符终端root pts/0 10.10.10.240 20:41 0.00s 1.31s 0.00s w #当前终端root pts/1 10.10.10.240 22:00 2:28 0.03s 0.03s -bash #远程终端[root@server11 ~]# write root pts/1 #ctrl+D发送hellohell0hello[root@server11 ~]# #对应终端接收到信息Message from root@server11 on pts/0 at 22:05 ...hellohell0helloEOF
6.wall 命令
// write 命令用于给指定用户发送信息,而 wall 命令用于给所有登录用户发送信息,包括你自己。执行时,在 wall 命令后加入需要发送的信息即可,例如:[root@localhost ~]# wall "I will be in 5 minutes to restart, please save your data"
#给所有终端发送信息[root@server11 ~]# wall #包括自己hellohellohelloBroadcast message from root@server11 (pts/0) (Thu Mar 4 22:07:26 2021):hellohellohelloello
7.mail 命令
// mail 是 Linux 的邮件客户端命令,可以利用这个命令给其他用户发送邮件。mail 命令的基本信息// 如下。// 命令名称:mail。// 英文原意:send and receive Internet mail。// 所在路径:/bin/mail。// 执行权限:所有用户。// 功能描述:发送和接收电子邮件。// 例子 1:发送邮件// 如果我们想要给其他用户发送邮件,则可以执行如下命令:[root@localhost ~]# mail user1// Subject: hello <- 邮件标题// Nice to meet you! <- 邮件具体内容// . <- 使用“.”来结束邮件输入// 发送邮件给 user1 用户// 我们接收到的邮件都保存在“/var/spool/mail/用户名”中,每个用户都有一个以自己的用户名命名的邮箱。// 例子 2:发送文件内容#如果我们想把某个文件的内容发送给指定用户,则可以执行如下命令:[root@localhost ~]# mail -s "test mail" root < /root/anaconda-ks.cfg// 选项:// -s:指定邮件标题// 把/root/anaconda-ks.cfg 文件的内容发送给 root 用户// 我们在写脚本时,有时需要脚本自动发送一些信息给指定用户,把要发送的信息预先写到文件中,是一个非常不错的选择。// 例子 3:查看已经接收的邮件// 我们可以直接在命令行中执行 mail 命令,进入 mail 的交互命令中,可以在这里查看已经接收到的邮件。例如:[root@localhost ~]# mailHeirloom 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”就可以了。在交互命令中执行“?”,可以查看这个交互界面支持的命令。例如:// & ? <-输入命令mail commandstype<message list> type messagesnext goto and type next messagefrom<message list> give head lines of messagesheaders print out active message headersdelete<message list> delete messagesundelete<message list> undelete messagessave<message list> folder append messages to folder and mark as savedcopy<message list> folder append messages to folder without marking themwrite<message list> file append message texts to file, save attachmentspreserve<message list> keep incoming messages in mailbox even if savedReply <message list> reply to message sendersreply<message list> reply to message senders and all recipientsmail addresses mail to specific recipientsfile folder change to another folderquit quit and apply changes to folderxit quit and discard changes made to folder! shell escapecd<directory> chdir to directory or home if none givenlist list names of all available commands// 这些交互命令是可以简化输入的,比如“headers”命令,就可以直接输入“h”,这是列出邮件标题列表的命令。我们解释一下常用的交互命令。// headers:列出邮件标题列表,直接输入“h”命令即可。// delete:删除指定邮件。比如想要删除第二封邮件,可以输入“d 2”。// save:保存邮件。可以把指定邮件保存成文件,如“s 2 /tmp/test.mail”。// quit:退出,并把已经操作过的邮件进行保存。比如移除已删除邮件、保存已阅读邮件等。// exit:退出,但是不保存任何操作。
#发送邮件[yanqi@server11 ~]$ mail root #给root用户发送邮件Subject: hellohellohelloEOT[root@server11 ~]# mail #root用户接收邮件Heirloom Mail version 12.5 7/5/10. Type ? for help."/var/spool/mail/root": 1 message 1 new>N 1 yanqi@server11.local Thu Mar 4 22:11 19/603 "hello" #N:表示未读邮件&Message 1: #按 1 来读第一份邮件From yanqi@server11.localdomain Thu Mar 4 22:11:53 2021Return-Path: <yanqi@server11.localdomain>X-Original-To: rootDelivered-To: root@server11.localdomainDate: Thu, 04 Mar 2021 22:11:53 +0800To: root@server11.localdomainSubject: helloUser-Agent: Heirloom mailx 12.5 7/5/10Content-Type: text/plain; charset=us-asciiFrom: yanqi@server11.localdomainStatus: Rhellohello& h #列出当前邮件的标题> 1 yanqi@server11.local Thu Mar 4 22:11 19/603 "hello"& ? #帮助信息#发送右键内容——常用[yanqi@server11 ~]$ cat yanqi.mailtest mail yanqi to root[yanqi@server11 ~]$ mail -s "yanqi.mail" root< /home/yanqi/yanqi.mail[root@server11 ~]# mail>N 6 yanqi@server11.local Thu Mar 4 22:19 18/620 "yanqi.mail"
十一、系统痕迹命令
系 统 中 有 一 些 重 要 的 痕 迹 日 志 文 件 , 如 /var/log/wtmp 、 /var/run/utmp 、 /var/log/btmp 、
/var/log/lastlog 等日志文件,如果你用 vim 打开这些文件,你会发现这些文件是二进制乱码。这是由于这些日志中保存的是系统的重要登录痕迹,包括某个用户何时登录了系统,何时退出了系统,错误登录等重要的系统信息。这些信息要是可以通过 vim 打开,就能编辑,这样痕迹信息就不准确,所以这些重要的痕迹日志,只能通过对应的命令来进行查看。
1.w 命令
// w 命令是显示系统中正在登陆的用户信息的命令,这个命令查看的痕迹日志是/var/run/utmp。这个命令的基本信息如下:// 命令名称:w// 英文原意:Show who is logged on and what they are doing.// 所在路径:/usr/bin/w// 执行权限:所有用户。// 功能描述:显示登录用户,和他正在做什么。// 例如[root@localhost ~]# w#系统时间 持续开机时间 登陆用户 系统在 1 分钟,5 分钟,15 分钟前的平均负载
[root@server11 ~]# w// 登录用户数22:21:02 up 8:19, 4 users, load average: 0.00, 0.01, 0.05//系统时间 系统到当前为止开机了多长时间 系统在1分钟前,5分钟前,15分钟前平均负载USER TTY FROM LOGIN@ IDLE JCPU PCPU WHATroot tty1 22:04 17:02 0.02s 0.02s -bashroot pts/0 10.10.10.240 20:41 6.00s 1.38s 0.00s w #谁是w,谁就是你自己root pts/1 10.10.10.240 22:00 30.00s 0.20s 0.17s bashroot pts/2 10.10.10.240 22:18 2:38 0.06s 0.03s bash#不能超过CPU的核数,经验值;#CPU/内存原则:7090原则:CPU的占有率不可以超过70%,内存的占有率不能超过90%;若是超过就达到极限值,就有可能宕机的风险
第一行信息,内容如下:
| 说明 | |
| 12:26:46 | 系统当前时间 |
| up 1 day,13:32 | 系统的运行时间,本机已经运行1天13小时32分钟 |
| 2users | 当前登录的两个用户 |
| load average:0.00,0.00,0.00; | 系统在之前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@localhost ~]# whoroot tty1 2018-11-12 23:59root pts/2 2018-11-12 23:42 (192.168.252.1)// 用户名 登陆终端 登陆时间(来源 IP)
[root@server11 ~]# whoroot tty1 2021-03-04 22:04root pts/0 2021-03-04 20:41 (10.10.10.240)root pts/1 2021-03-04 22:00 (10.10.10.240)root pts/2 2021-03-04 22:18 (10.10.10.240)
3.last 命令
// last 命令是查看系统所有登陆过的用户信息的,包括正在登陆的用户和之前登陆的用户。这个命令查看的是/var/log/wtmp 痕迹日志文件。[root@localhost ~]# last// 系统重启信息记录// 用户名 终端号 来源 IP 地址 登陆时间 - 退出时间
#查询系统中登录过的用户信息,包括退出用户[root@server11 ~]# lastreboot system boot 3.10.0-862.el7.x Fri Feb 5 01:20 - 01:24 (00:03)root pts/0 :0 Fri Feb 5 01:14 - 01:20 (00:05)root :0 :0 Fri Feb 5 01:14 - crash (00:06)roo pts/0 :0 Fri Feb 5 01:13 - 01:13 (00:00)roo :0 :0 Fri Feb 5 01:13 - 01:13 (00:00)reboot system boot 3.10.0-862.el7.x Fri Feb 5 00:49 - 01:24 (00:34)
4.lastlog 命令
// lastlog 命令是查看系统中所有用户最后一次的登陆时间的命令,他查看的日志是/var/log/lastlog文件。[root@localhost ~]# lastlog// …省略部分内容…// 用户名 终端 来源 IP 登陆时间
#查询所有的用户[root@server11 ~]# lastloggdm :0 Fri Feb 5 01:22:44 +0800 2021gnome-initial-setup :0 Fri Feb 5 01:12:05 +0800 2021sshd **Never logged in** #从来没有登录过avahi **Never logged in**postfix **Never logged in**tcpdump **Never logged in**roo :0 Fri Feb 5 01:13:31 +0800 2021yanqi pts/2 Thu Mar 4 22:18:21 +0800 2021
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)// 错误登陆用户 终端 尝试登陆的时间
#lastb错误登录信息[root@server11 ~]# lastbroot ssh:notty server11 Thu Mar 4 22:35 - 22:35 (00:00)root ssh:notty server11 Thu Mar 4 22:34 - 22:34 (00:00)root ssh:notty server11 Thu Mar 4 22:34 - 22:34 (00:00)root pts/1 Thu Mar 4 22:34 - 22:34 (00:00)btmp begins Thu Mar 4 22:34:22 2021
十二、挂载命令
1. mount 命令基本格式
// linux 所有存储设备都必须挂载使用,包括硬盘// 命令名称:mount// 命令所在路径:/bin/mount// 执行权限:所有用户// 说了这么多,命令的具体格式如下:[root@localhost ~]# mount [-l]// 查询系统中已经挂载的设备,-l 会显示卷标名称[root@localhost ~]# mount –a// 依据配置文件/etc/fstab 的内容,自动挂载[root@localhost ~]# mount [-t 文件系统] [-L 卷标名] [-o 特殊选项] \// 设备文件名 挂载点// \代表这一行没有写完,换行// 选项:// -t 文件系统:加入文件系统类型来指定挂载的类型,可以 ext3、ext4、iso9660等文件系统。具体可以参考表 9-1// -L 卷标名: 挂载指定卷标的分区,而不是安装设备文件名挂载// -o 特殊选项:可以指定挂载的额外选项,比如读写权限、同步异步等,如果不指定则默认值生效。具体的特殊选项,见表 9-4:
| 说明 | |
| atime/noatime | 更新访问时间/不更新访问时间,访问分区文件时,是否更新文件的访问时间,默认为更新 |
| async/sync | 异步/同步,默认为异步 |
| auto/noauto | 自动/手动,mount -a命令执行时,是否会自动安装/etc/fstab文件内容,挂载,默认为自动 |
| defaults | 定义默认值,相当于rw,suid,dev,exec,auto,nouser,async这七个选项 |
| remount | 重新挂载已经挂载的文件系统,一般用于指定修改特殊权限 |
| rw/ro | 读写/只读,文件系统挂载时,是否具有读写权限,默认是rw |
| suid/nosuid | 具有/不具有SUID权限,设定文件系统是否具有SUID和SGID的权限,默认是具有 |
| user/nouser | 允许/不允许普通用户挂载,设定文件系统是否允许普通用户挂载,默认是不允许,只有root可以挂载分区 |
| usrquota | 写入代表文件系统支持用户磁盘配额,默认不支持 |
| grpguota | 写入代表文件系统支持组磁盘配额,默认不支持 |
// 举例// 例 1:[root@localhost ~]# mount// 查看系统中已经挂载的文件系统,注意有虚拟文件系统/dev/sda3 on / type ext4 (rw)proc on /proc type proc (rw)sysfs on /sys type sysfs (rw)devpts on /dev/pts type devpts (rw,gid=5,mode=620)tmpfs on /dev/shm type tmpfs (rw)/dev/sda1 on /boot type ext4 (rw)none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)// 命令结果是代表:/dev/sda3 分区挂载到/目录,文件系统是 ext4,权限是读写// 例 2:修改特殊权限[root@localhost ~]# mount// 我们查看到/boot 分区已经被挂载,而且采用的 defaults 选项,那么我们重新挂载分区,并采用 noexec// 权限禁止执行文件执行,看看会出现什么情况(注意不要用/分区做试验,#不然系统命令也不能执行了)。…省略部分输出…/dev/sda1 on /boot type ext4 (rw)…省略部分输出…[root@localhost ~]# mount -o remount,noexec /boot// 重新挂载/boot 分区,并使用 noexec 权限[root@localhost sh]# cd /boot/[root@localhost boot]# vi hello.sh// 写个 shell 吧#!/bin/bashecho "hello!!"[root@localhost boot]# chmod 755 hello.sh[root@localhost boot]# ./hello.sh-bash: ./hello.sh: 权限不够#虽然赋予了 hello.sh 执行权限,但是任然无法执行[root@localhost boot]# mount -o remount,exec /boot#记得改回来啊,要不会影响系统启动的// 如果我们做试验修改了特殊选项,一定要记得住,而且确定需要修改,否则非常容易出现系统问题,而且还找不到哪里出现了问题。// 例 3:挂载分区[root@localhost ~]# mkdir /mnt/disk1// 建立挂载点目录[root@localhost ~]# mount /dev/sdb1 /mnt/disk1// 挂载分区
[root@server11 ~]# ls /m*# media:挂载光盘的目录# mnt:挂U盘或者移动硬盘的;习惯于用于挂在mnt目录下# misc:挂网络存储的目录#mount直接查看已经挂载的文件[root@server11 ~]# mount/dev/sda3 on / type xfs (rw,relatime,attr2,inode64,noquota)/dev/sr0 on /mnt/cdrom type iso9660 (ro,relatime) #挂载的光盘/dev/sda1 on /boot type xfs (rw,relatime,attr2,inode64,noquota)
2. 光盘挂载
// 光盘挂载的前提依然是指定光盘的设备文件名,不同版本的 Linux,设备文件名并不相同:// CentOS 5.x 以前的系统,光盘设备文件名是/dev/hdc// CentOS 6.x 以后的系统,光盘设备文件名是/dev/sr0// 不论哪个系统都有软连接/dev/cdrom,与可以作为光盘的设备文件名[root@localhost ~]# mount -t iso9660 /dev/cdrom /mnt/cdrom/// 挂载光盘// 用完之后记得卸载:[root@localhost ~]# umount /dev/sr0[root@localhost ~]# umount /mnt/cdrom// 因为设备文件名和挂载点已经连接到一起,卸载哪一个都可以// 注意:卸载的时候需要退出光盘目录,才能正常卸载
#创建一个空目录,作为挂载点[root@server11 ~]# mkdir /mnt/cdrom/[root@server11 ~]# ll /dev/sr0 /dev/cdromlrwxrwxrwx 1 root root 3 Feb 5 02:06 /dev/cdrom -> sr0 #cdrom是sr0的软连接,推荐使用sr0brw-rw---- 1 root cdrom 11, 0 Feb 5 02:06 /dev/sr0[root@server11 ~]# mount -t iso9660 /dev/sr0 /mnt/cdrom/ #-t:指定文件系统;默认是9660,可以不写mount: /dev/sr0 is write-protected, mounting read-only[root@server11 ~]# mount /dev/sr0 /mnt/cdrom/mount: /dev/sr0 is write-protected, mounting read-only #sr0想要挂载为读写权限但是被迫挂载为只读权限光盘,光盘为只读权限;#查看挂载结果[root@server11 ~]# mount/dev/sr0 on /mnt/cdrom type iso9660 (ro,relatime)[root@server11 ~]# ls /mnt/cdrom/CentOS_BuildTag EFI EULA GPL images isolinux LiveOS Packages repodata RPM-GPG-KEY-CentOS-7 RPM-GPG-KEY-CentOS-Testing-7 TRANS.TBL#光盘不卸载;物理机是拿不出光盘的;虚拟机不卸载光盘可能会损坏[root@server11 cdrom]# pwd/mnt/cdrom[root@server11 cdrom]# umount /dev/sr0umount: /mnt/cdrom: target is busy. #设备正忙;因为你在挂载目录下,所以失败(In some cases useful info about processes that usethe device is found by lsof(8) or fuser(1))#退出到root目录下[root@server11 ~]# umount /dev/sr0[root@server11 ~]# umount /mnt/cdrom/
#挂载光盘时,非空目录可以挂载吗[root@server11 ~]# touch /mnt/cdrom/yanqi[root@server11 ~]# touch /mnt/cdrom/yanqi1[root@server11 ~]# mount -t iso9660 /dev/sr0 /mnt/cdrom/mount: /dev/sr0 is write-protected, mounting read-only[root@server11 ~]# ls /mnt/cdrom/ #挂载后这两个文件是不存在的CentOS_BuildTag EFI EULA GPL images isolinux LiveOS Packages repodata RPM-GPG-KEY-CentOS-7 RPM-GPG-KEY-CentOS-Testing-7 TRANS.TBL[root@server11 ~]# umount /mnt/cdrom/[root@server11 ~]# ls /mnt/cdrom/ #卸载后文件还是存在yanqi yanqi1#原因:并不是把挂载点下的文件覆盖掉,而是把挂载点直接抽出来;作为另外一个分区的入口进行挂载;此刻,挂载点原有的数据就无法访问,就会变成一个顽固的垃圾放在这里,删除操作不执行,只会占用空间。不合理。#所以:最好使用空目录作为挂载点。
3. 挂载 U 盘
// U 盘会和硬盘共用设备文件名,所以 U 盘的设备文件名不是固定的,需要手工查询,查询命令:[root@localhost ~]# fdisk -l// 查询硬盘// 然后就是挂载了,挂载命令如下:[root@localhost ~]# mount -t vfat /dev/sdb1 /mnt/usb/// 挂载 U 盘。因为是 Windows 分区,所以是 vfat 文件系统格式// 如果 U 盘中有中文,会发现中文是乱码。Linux 要想正常显示中文,需要两个条件:// 安装了中文编码和中文字体// 操作终端需要支持中文显示(纯字符终端,是不支持中文编码的)// 而我们当前系统是安装了中文编码和字体,而 xshell 远程终端是 Windows 下的程序,当然是支持中文显示的。那之所以挂载 U 盘还出现乱码,是需要在挂载的时候,手工指定中文编码,例如:[root@localhost ~]# mount -t vfat -o iocharset=utf8 /dev/sdb1 /mnt/usb/// 挂载 U 盘,指定中文编码格式为 UTF-8// 如果需要卸载,可以执行以下命令:[root@localhost ~]# umount /mnt/usb/
#U盘的设备文件名,并不是固定的。#在:计算机——>管理——>服务管理——>VMware USB Arbitration Service:启动状态——>END[root@server11 ~]# fdisk -lDisk /dev/sdc: 31.2 GB, 31205621760 bytes, 60948480 sectorsUnits = sectors of 1 * 512 = 512 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk label type: dosDisk identifier: 0xe713a2b1[root@server11 ~]# lsblksdc 8:32 1 29.1G 0 diskDevice Boot Start End Blocks Id System/dev/sdc1 * 614400 60334079 29859840 7 HPFS/NTFS/exFAT/dev/sdc2 60334080 60944382 305151+ 16 Hidden FAT16#挂载[root@server11 ~]# mkdir /mnt/usb[root@server11 ~]# mount -t vfat /dev/sdc2 /mnt/usb/ #FAT32在Linux识别为Vfat[root@server11 ~]# ll /mnt/usb/total 24drwxr-xr-x 4 root root 8192 Oct 14 04:57 EFIdrwxr-xr-x 2 root root 8192 Oct 14 04:57 System Volume Informationdrwxr-xr-x 3 root root 8192 Oct 14 04:57 WEPE[root@server11 ~]# ls /mnt/usb/ #挂载成功,可以正常查看到文件EFI System Volume Information WEPE#更改为中文语系字体[root@server11 ~]# echo $LANG #查看当前系统默认语系en_US.UTF-8[root@server11 ~]# LANG=zh_CN.UTF-8 #强制改为中文语系[root@server11 ~]# echo $LANGzh_CN.UTF-8#卸载[root@server11 ~]# umount /mnt/usb/#手工加载字符编码[root@server11 ~]# mount -t vfat -o iocharset=utf8 /dev/sdc2 /mnt/usb/ #加入语言选项;中文字符集编码[root@server11 ~]# ls /mnt/usb/EFI System Volume Information WEPE[root@server11 ~]# umount /mnt/usb/
#移动存储设备不建议作为开机自动挂载;若是开机自动挂载,移动存储设备不在线,在开机的时候系统会自动查找该设备,找不到设备可能导致系统启动失败#开机自动挂载配置文件[root@server11 ~]# cat /etc/fstabUUID=3231fa8f-6bcc-4daa-8f0e-0b6f9bad6260 / xfs defaults 0 0UUID=2963589e-ee22-4822-a307-e01305341801 /boot xfs defaults 0 0UUID=d381d373-ef34-4eb0-b5ca-068b7b72590b swap swap defaults 0 0#修复是需要拿到物理设备的,代价机器昂贵[root@server11 ~]# mount -a #检查挂载源的正确性的mount: /dev/sr0 is write-protected, mounting read-only#mount -a比系统纠错级别是要低的,很多错误是查找不到的。#不要盲目的信任mount -a选项#什么样的错误是导致真正启动不起来。# \ 在linux中是换行符#拿boot分区做实验[root@server11 ~]# mount -o remount,noexec /boot/ #临时挂载/boot分区[root@server11 boot]# pwd/boot[root@server11 boot]# vim hello.sh#!/bin/bash #不可以省略,linux默认是shell;可以执行;但是在非shell环境下就会报错echo "hello"[root@server11 boot]# chmod 755 hello.sh#执行脚本[root@server11 boot]# ./hello.shhello#boot目录是可以正确执行shell脚本的[root@server11 ~]# mount -o remount,noexec /boot/[root@server11 ~]# mount #boot分区多了一个exec权限/dev/sda1 on /boot type xfs (rw,noexec,relatime,attr2,inode64,noquota)[root@server11 ~]# /boot/hello.sh-bash: /boot/hello.sh: Permission denied #权限不够[root@server11 ~]# mount -o remount,exec /boot/ #改为原有的权限[root@server11 ~]# /boot/hello.sh #正确执行hello#默认选项不建议修改
4、挂载 NTFS 分区
// 4.1 Linux 的驱动加载顺序:// 驱动直接放入系统内核之中。这种驱动主要是系统启动加载必须的驱动,数量较少。// 驱动以模块的形式放入硬盘。大多数驱动都已这种方式保存,保存位置在/lib/modules/3.10.0-862.el7.x86_64/kernel/中。// 驱动可以被 Linux 识别,但是系统认为这种驱动一般不常用,默认不加载。如果需要加载这种驱动,需要重新编译内核,而 NTFS 文件系统的驱动就属于这种情况。//硬件不能被 Linux 内核识别,需要手工安装驱动。当然前提是厂商提供了该硬件针对 Linux的驱动,否则就需要自己开发驱动了。// 4.2 使用 NTFS-3G 安装 NTFS 文件系统模块// 下载 NTFS-3G 插件// 我们从网站 http://www.tuxera.com/community/ntfs-3g-download/下载 NTFS-3G 插件到 Linux服务器上。// 安装 NTFS-3G 插件// 在编译安装 NTFS-3G 插件之前,要保证 gcc 编译器已经安装。具体安装命令如下:[root@localhost ~]# tar -zxvf ntfs-3g_ntfsprogs-2013.1.13.tgz#解压[root@localhost ~]# cd ntfs-3g_ntfsprogs-2013.1.13#进入解压目录[root@localhost ntfs-3g_ntfsprogs-2013.1.13]# ./configure#编译器准备。没有指定安装目录,安装到默认位置中[root@localhost ntfs-3g_ntfsprogs-2013.1.13]# make#编译[root@localhost ntfs-3g_ntfsprogs-2013.1.13]# make install#编译安装// 安装就完成了,已经可以挂载和使用 Windows 的 NTFS 分区了。不过需要注意挂载分区时的文件系统不是 ntfs,而是 ntfs-3g。挂载命令如下:[root@localhost ~]# mount -t ntfs-3g 分区设备文件名 挂载点// 例如:[root@localhost ~]# mount –t ntfs-3g /dev/sdb1 /mnt/win
#NTFS只能是只读的;是不能写入数据的;#linux安装完后,不安装驱动直接可以使用//驱动直接放入系统内核之中,系统启动或加载必须的驱动;但是导致内核庞大,性能下降//驱动以模块的形式放入硬盘,大多数驱动都已这种方式保存,保存位置在/lib/modules/3.10.0-862.e17.x86_64/kernel/中[root@server21 kernel]# pwd/lib/modules/2.6.32-642.el6.x86_64/kernel// 驱动可以被 Linux 识别,但是系统认为这种驱动一般不常用,默认不加载。如果需要加载这种驱动,需要重新编译内核,而 NTFS 文件系统的驱动就属于这种情况。//硬件不能被 Linux 内核识别,需要手工安装驱动。当然前提是厂商提供了该硬件针对 Linux的驱动,否则就需要自己开发驱动了。#移动存储设备不可以设置为开机自动挂载#安装ntfs[root@server11 ~]# wget -c https://jp-andre.pagesperso-orange.fr/ntfs-3g_ntfsprogs-2017.3.23AR.6.tgz[root@server11 ~]# tar -zxvf ntfs-3g_ntfsprogs-2017.3.23AR.6.tgz[root@server11 ~]# cd ntfs-3g_ntfsprogs-2017.3.23AR.6/[root@server11 ntfs-3g_ntfsprogs-2017.3.23AR.6]# ./configure[root@server11 ntfs-3g_ntfsprogs-2017.3.23AR.6]# make && make install[root@server11 ~]# mount -t ntfs-3g /dev/sdb1 /mnt/win/
END
声明:JavaBBS论坛主要用于IT技术专题的交流学习,为开源技术爱好者提供广泛、权威的技术资料。若您在技术专题有更好的想法或者建议,欢迎交流!!!




推荐阅读
Recommended reading


JavaBBS
Git → https://www.javabbs.cn/git
JavaBBS大数据→ https://www.javabbs.cn/dsj
JavaBBS云存储→ https://www.javabbs.cn/ycc
JavaBBS数据库→ https://www.javabbs.cn/sjk
JavaBBS云计算→ https://www.javabbs.cn/yjs
JavaBBSIT.Log→ https://www.javabbs.cn/itl
JavaBBSNginx→ https://www.javabbs.cn/ngx
JavaBBSzabbix→ https://www.javabbs.cn/zbx
JavaBBSJavaSE→ https://www.javabbs.cn/jse JavaBBS社区文章→ https://www.javabbs.cn/bwz
JavaBBS社区资料→ https://www.javabbs.cn/bzl





