LINUX简介与安装
 一、Linux基础认知知识:
 多使用者、多任务、多层次
 Linux:开源、免费、安全、稳定
 Linux中一切皆文件
 Linux严格区分大小写
Linux文件命名规则:
 ①除了/之外,所有字符都合法;
 ②有些字符最好不用;比如空格%?*,不建议用空格创建多个文件;
 ③避免使用.作为普通文件开头;
 ④长度不能大于255字符(文件名是概括文件用的)
开始Linux的学习之后不要用Windows的工作方式来思考问题,因为Linux和Windows的理念就有所不同Windows是“要让每个人都可以使用计算机”,而Linux则专业性更强,入门更难,多用于服务器
①、用虚拟机学习Linux的三个好处:节省成本、安全便捷、简单高效。
 ②、操作系统作用:①识别管理控制硬件;②可用文件、工具;③操作系统的内核(如Linux)
 ③、GNU:通用公共许可协议,就是开源协议(提供可用在内核里面的工具)。
1、Linux的由来与发展:
 Multics->UNIX(开源版)->UNIX(不开源)->minix->linux
2、常见的基于Linux内核的操作系统版本(发行版):
 ①Ubuntu(乌班图):更适用于个人使用的系统,特点:图形化做的特别好,默认权限开放比较低。
 ②Redhat
 ③Centos:偏向于服务器,默认专业人员在使用,开放权限更高(目前在用的版本)
 ④Fedora
图形化: 默认安装包更多,默认拥有更多工具和命令
 字符界面(命令行): 默认安装包更少,默认很多工具都需要后期自行安装
 根用户=root用户: 在为根用户设置密码,设置的就是root用户密码
 3、用户的划分:
 ①、root:root用户、根用户、超级用户。是系统上权限最高的用户。
 ②、管理员用户:在某些条件下可以使用root用户的所有命令。
 ③、user1:普通用户。默认权限最低的可登录系统的用户。
/dev/sda: 根下的dev下的sda硬盘dev: 目录,设备文件目录。
 目录=win文件夹
 LVM动态分区扩容(原有分区进行动态分区扩容)
 标准分区:没有动态扩容功能
 3、磁盘–磁性材料
 硬盘: sda—分区—第一个分区—sda1—再次分第二个分区—sda2
 分区:确定分区的可使用空间起始和结束点。/dev/sda1 /dev/sda2 /dev/sda3 /dev/sda4 
 注:sda1:a代表第一块硬盘(scis),第二块硬盘用sdb表示,以此类推;数字1代表第一个分区,数字2代表第二个分区,以此类推;
 如:把/dev/sdc3----挂载在一个名称为aaaa的空目录中,会在aaaa目录中看到sdc3中的文件,这个时候如果要想访问或者写入sdc3就可以在aaaa这个目录中进行(可以把aaaa比作门,sdc3比作房子)
 磁性材料划分分区范围,写入文件系统就有了Inode和block块
 PS:一般创建空目录,空目录可作为挂载点,如果使用已挂载的目录,原来的会被覆盖
 挂载:因为一切皆文件,所以分区被系统识别为一个设备文件。
 4、硬盘使用流程:
 ①、分区——划分起始和结束的范围格式化写入文件系统
 ②、格式化写入文件系统——inode和block /dev/sda1 此时并不能进行读取或写入的操作。
 ③、挂载:给块设备文件一个访问入口。通过访问入口,对块设备文件进行读取或写入。
 访问入口:在Linux中空目录可以作为访问入口。
 aaaa:空目录。-----/dev/sdc3----挂载
安装系统过程中的分区:
 1.boot:大小在256MB以上。系统启动文件,内核文件保存位置。如果不单独划分,那么会在/分区上以目录的形式出现。
 2.swap:交换分区,是和物理内存交换数据。
 3./分区:根分区,使用全部剩余空间。
文件处理命令
 命令界面快捷键:
 命令字体变大:Ctrl+Shift+加号
 命令字体变小:Catrl+减号
 命令清空屏幕:ctrl+L
 新打开一个终端:Ctrl+shift+N
 补全:TAB(例如查找/下boot,命令is/bo 按两次TAB它会自动补全)
 命令行中“↑”是恢复到之前输入
 命令显示当前时间:date
 终止命令执行:Ctrl+C
 命令颜色:黑色表示普通文件,蓝色表示目录。命令行搜出来的目录以“ . ”开头就是隐藏文件。
 “ . ”在文件链接数量前的意思表示SELinux:Linux系统中安全防护机制
 根分区(/):对应硬盘分区
 根目录(比如/home):逻辑上的概念,逻辑上根目录是一切硬盘分区的起始点
2、命令名称:ls(显示目录文件)
 看文件:详细信息,属性信息
 看目录:通常默认查看的是目录下子文件,子目录可以结合ls选项查看目录的属性信息
 命令格式:命令 【选项】【执行对象】【】可选
3、普通文件
 d:目录
 文件的权限:① r:读 ② w:写 ③ x:执行 ④ -:没有此权限
 rwx rwx rwx
 文件的所有者(一个用户) 文件的所属组 文件的其他人
 所属组:拥有相同权限的用户的合集
 其他人:既不属于所有者,也不属于所属组
 -rw------- . 1 root root 1629 4月 22 2021 anaconda-ks.cfg
 读写权限 SELinux 文件链接数量 所有者 所属组 大小 时间 文件名
 4、文件系统:
 文件路径和文件名称—>inode号—>block块—>文件内容
 hf01 —>123—>10,11,12—> 文件内容
 hf02 —>123—>10,11,12—> 文件内容
 hf03 —>123—>10,11,12—> 文件内容
 hf01和hf02表示操作系统下的不同链接文件的名称,123和10,11,12表示同一个文件系统下的同一个Inode号和block块
 文件系统的组成:
 文件路径和文件名称→Inode号→block块→文件内容
 其中,一个分区只有一个文件系统和Inode表,一个文件占一个Inode号,一个文件至少占一个block块
5、命令名称:ls(显示目录文件)
 命令的格式:命令 [-选项] [参数]
 -a 显示所有文件,包括隐藏文件
 -l 详细信息显示
 -d 查看目录属性
 -h 文件大小显示为常见单位
 -i 查询文件的inode号
 -R 递归显示目录及其子目录
 -n 显示文件的UID和GID(U是所有者user,G是所属组group的ID号)
文件处理命令
 2、命令名称:touch(创建空文件/更新修改和访问时间)
 命令格式:touch 文件名
 Linux文件命名规则:
 (1)除了/之外,所有字符都合法
 (2)有些字符最好不用(例如空格)
 (3)避免使用.作为普通文件开头(.开头会隐藏文件)
 (4)Linux严格区分大小写
 (5)长度不能超过255字符
 例如:touch空格 文件名 ①、该文件存在进行此操作会更新时间 ②、该文件不存在会创建空目录
 执行命令没有返回结果就是成功了。所有命令没有指定路径就是在打开当前处执行的。
 Touch下 / * ? 空格都不能使用(*是打开当前的一级目录)
3、命令名称:mkdir(创建新目录)
 命令格式:命令[-选项][参数]
 -v: 显示创建过程
 -p: 递归创建
 例如:mkdir空格目录名就可以创建,如果要创建在目录里面就写清楚路径,比如在boot下创建空目录就是mkdir空格/boot/目录名
 递归创建目录命令格式:mkdir空格-pv空格/boot/a/b/c 意思就是在boot下创建a目录,在a目录下创建b目录,在b目录下创建c
4、命令名称:cd(切换目录)
 命令格式:命令[-选项][参数]
 语法:cd 目录
 cd ~ 进入当前用户的家目录
 cd - 进入上次目录
 cd … 返回上一级目录
 cd …/… 返回上两级目录
 cd . 进入当前目录
 直接执行cd可以直接回到用户家目录,比如你是用root用户登录的执行cd就会回到root家目录,用普通用户登录执行cd就会到home家目录。
 例如:cd空格/home/user1/ 意思就是到home下的user1目录
 cd空格.表示pwd(当前所在位置)访问结果可用.代替
 首先创建一个abc目录.是对应当前目录的iNode号,b目录下的. iNode号和b是一样的,可以说b就是.
 .就是b因为在这个目录之下.和b的iNode号相同 。b目录下的.对应是c目录下的… c目录执行cd…就会返回到b的.回到上级。.是当前目录 …是上级目录 .是表示路径的
5、命令名称:pwd(显示当前目录)
 执行命令表示路径:
 1、以根为起点的叫做:绝对路径
 2、所有不以根为起始点的表达方式称为:相对路径
 例如: ①、ls -l /root/anaconda-ks.cfg 执行
 已到当前路径 ②、ls -l . /root/anaconda-ks.cfg 执行
 已在当前目录 ③、ls -l anaconda-ks.cfg
6、命令名称:tree(显示目录树)
 命令格式:tree 目录
 -d 只显示目录(在CentOS 7.x下需要安装后才能使用)
 安装过程:
 ①、找到目录:/dev/sr0
 ②、挂载:mount -t iso9660 /dev/sr0 /mnt/
 mount:挂载命令;-t iso9660:指定文件系统类型;/dev/sr0:设备文件;/mnt/:挂载点
 umount:卸载——umount /dev/sr0 (可以指定设备文件,可以指定挂载点)
 执行完挂载后可执行③、ls /mnt/P(大写)ackages/tree(tab补全) 执行完后看见rpm安装包
 执行安装包命令④、rpm -ivh /mnt/P(大写)ackages/tree(tab)安装完成 再执行tree就可以看见结果
6.5、命令名称:pstree(查看进程树之间的关系)
 格式:pstree[选项]
 -A: 进程树之间的链接以ASCII码字符链接
 -p: 同时列出每个进程的PID (PID是进程标识符)
 -u: 同时列出每个进程的所属账号名称
7、命令名称:cp(复制、复制并改名)
 命令格式:cp 源文件或目录 目标目录
 -r: 复制目录
 -p: 保留文件属性
 -a: 相当于-rp
 例如:
 复制:cp空格 /root/aa(原复制文件)/opt/(粘贴到此位置)
 复制并改名:cp空格 /root/aa(原复制文件)/opt/(粘贴位置)改的名字
 复制目录:1、cp空格-r 保留属性 2、-p 复制目录并保留了属性 3、 -rp 通常写 -a对文件和目录都可以执行
 ①、cp空格-r /etc/(复制原目录)/opt/(粘贴到此位置)
 ②、cp空格-rp空格/etc/tmp/时间会保留原文件
8、命令名称:mv(剪切、改名)
 例如:mv空格/root/aa/tmp/
 剪切了root目录里的aa到tmp里
 改名:mv空格/tmp/aa空格/tmp/cc 执行发现文件位置没变,文件名由aa改为cc。前提指定mv的时候位置变不变,位置变的话看指没指名称,位置变名称没指相当于移动剪切,位置没变名称变了相当于改名;位置变了名称也变了相当于剪切又改名。
9、命令名称:rm(删除)
 -r: 删除目录
 -f: 强制删除
10、命令名称:rmdir(删除空目录)
 -p:递归删除空目录
 -v:显示指令执行过程中
 例如:rm空格/tmp/cc执行后会问是否删除 n是no y是yes
 执行y就删除了
 删目录:mv空格-rf(不再询问当前目录内容是否确认删除)/tmp/etc/
 编译:把源代码转换成二进制,计算机能识别能执行的代码叫做编译。
目录名 目录作用
 /bin/ 存放系统命令的目录 ,普通用户和超级用户都可以执行。
 /sbin/ 保存和系统环境设置相关的命令 ,大多数命令只有超级用户可以使用。
 /usr/bin/ 存放系统命令的目录 ,普通用户和超级用户都可以执行。
 /usr/sbin/ 保存和系统环境设置相关的命令 ,大多数命令只有超级用户可以使用。
 /boot/ 系统启动目录 ,保存系统启动相关的文件 ,如内核文件和启动引导程序 (grub)文件等。
/dev/ 设备文件保存位置。 Linux系统下 ,硬件设备都以文件的形式存在。我们把硬 件
 与系统下相对应的文件称为设备文件。设备文件在Linux系统下保存在/dev/ 下。
 /etc/ 配置文件保存位置。系统内所有采用默认安装方式的服务的配置文件全部都保 存在这个目录中 ,如用户信息文件/etc/passwd等。
 /root/ 超级用户家目录。普通用户家目录在“/home”下 ,超级用户家目录 在“/”下。
 /home/ 普通用户家目录。建立每个用户时 ,每个用户要有一个默认登陆位置。在 Linux系统中 ,每个用户都有自己的一个目录 ,一般由用户的账号命名。
/lib/ 系统调用的函数库保存位置。该目录中存放的是共享程序库和映像文件 ,可供 很多程序使用。通过共享这些映射文件 ,每个程序就不必分别保存自己的库文 件, Linux提供了一组可供所有程序使用的文件。
 /lost+found/ 如果使用标准的ext2、ext3、ext4文件系统格式的分区就会产生这个目录。作 用在于当文件系统发生错误时 ,将一些遗失的片段放到这个目录下。但是如果 使用xfs文件系统并不会产生这个目录。
 /media/ 挂载目录。系统建议用来挂载媒体设备的 ,例如软盘和光盘。
 /misc/ 挂载目录。系统建议用来挂载NFS服务的共享目录。系统虽然准备了三个默认
 挂载目录/media/,/mnt/,/misc/ ,但到底哪个目录中挂载什么设备都可以 由管理员自己决定。
/opt/ 第三方安装的软件保存位置。这个目录就是放置和安装其他软件的位置 ,我们 手工安装的源码包软件都可以安装到这个目录当中。
/proc/ 虚拟目录, 目录中所有信息都是内存的映射。通过这个虚拟的内存映射目录, 可以和内核内部数据结构进行交互 ,获取有关进程的信息 ,同时也可以在系统运行中修改内核参数。与其他目录不同, proc存在于内存中 ,而不是硬盘
 上。
 /proc/cpuinfo/ 关于系统CPU的详细信息 ,包括CPU名称、型号和类型等。
 /proc/meminfo/ 内存信息 ,包括物理内存和虚拟内存。
 /proc/filesystems/ 当前系统支持的文件系统类型。
 /proc/net/ 网络使用协议以及状态信息。
 /sys/ 虚拟文件系统。和/proc类似 ,都是保存在内存当中的 ,主要是保存内核相关 信息的。
 /tmp/ 临时文件目录。系统存放临时文件的目录 ,该目录下所有用户都可以访问和写 入。一般建议此目录中不能保存重要数据 ,这些临时文件可能会随时被删除。
 /usr/ 此目录主要用于存放应用程序和文件。如果系统安装的时候选择了很多软件包 那么这些软件包默认会安装到此目录下。
 /usr/lib/ 应用程序调用的函数库保存位置。
 /usr/X11R6/ X Window系统的所有文件。
 /usr/local/ 手工安装的软件保存位置。一般建议把源码包软件安装在这个目录中。
 /usr/share/ 应用程序的资源文件保存位置。如帮助文档 ,说明文档和字体目录。
 /usr/src/ 源码包保存位置。源码包和内核源码包都可以保存到这里。
 /var/ 动态数据保存位置。主要用于存放系统运行以及软件运行的日志信息。
 /var/log/ 存放各种系统或应用程序的日志文件。
 /var/lib/ 该目录存放系统正常运行时需要调用或改变的库文件。如MySQL的数据库保存 在/var/lib/mysql中。
 /var/www/ rpm包安装的apache网页主目录位置。
 /var/spool/ 放置队列数据的目录。就是队列等待其他程程序使用的数据。比如邮件队列和 打印队列。
 /var/spool/mail/ 新收到的邮件队列保存位置。系统新收到的邮件会保存在这个目录中。
 /var/spool/cron/ 系统的定时任务队列保存位置。系统中的定时任务会保存到这里。
 /var/tmp/ 临时目录 ,该目录允许比/tmp/存放更大的文件。
11、命令名称:cat(显示文件内容)
 命令格式:cat 文件名
 -n 列出行号
 cat 显示多个文件内容
 cat 将多个文件内容合并(按照文件先后顺序)
 (如文件超过一页内容后只能显示最后一页的内容)
 例如:cat空格/root/anaconda查看文件内容
 cat空格/root/anaconda /boot/config 查看多个文件内容
 cat -a空格/root/anaconda列出行号
 补充:cat /etc/fstab /etc/passwd >> /root/hfo1加上命令>>是可以将两个文件内容写入到hfo1中
12、命令名称:more(分页显示文件内容)
 b 向上翻页(打开文件时使用)
 空格 向下翻页
 Enter 换行
 q或Q 退出
 例如:more空格/boot/config 分页查看文件内容按b和空格可以上下翻,enter换行,Q退出
 使more查看目录里的内容需要加上管道符 | 才能读取,使两个命令相连接
 例如: ls /etc/ | more意思是把etc目录里的信息利用管道符详细显示
交互式命令:命令执行后,需要用户继续进行键盘输入。more、rm
 非交互式:命令直接执行,不需要用户进行键盘输入。rm -rf、ls
13、命令名称:less(分页显示文件内容)
 命令格式:less 文件名
 显示文件内容的时候支持关键词查找
 例如:less空格/boot/config执行后查看关键字,在光标位置输入/号然后把关键字输入在根号后,就可以查看内容里的关键字了;按n键是在不同关键字之间跳转,Q退出
14、查看文件首部指定行:head
 -n数字 #查看文件指定首部n行
15、查看文件指定尾行:tail
 -n 数字 #查看文件尾行
 -f #持续显示文件变化情况(只对日志文件查看)
16、命令名称:ln(生成链接文件)
 -s 创建符号链接(软链接)
 生成的文件的链接,在里面改数据原文件也会同时更改。相当于用这个命令生成的链接文件是本质上是一个文件,只是他们会被放到不同路径下,iNode号相同找到的block块也相同。
硬链接:
 1.执行ln命令创建硬链接,硬链接创建后文件链接数量+1。
 2.修改互为硬链接的任意文件,其余文件均会看到变化。
 3.互为硬链接文件,删除其中一个文件。链接数量-1。当文件链接数量为1时,再次删除,文件为彻底删除。
 4.硬链接不能跨分区创建。(文件系统不一样)
 5.目录不能创建硬链接。(会给目录造成环城,会有两个目录导致无法找到一直循环)
补充:命令名称:echo (输出命令,写入内容)
如果写入xxx内容到文件,那个文件不存在的情况下它会自动创建文件并写入内容xxx
 例如:echo “xxx” >> /root/hfo1
 把xxx写入到root下fh01,但是root下没有这个文件,执行这条命令的时候它会自己创建一个hf01的文件并把内容写进去
软链接:
 1.执行ln -s选项可以创建软链接。软链接创建完成并不会让源文件链接数量+1。
 2.软链接文件权限默认为rwxrwxrwx。
 3.软链接可以跨分区创建。
 4.创建软链接尽量写绝对路径。
 5.删除软链接,源文件不受影响。删除源文件,软链接变为失效状态。
 6.软链接只记录路径。
 7.目录可以创建软链接。
创建软链接过程:
黄色:命令过程
 橘色:代表权限,软链接的权限是全开的,操作目录本身的权限还是得看原文件的权限才能对文件进行操作,以原文件的权限为主
 蓝色:iNode号
 创建软链接的大小是取决于该文件的路径的字符,如/root/fstab/是11个字符,所以它的大小是11
 软链接的存在是相当于给一个藏得很深的文件创建一个快捷方式,创建出的软链接可以指出原文件的路径的作用。
 剪切: 
 1.复制源文件到目标位置,删除源文件。
 2.文件命令移动到目标位置。
 复制文件的iNode号会变,剪切的iNode号就不会变,只是给路径换了个位置。
 文件删除相当于清空了iNode号的内容,iNode号的状态是可用的,不会删除文件的iNode号 ,再次创建文件时还是占原来被删除文件的iNode号。
文件系统:
 1.block:文件系统中存储数据的最小单元,ext4、xfs等文件系统中,创建时默认4k,分
 为存储文件数据的data block和存储目录数据的directory block。
 2.inode:又称“索引节点”,每一个inode对应一个文件或目录,记录了文件的大小、所
 占用的block以及目录的directory block信息。
 3.Inode Bitmap:翻译成中文就是“inode位图”,用二进制的方式记录了inode的使用情
 况。
 4.Block Bitmap:翻译成中文就是“块位图”,同Inode Bitmap,用二进制方式记录了块
 的使用情况。
二、权限管理命令
 -rw-r–r-- 1 root root 08-11 01:45 aa.txt
 文件权限 文件链接数量 所有者 所属组 时间 文件名
 权限位是十位
 第一位:代表文件类型
-  普通文件
d 目录文件
 l 链接文件
 b 块设备文件
 c 字符设备文件 (连续有顺序的操作)
 s 套接字 (IP和端口号的组合)
 p 管道(命令会变成进程去运行的,进程之间是不知道对方的存在,管道符连接前后的)
 tty文件类型开头是c,纯字符界面使用的是tty终端;图形界面就是使用的pty(称为虚拟终端)
其余九位为权限:
 r w x r w x r w x
 读 写 执行 读 写 执行 读 写 执行
 4 2 1 4 2 1 4 2 1
 文件所有者(u) 文件所属组(g) 其他用户(o)other
1、命令名称:chmod(修改文件的权限)
 命令格式: chmod u+x 文件
 chmod g+w,o+w 文件
 chmod u=rwx 文件
 chmod 644 文件
2、命令名称:chown(修改文件或目录的所有者,所属组)
 命令格式:chown user1 ss
 chown user1:user2 ss
 chown :user1 ss
3、命令名称:chgrp(改变文件或目录的所属组)
 命令格式:chgrp 用户组 文件或目录
 chgrp roushan ss
4、命令名称:umask(显示和设置掩码值) 临时性的
 对目录和文件生效,在默认掩码为0022下文件最大权限缺省为644,目录缺省最大权限
 为755.
 777
 -022
 
755
三、查找命令
 1、命令名称:which(查看命令文件位置和命令可能出现的别名)
黄色:查看命令所在位置
 玫色:创建别名的命令:alias
 蓝色:多加选项的命令
 橘色:蓝色创建的ld
2、whereis(查找命令及帮助文档所在位置)
 .gz是压缩包
3、locate(按照文件名查找,按照数据库查找)
 updatedb 强制更新数据库
 updatedb执行这个命令时如果数据库中并没有这个数据库文件,那么它会自己创建一个updatedb数据库。有数据库就是更新数据库。
 Locate命令的使用实例:
locate /etc/sh
搜索etc目录下所有以sh开头的文件。
 在使用locate命令时,要使用绝对路径查询。
4、命令名称:find(搜索系统中符合条件的文件)
 -name 根据文件名查找
 通配符:* 任意多个字符
 ? 任意一个字符
 [ ] 指范围值,外侧加引号
-size 根据大小查找
 find ./ -size -10k 查找小于10k的文件或目录
 find ./ -size -10M 查找小于10M的文件或目录
 find ./ -size +10G 查找大于10G的文件或目录
-user 根据所有者查找
 find / -user root 查找根下所有root用户的文件
 -group 根据所属组查找
 find / -group root 查找根下所有root组的文件
 用户删除的前提需要先排除一下有那些文件的所有者和所属组是我要删除的用户,需要提前更改一下所有者和所属组。以免用户删除后所有者和所属组无法显示。
 -perm 根据文件权限查找
 find /boot/ -perm 644
-按时间查找
 按天 ctime atime mtime
 按分钟 cmin amin mmin
 c change 表示属性被修改过:所有者、所属组、权限
 a access 被访问过(被查看过)
 m modify 表示内容被修改过
 find /etc -mmin -120 查找120分钟内内容被修改过的
 find /etc -ctime +7 查找七天之前属性被修改过的
-type 根据文件类型查找
 例:-type f 二进制文件(普通文件)
 -type l 软连接文件
 -type d 目录
-逻辑连接符
 -a (and 逻辑与)
 -o (or 逻辑或)
 例:find /etc -size +1k -a -size -10k
 #在etc目录小查找大于1k并且小于10k的文件
-命令执行连接符(对查找到的文件,进一步处理)
 find … -exec 命令 {} \;
 {}表示find查询的结果集
 \是转义符,不适用命令别名,直接使用命令本身
 ;分号是表示语句结束
 转义符:在Linux中有个别名机制,如rm删除文件,执行的却是rm -i(用which rm 可
 以查看命令别名)使用rm删除文件前会提示确认信息,就因为rm -i 这个参数。如果想使用
 命令原意,可以在加\转义。如:\rm tese.txt 不会提示,直接删除。
-inum 根据文件i节点查询
 find ./ inum 231906 -exec rm {} \;
 有一些文件的硬链接数量有很多,有相同的i节点,查找其中的一个文件的i节点号,一次性
 删除。
 xargs命令:把前一个命令输出的结果当成多个参数。
 例: find / -name “aaa*” | xargs rm -rf
通过硬链接的iNode号可以查看其他链接所在的位置
5、grep “字符串” 文件名(在文件内查找符合条件的字符串行)
 命令所在路径:/bin/grep
 -v 反向选择
 -i 忽略大小写
在etc下fstab里用grep可以精确的找到关键词,grep -v反向选择除了包含xfs的其他都显示出来,grep -i不用区分大小写查找关键词
 6、管道符
 命令1 | 命令2 将命令1 的标准输出作为命令2的标准输入
用管道符把前面的内容串联起来用grep在etc里面找输入在grep后面的内容;组合后gerp是在etc里找子目录子文件。
Find和grep的区别:
 Find是按照条件找文件,grep找的是字符串,在文件里找关键字的行
四、帮助命令
 1.man 命令 查看命令的帮助
 命令名称: man
 man -f 命令
 #查看命令有哪些级别的帮助,在使用命令前要执行mandb生成man缓存信息,否则命令执
 行不成功。图形界面因为安装原因所以比字符界面man级别更多。
 查看指定级别:
 man 级别 命令
 man的级别:
 1:查看命令的帮助2:查看可被内核调用的函数的帮助
 3:查看函数和函数库的帮助
 4:查看特殊文件的帮助(主要是/dev目录下的文件)
 5:查看配置文件的帮助
 6:查看游戏的帮助
 7:查看其他杂项的帮助
 8:查看系统管理员可用命令的帮助
 9:查看和内核相关文件的帮助
2.help 内部命令 查看内部的帮助信息
 type 命令 的方式查看命令是否为内部命令。
 内部命令如cd、pwd、echo等。
 外部命令如:ls、vi等命令。
补充:shell命令解释器。对于用户属性来说shell也是分类型的,用户登录后系统会根据用户属性分配一个shell命令解释器。Shell是一直存在一直执行的。
 3.type查看命令类型(内建命令/外部命令)
 [root@localhost ~]# type cd
 cd is a shell builtin
 [root@localhost ~]# type ls
 ls is aliased to `ls --color=auto’
 Shell(命令解释器):可以把你的命令转换成内核能读懂能执行的代码去运行。
4.命令 --help 查看命令的常见选项
5.info 命令 #比man更详细的帮助命令。
 回车:进入子帮助页面(带有*号标记)
 u:进入上层页面
 n:进入下一个帮助小节
 p:进入上一个帮助小节
 q:退出
五.网络命令
 1.ping 测试网络连通性
 -c 指定ping次数
2.ifconfig 查询本机网络信息
 获取IP的方式:ONBOOT BOOTPROTO=DHCP
 补充:error错误
 ifconfig命令使用方法
 注意:下面操作使用root用户(动态修改)
 命令:ifconfig
 作用:用来配置网络或显示当前网络接口的状态
 [root@localhost ~]# ifconfig
 ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
 inet 192.168.12.18 netmask 255.255.255.0 broadcast 192.168.1.255
 inet6 fe80::c09d:975d:89cd:fd3f prefixlen 64 scopeid 0x20
 ether 00:0c:29:02:83:db txqueuelen 1000 (Ethernet)
 RX packets 3255 bytes 4458479 (4.2 MiB)
 RX errors 0 dropped 26 overruns 0 frame 0
 TX packets 1130 bytes 81645 (79.7 KiB)
 TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
 网卡名称:centos6:eh0 eh1 eh2
 Centos7:ens**(由任意两个数字是你的硬件设备产生的)
 上图信息大概说明:
 第一行:
 UP–>网卡开启状态
 BROADCAST–>广播
 RUNNING–>网线处理连接状态
 MULTICAST–>支持组播
 mtu 1500–>(Maximum Transmission Unit)最大传输单元大小为1500字节
 第二行:该网卡的IP地址,子网掩码,广播地址
 第三行:IPV6的配置信息
 第四行:网卡的MAC地址
 ether表示连接类型为以太网
 txqueuelen 1000 --》传输队列的长度
 第五六行:网卡接收数据包的统计信息和接收错误的统计信息
 第七八行:网卡发送数据包的统计信息和发送错误的统计信息
 临时修改IP地址
 例1:临时修改网卡IP地址
 ifconfig 网卡名称 IP地址 —直接修改网卡的IP地址,重启失效
 [root@localhost Desktop]# ifconfig ens33
 ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
 inet 192.168.12.18 netmask 255.255.255.0 broadcast 192.168.1.255
 [root@localhost Desktop]# ifconfig ens33 192.168.12.110 netmask 255.255.255.0
 说明:修改后当前终端会终断,需要重新使用新的IP地址进行连接[root@localhost Desktop]# ifconfig ens33
 ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
 inet 192.168.12.110 netmask 255.255.255.0 broadcast 192.168.1.255
 inet6 fe80::20c:29ff:fee8:ac4 prefixlen 64 scopeid 0x20
 ether 00:0c:29:e8:0a:c4 txqueuelen 1000 (Ethernet)
 RX packets 2028 bytes 198715 (194.0 KiB)
 RX errors 0 dropped 0 overruns 0 frame 0
 TX packets 385 bytes 51073 (49.8 KiB)
 TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
 [root@localhost Desktop]# systemctl restart network //CENTOS7的网卡重启方法
 [root@localhost Desktop]# service network restart //CENTOS6的网卡重启方法
更改IP是临时的,系统重启和网卡重启恢复到之前的IP
 例2: 添加多个临时IP地址
 ifconfig 网卡名称:0 第一个IP地址 (netmask 子网掩码) —增加一个IP
 ifconfig 网卡名称:1 第二个IP地址 (netmask 子网掩码) —增加一个IP
[root@localhost ~]# ifconfig ens33:0 192.168.12.110 netmask 255.255.255.0 up
 [root@localhost ~]# ifconfig
 ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
 inet 192.168.12.18 netmask 255.255.255.0 broadcast 192.168.1.255
 ens33:0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
 inet 192.168.12.110 netmask 255.255.255.0 broadcast 192.168.1.255
 ether 00:0c:29:e8:0a:c4 txqueuelen 1000 (Ethernet)
 删除临时IP
 [root@localhost ~]# ifconfig ens33:0 del 192.168.12.110
 [root@localhost ~]# ifconfig
 ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
 inet 192.168.12.110 netmask 255.255.255.0 broadcast 192.168.1.255
 inet6 fe80::20c:29ff:fee8:ac4 prefixlen 64 scopeid 0x20
 ether 00:0c:29:e8:0a:c4 txqueuelen 1000 (Ethe rnet)RX packets 3056 bytes 311813 (304.5 KiB)
 RX errors 0 dropped 0 overruns 0 frame 0
 TX packets 961 bytes 145297 (141.8 KiB)
 TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
 ens33:1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
 inet 192.168.1.111 netmask 255.255.255.0 broadcast 192.168.1.255
 ether 00:0c:29:e8:0a:c4 txqueuelen 1000 (Ethernet)
 例3:添加真实网卡:
 nmcli connection add con-name 网卡名称 type 接口类型 ifname 网卡名称
 nmcli connection add con-name ens37 type ethernet ifname ens37
 查看网卡配置文件路径:ls /etc/sysconfig/network-scripts/
 例4:停止或启动某网卡
 centos6:
 [root@localhost ~]# if down eth0
 [root@localhost ~]# if up eth0
 centos7:
 [root@localhost ~]# nmcli connection load /etc/sysconfig/network-scripts/ifcfg-ens33 #重载配置文件。
 [root@localhost ~]# nmcli connection down ens33 #停止。
 [root@localhost ~]# nmcli connection up ens33 #启动。
 systemctl start network #启动network
 systemctl stop network #停止network
 systemctl restart network #重启network
Centos6版本中没有生成网卡的命令只能自己手动创建,把ens33内容复制进去把33改成创的名称,把 UUID一行直接删除,因为UUID是网卡设备唯一标识。
 更改网络配置文件:
 BOOTPROTO=“static”
 IPADDR=192.168.217.200
 NETMASK=255.255.255.0
 GATEWAY=192.168.217.2
 DNS1=8.8.8.8
3.w
 查询当前登陆服务器的用户
 第一行:当前时间,持续运行时间,登陆用户数量,1分钟,5分钟,15分钟 前的平均
 负载
 第二行:用户名 TTY:登陆终端 FROM:来源IP
 登陆时间
 IDLE:用户闲置时间
 JCPU:所有进程占用CPU时间
 PCPU:当前进程占用CPU时间
 WHAT:用户正在进行的操作
4.who 查询登录用户
 5.last 列出登陆系统的相关信息
 第一列:用户名
 第二列:终端位置第三列:登录IP或内核版本
 第四列:开始时间
 第五列:结束时间
 第六列:持续时间
6.lastlog 显示所有账号最后一次的登陆时间
7.write 用户名 给在在线用户写信(不用背)
 write root tty1
 “发送内容 ”
 ctrl+d 保存,发送
 用户:①根用户:超级用户
 ②管理员用户:可以在安装系统时设置,权限比root略低,比普通用户略高
 ③普通用户:权限最低可以登陆
 ④系统或服务用户:不能登录系统(无论有没有密码),但是可以使用系统资源(对相关的配置文件进行相应的运行)
 注:用户后面加d等于持续运行的意思
 字符界面查看IP地址的命令是:ip add
8.wall 对所有在线用户广播
 wall 字符串 或 wall enter(回车) 字符串 ctrl+d
 9.mail 邮件命令
 发信:
 mail
 标题 内容
 收信:
 mail 用户名
 ctrl+d
 结束 发送
 h 列出邮件列表
 q 退出
 查看文件:mail,详细打开输入尾部>N 后面的编号,读完后输入q回车退出
10.netstat 查看网络连接状态
 常见端口:
 20 21 ftp服务 文件共享
 22 ssh服务 安全的远程连接
 23 telnet
 25 smtp:简单邮件传输协议 发信
 110 pop3:邮局协议三代 收信
 80 http超文本传输协议
 3306 mysql端口
 3389 Windows终端端口
 /etc/service 所有常见的端口
 netstat -tlun 查看本机所有监听的端口
 -t tcp协议
 -u udp协议
 -l 监听
 -n 以IP和端口的形式显示信息
 -a 显示所有选项
 -p 显示建立相关连接程序名
 注:UID用户ID号码,PID进程ID号
 例:
 列出所有端口:netstat -a | more
 列出所有tcp端口:netstat -at
 列出所有udp端口:netstat -au
 只显示监听端口:netstat -l
 只列出所有监听tcp端口:netstat -lt
 只列出所有监听udp端口:netstat -lu
六.关机和重启命令
 1.关机
 poweroff 掉电关机
 in it 0 以0级别运行
 Init0 #系统以0级别运行,关闭系统。
 Init6 #重启系统
 Init3 #以3级别运行,字符界面等
 Init5 #图形式界面
shutdown -h now now也可以替换为具体时间
 shutdown +5 “system will shutdown after 5 minutes ”
 #设定5分钟后关机,发给所有用户关机提示信息告知登录用户。
 此命令执行五分钟后,登录的用户将退出登录,但系统并不会关闭。
 需要自行shutdown -h now进行关机(C7此命令直接关闭系统)。
 shutdown +2 -h “system will shutdown after 1 minutes”
 #如果想要关闭系统并提示用户即将关机信息那么要执行此命令
2.重启
 shutdown -r now
 reboot
 in it 6(查看当前什么级别使用命令runlevel)
3.数据同步
 sync
 在Linux/Unix系统中,在文件或数据处理过程中一般先放到内存缓冲区中,等到适当的时候(指定大小、制定时间、指定数量)再写入磁盘,以提高系统的运行效率。sync命令则可用来强制将内存缓冲区中的数据立 即写入磁盘中。用户通常不需执行sync命令,系统会自动将缓冲区的数据写入磁盘。只有用户需要非正常关机时,才需手动执行sync命令。
七.挂载命令
 Linux系统一切设备皆文件。比如第一张光盘,会被自动识别为/dev/sr0(设备文件的 命名方式是主设备号加次设备号。主设备号说明设备类型,次设备号说明是第几个设备), 但并此时的光盘还不能正常的读取。需要先进行挂载而后才能进行正常的读取。需要指定挂 载
 点并执行挂载命令。(不同的光盘之间需要重新挂载并指定挂载点才能正常使用)
 补充:/etc/fstab 是永久挂载文件,系统启动时就已经默认挂载了这个文件
1.mount 查询系统中已经挂载的设备
 常见的存储设备:
 /dev/sda1 第一个scsi硬盘的第一个分区
 /dev/cdrom 光盘
 /dev/sr0 光盘
 常用挂载点见目录
 挂载格式:
 mount -t 文件系统类型 -o 特殊选项 设备文件名 挂载点
 -t 文件系统:加入文件系统类型来指定挂载的类型,可以ext3,ext4,iso9660等文件系统。
 -o 特殊选项:可以指定挂载的额外选项,比如读写权限,同步异步等,如果
 不指定则默认值生效。
参数 说明
 atime/noatime 更新访问时间/不更新访问时间。访问分区文件时,是否更新文件的访问时间,
 默认为更新。
 async/sync 异步/同步,默认为异步。
 auto/noauto 自动/手动,mount -a 命令执行时,
 是否会自动安装/etc/fstab文件内容挂载默认自动。
 defaults 定义默认值,相当于rw,suid,dev,exec,auto,nouser,async这七个选项。
 exec/noexec 执行/不执行,设定是否允许在文件系统中执行可执行文件,默认是exec允许。
 补充:不能执行的原因有两点:①、文件本身有没有权限 ②、分区本身有没有权限。分区权限改成了noexec不能执行时,分区下有ls命令也无法执行这个命令
 remount 重新挂载已经挂载的文件系统,一般用于指定修改特殊权限。
 rw/ro 读写/只读,文件系统挂载时,是否具有读写权限,默认是rw。
 suid/nosuid
 具有/不具有SUID权限,设定文件系统是有具有SUID和SGID的权限,默认有。
 注释:s如果出现在所有者权限上就是SUID,出现在所属组的权限上就是SGID
 user/nouser 允许/不允许普通用户挂载,设定文件系统是否允许普通用户挂载,默认是不允许,
 只有root可以挂载分区。
 usrquota 写入代表文件系统支持用户磁盘配额,默认不支持。
 注释磁盘配额:在多用户的情况下限制用户使用磁盘空间
 grpquota 写入代表文件系统支持组磁盘配额,默认不支持。
例1:mount 查看挂载信息
 /dev/sda1 on /boot type ext4 (rw)
 我们查看到/boot分区已经被挂载,而且采用的defaults选项,那么我们重新挂载分区,并采用noexec 权限禁止执行文件执行,看看会出现什么情况(注意不要用/分区做试验,不然系统命令也不能执行了)
 [root@localhost ~]# mount -o remount,noexec /boot
 [root@localhost ~]# cp /usr/bin/ls /boot
 [root@localhost ~]# /boot/ls
 -bash: /boot/ls: 权限不够
 [root@localhost ~]# mount -o remount,exec /boot
把文件改成只读模式:mount -o remount,ro /boot/
恢复到默认模式:mount -o remount,rw /boot/
例2:挂载硬盘分区,移动硬盘
 [root@localhost ~]# mkdir /mnt/disk1
 #创建挂载点
 [root@localhost ~]# mount /dev/sdb1 /mnt/disk1
 #挂载硬盘分区或者移动硬盘
例3:挂载光盘
 [root@localhost ~]# mount -t iso9660 /dev/sr0 /mnt/cdrom
 #/mnt/cdrom必须是已存在的目录
 卸载光盘:
 例4:挂载U盘
 [root@localhost ~]# fdisk -l
 #查看当前系统下的存储设备,确认U盘的设备名称
Fat32 u盘挂载:首先把虚拟机usb设置成3.0能识别,打开虚拟机在右下角把u盘连接到虚拟机上,桌面会出来图标。Fdisk-l查看u盘名称,再用mount | grep sdb1 查看系统自动挂载的位置,想要自己挂载就先把它卸载之后再挂到想要挂的地方就可以了
 #fat32格式的U盘挂载方式
 -t vfat fat32
 -t fat fat16
 如果u盘系统是fat32、fat16不加 -t直接挂载都可以
 注:Linux默认情况不识别NTFS格式
 注:挂载U盘后查看U盘空间大小:df -h
例5:挂载.iso文件
 mount -o loop /root/CentOS-7-x86_64-DVD-1810.iso /mnt/
 加入loop选项让文件以块设备的方式进行挂载。
例6:卸载
 umount 设备名称或挂载点
 #所有挂载的设备卸载方式都一样
例7:挂载NTFS格式
 yum -y install ep el-release
 yum -y install ntfs-3g
 mount -t ntfs-3g /dev/sdb1 /media/
 ls /media(这里操作需要连网才能进行)
Xshell:rz 从Windows里把ntfs的rpm安装包转到centos7里
 ll -h 查看ntfs安装包有没有存在
 rpm -ivh ./ntfs(tab补全)进行安装
 Mount /dev/sdb1 /media/
 df -h 查看有没有sdb1
 ls /medai/ 就可以查看到ntfs文件系统的u盘里的内容了
 因为centos7不支持ntfs系统类型,首先需要下载一个ntfs的rpm安装包,安装在centos7里面,再次挂载ntfs的U盘就可以成功了
把本地文件用远程链接xshell7发送到虚拟机上命令为:rz,执行rz后会弹出widows的文件管理系统从里面找到你需要的文件双击就发送。
 文件系统:产生block和iNode能帮助管理员保存一个文件,这样的组成部分叫做文件系统。
挂载注意事项:
 同一个文件系统不应该重复挂载在不同的挂载点。
 同一个目录不应该重复挂载多个文件系统。
 作为挂载点,一定要是空白目录。
补充:①rz:将Windows文件上传到linux
 ②sz:将linux文件下载到Windows(下载是因为linux是远程使用的服务器,也可以用传输比喻)
 八.打包压缩
 1.tar: 文件的归档( 打包) 和压缩
 归档和压缩文件的好处:节约硬盘的资源 ,加快文件传输速率
 用法:tar [选项] 打包压缩后得到的文件 对哪些进行打包(对文件、对目录、对多个文件或目录)
 参数:
 -c: 创建文件
 -x: 提取 解压还原文件
 -v: 显示执行详细过程
 -f: 指定备份文件
 -t: 列出压缩包中包括哪些文件,不解包查看包中的内容
 -C(大写): 指定解压位置
例1:对/boot/grub 目录打包并解包。
 [root@localhost ~]# tar -cvf ./grub.tar /boot/grub/
 或:
 [root@localhost ~]# tar cvf ./grub.tar /boot/grub/
 tar: 从成员名中删除开头的“/ ”
 /boot/grub/
 /boot/grub/splash.xpm.gz
 [root@localhost ~]# ls ./gurb.tar
 [root@localhost ~]# tar -xvf ./grub.tar #解压缩得到的是解压到当前
 boot/grub/
 boot/grub/splash.xpm.gz
 解压指定到文件
 [root@localhost ~]# tar -xvf ./grub.tar -c /opt/ 意思是将grub解压到opt
 [root@localhost ~]# ls ./boot #得到 boot 目录例 1:指定解压位置 -C(大写)
 [root@localhost ~]# tar xvf ./grub.tar.bz2 -C /opt/
 tar: 从成员名中删除开头的“/ ”
 /boot/grub/
 /boot/grub/splash.xpm.gz
 [root@localhost ~]# ls /opt/
 boot
例 2:把两个目录或目录+文件打包成一个软件包:
 打包:tar -cvf ./all.tar /boot/grub/ /etc/passwd /etc/fstab /root/anaconda-ks.cfg
 注意使用“/”目录是/boot/grub/后面要加/ 黄色是目录,绿色是文件
 解压:tar -xvf ./all.tar
例3:在打包过程中跳过某个或多个文件。
 对多个文件的目录打包:tar -cvf /root/etc.tar /etc/
- -exclude:指定跳过的文件。
 [root@localhost ~]# cp /etc/passwd ./back/
 [root@localhost ~]# cp -a /etc/fstab ./back/
 [root@localhost ~]# cp -a /etc/shadow ./back/
 [root@localhost ~]# cp -a /etc/group ./back/
 #创建目录和目录下文件。
 [root@localhost ~]# tar - -exclude /root/back/group -cvf /root/back.tar /root/back/
 注:–exclude后面只能放一个绝对路径需要跳过的文件,如果有再要跳过的就在后面继续写–exclude。例如:tar --exclude /root/test.d/passwd --exclude /root/test.d/fstab -xvf ./tes.tar /root/test.d/
跳过文件压缩:
压缩:
#在打包过程中指定跳过group文件。
例 4:不解包,查看 tar 中的内容:
 [root@localhost ~]# tar -tvf ./grub.tar
tar 归档+压缩:
 常用参数:
 -z: 以 gzip 方式压缩 扩展名: tar.gz
 -j: 以 bz2 方式压缩的 扩展名:tar.bz2
 -J(大写): 以 xz 方式压缩 扩展名:tar.xz
例 1:创建.tar.gz 包
 [root@localhost ~]# tar -cvf ./etc.tar /etc
 [root@localhost test]# tar -zcvf ./etc.tar.gz /etc
 [root@localhost test]# tar -zxvf ./etc.tar.gz
 例 2:创建.tar.bz2 包
 [root@localhost ~]# tar -jcvf ./etc.tar.bz2 /etc
 [root@localhost ~]# tar -jxvf ./etc.tar.bz2
 #解压缩
 [root@localhost ~]# tar jxvf ./etc.tar.bz2 -C /opt #解压到 opt 目录下 例 3:创建.tar.xz 包
 [root@localhost ~]# tar -Jcvf ./etc.tar.xz /etc
 [root@localhost ~]# tar -xvf ./etc.tar.xz
 对比三种压缩方式后压缩比例:
 [root@localhost ~]# ll -h ./etc.tar*
 解压缩不需要加参数,不管是什么压缩方式都用-xvf解压
 查询目录一共包含的文件有多大命令:du -sh 目录名
 格式:tar -xvf ./grub.tar -C /opt/ #将grub.tar解压到/opt
 命令 选项 执行对象 选项 执行对象 选项
2.zip 管理压缩文件
 zip 软件包解压缩命令:
 zip 是压缩程序,unzip 是解压程序。
 例 1:压缩文件:
 例 2:将所有.jpg 的文件压缩成一个 zip 包
 [root@localhost ~]# zip ./all.zip *.jpg
 例 3:压缩一个目录
 [root@localhost ~]# zip -r ./grub.zip /boot/grub
 解压缩:
 -d:指定解压目录。
 [root@localhost ~]# unzip ./grub.zip
 [root@localhost ~]# unzip ./grub.zip -d /opt/
zip压缩的大小比其他压缩的更大因为它是把目录里的软链接的源文件拿过来,源文件占据的空间比软链接的大
3.file 命令
 作用:确定文件类型
 用法: file /etc/passwd
 注:linux 系统不根据后缀名识别文件类型
 用 file 命令查看文件的类型。
 [root@localhost ~]# file /etc/passwd
 /etc/passwd: ASCII text