快照/克隆
快照:又称还原点,就是保存在拍快照时候的系统的状态(包含了所有的内容),在后期的时候随时可以恢复。
注意:侧重在于短期备份,需要频繁备份的时候都可以使用快照,做快照的时候虚拟机中操作系统一般处于开启状态
克隆:就是复制的意思。
注意:克隆侧重长期备份,做克隆的时候是必须得关闭(了解)
快照与克隆的区别
克隆与快照的最大的区别:克隆之后是2 台机器,而快照之后依旧是1 台机器(影子系统)。后期的危险操作前建议使用快照。
Linux系统文件
bin:全称binary,含义是二进制(逢二进一)。该目录中存储的都是一些二进制文件(可执行文件,命令),文件都是可以被运行的。普通二进制目录,里面的二进制文件(命令),普通用户可以执行且超级管理员也可以执行。dev:device,该目录中主要存放的是外接设备,例如盘、其他的光盘等。在其中的外接设备是不能直接被使用的,需要挂载(类似windows 下的分配盘符)。etc:该目录主要存储一些配置文件,非常重要!!!home:表示“家”,表示除了root用户以外其他用户的家目录,类似于windows下的User/用户目录。proc:process,表示进程,该目录中存储的是Linux 运行时候的进程, 此目录下不能建立和删除文件;(某些文件可以修改)。存储的是当前内核运行状态的一系列特殊文件,这个目录是一个虚拟的目录,它是系统内存的映射root:该目录是root 用户自己的家目录。sbin:全称super binary(shell binary),该目录也是存储一些可以被执行的二进制文件,但是必须得有super 权限的用户才能执行。(superman超人)tmp:temp缩写形式,表示“临时”的,当系统运行时候产生的临时文件会在这个目录存着。usr:存放的是用户自己安装的软件。类似于windows 下的program files。var:variable(可变的,变量),存放的程序/系统的日志文件的目录。mnt:当外接设备需要挂载的时候,临时挂载用的设备挂载点;(如磁盘分区,网络共享)medie:ruan pang /guan pang mu lu/opt:opt 是 optional(可选) 的缩写,这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。/run:是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。如果你的系统上有 /var/run 目录,应该让它指向 runboot:系统在启动时需要加载的文件存储目录;lib:library,函数库目录,专门存储计算机系统在启动时以及其他软件在运行时需要加载的函数库文件;lost+found:Linux 也很难避免不出现断电、宕机等等情况,如果断电有些文件可能还并没有完全保存好,那么此时对应文件就会存储在该目录中,下次启动时候可以再去使用;
树状目录结构:
以下是对这些目录的解释:
/bin:
bin 是 Binaries (二进制文件) 的缩写, 这个目录存放着最经常使用的命令。
/boot:
这里存放的是启动 Linux 时使用的一些核心文件,包括一些连接文件以及镜像文件。
/dev :
dev 是 Device(设备) 的缩写, 该目录下存放的是 Linux 的外部设备,在 Linux 中访问设备的方式和访问文件的方式是相同的。
/etc:
etc 是 Etcetera(等等) 的缩写,这个目录用来存放所有的系统管理所需要的配置文件和子目录。
/home:
用户的主目录,在 Linux 中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的,如上图中的 alice、bob 和 eve。
/lib:
lib 是 Library(库) 的缩写这个目录里存放着系统最基本的动态连接共享库,其作用类似于 Windows 里的 DLL 文件。几乎所有的应用程序都需要用到这些共享库。
/lost+found:
这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。
/media:
linux 系统会自动识别一些设备,例如U盘、光驱等等,当识别后,Linux 会把识别的设备挂载到这个目录下。
/mnt:
系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在 /mnt/ 上,然后进入该目录就可以查看光驱里的内容了。
/opt:
opt 是 optional(可选) 的缩写,这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。
/proc:
proc 是 Processes(进程) 的缩写,/proc 是一种伪文件系统(也即虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。
这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件,比如可以通过下面的命令来屏蔽主机的ping命令,使别人无法ping你的机器:
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
/root:
该目录为系统管理员,也称作超级权限者的用户主目录。
/sbin:
s 就是 Super User 的意思,是 Superuser Binaries (超级用户的二进制文件) 的缩写,这里存放的是系统管理员使用的系统管理程序。
/selinux:
这个目录是 Redhat/CentOS 所特有的目录,Selinux 是一个安全机制,类似于 windows 的防火墙,但是这套机制比较复杂,这个目录就是存放selinux相关的文件的。
/srv:
该目录存放一些服务启动之后需要提取的数据。
/sys:
这是 Linux2.6 内核的一个很大的变化。该目录下安装了 2.6 内核中新出现的一个文件系统 sysfs 。
sysfs 文件系统集成了下面3种文件系统的信息:针对进程信息的 proc 文件系统、针对设备的 devfs 文件系统以及针对伪终端的 devpts 文件系统。
该文件系统是内核设备树的一个直观反映。
当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中被创建。
/tmp:
tmp 是 temporary(临时) 的缩写这个目录是用来存放一些临时文件的。
/usr:
usr 是 unix shared resources(共享资源) 的缩写,这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于 windows 下的 program files 目录。
/usr/bin:
系统用户使用的应用程序。
/usr/sbin:
超级用户使用的比较高级的管理程序和系统守护程序。
/usr/src:
内核源代码默认的放置目录。
/var:
var 是 variable(变量) 的缩写,这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。
/run:
是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。如果你的系统上有 /var/run 目录,应该让它指向 run。
在 Linux 系统中,有几个目录是比较重要的,平时需要注意不要误删除或者随意更改内部文件。
/etc: 上边也提到了,这个是系统中的配置文件,如果你更改了该目录下的某个文件可能会导致系统不能启动。
/bin, /sbin, /usr/bin, /usr/sbin: 这是系统预设的执行文件的放置目录,比如 ls 就是在 /bin/ls 目录下的。
值得提出的是,/bin, /usr/bin 是给系统用户使用的指令(除root外的通用户),而/sbin, /usr/sbin 则是给 root 使用的指令。
/var: 这是一个非常重要的目录,系统上跑了很多程序,那么每个程序都会有相应的日志产生,而这些日志就被记录到这个目录下,具体在 /var/log 目录下,另外 mail 的预设放置也是在这里。
Linux命令入门(上)
[root@db02 1]## 超级管理员 $普通用户lsls (空格) -ltail -n 3 readme.txt 最后三行tail /etc/passwd 默认最后10 行一直变化的文件总是显示后10行:[root@linuxcool ~ ] tail -f 10 file[cndws@localhost ~] $ su - root关于路径:路径分为 绝对路径和相对路径。绝对路径:不管当前工作路径是在哪,目标路径都会从“/”磁盘根下开始。相对路径:除绝对路径之外的路径称之为相对路径,相对路径得有一个相对物(当前工作)。只要看到路径以“/”开头则表示该路径是绝对路径,除了以“/”开头的路径称之为相对路径。../:表示上级目录(上一级)./ :表示当前目录(同级),普通文件./可以省略,可执行文件(绿色)必须加./文件夹名称/:表示下级目录(下一级),注意这个斜杠/ls -al -a 隐藏文件ls -l /tmpls -lh -h:表示以较高可读性(文档大小)的形式进行展示[root@db02 1]# ls -al /tmp总用量 8drwxrwxrwt. 21 root root 4096 11月 11 15:08 .dr-xr-xr-x. 17 root root 244 11月 11 01:56 ..drwx------. 2 root root 20 11月 11 02:00 .esd-0drwxrwxrwt. 2 root root 6 9月 26 04:56 .font-unixdrwxrwxrwt. 2 root root 42 11月 11 14:22 .ICE-unix-r--r--r-- 1 root root 11 11月 11 14:22 .X0-lock“d”打头,该位表示文档类型,“d”表示文件夹,“-”表示是文件pwd(==print working directory==,打印当前工作目录)cd 切换当前的工作目录clear 清屏whoami 作用:用户获取当前用户的用户名reboot 重启操作系统init 6 重启电脑(reboot)shutdown | halt 关机命令init 0 表示关机(halt)shutdown -h 0或now 立即关机当我们执行shutdown -h 10这个命令时,系统就处于关机等待状态。如果后悔了想取消关机,我们可以使用快捷键Ctrl + C按键进行取消关机。 中止当前进程shutdown -r 10 延迟重启,10分钟之后重启创建目录语法:# mkdir 路径(需要包含文件夹名称)mkdir /usr/local/nginx/html递归创建目录语法:# mkdir -p 路径(需要包含目录名称)创建多层不存在的路径,可以使用mkdir -p进行实现。同时创建多个目录语法:#mkdir [-p] 路径1 路径2 路径3删除空目录语法:# rmdir 路径(需要包含目录名称)同时删除多个空目录rmdir /a /aa用法三:递归删除空目录==语法:# rmdir -p 路径作用:首先删除子目录,删除成功后,删除上级目录,直至结束。文件操作创建文件语法:# touch 文件路径 [文件路径2 文件路径3 …]删除文件删除文件或文件夹语法:rm [-rf] 文件或文件夹路径选项:-r :递归删除-f :强制删除,不提示任何信息。操作前一定要慎重!!!复制与剪切作用:复制文件/文件夹到指定的位置语法:#cp [-r] 被复制的文件路径 文件被复制到的路径cp -r /root/shop/ /tmp/-r 复制目录的时候用剪切操作作用:移动文档到新的位置语法:#mv 需要移动的文档路径 需要保存的位置路径mv与cp的区别:☆ mv 与 cp 命令不一样,不管是针对文件还是针对文件夹都不需要加类似 -r 的选项。☆ 在移动的过程中文档名称名称是不变的,变的是路径重命名操作mv a.txt b.txt压缩与解压缩gzip|bzip2|xz:压缩单个文件☆ gzip命令 .gzgzip 需要压缩的文件解压:gunzip或者gzip -d☆ bzip2命令压缩:bzip2 需要压缩的文件 .bz2解压:bzip2 -d 需要解压的文件> 压缩速度慢,压缩率高,cpu开销大☆ xz命令压缩:xz 需要压缩的文件解压:unxz 或者 xz -d> 压缩率高,解压速度快,压缩时间较长,cpu消耗相对较大☆ tar打包命令tar命令可以将文件打包成文件档案1)打包语法:tar 选项 打包文件名 要打包的文件或目录选项:-c,create 创建的意思-v,可视化的意思,即可以查看创建的过程,可以省略-f,必选参数,不能省略==-u,update缩写,更新原打包文件中的文件(了解)-r,append含义,向压缩归档文件末尾追加文件(了解)-t,查看打包的文件内容(了解)# tar -cvf a.tar b.txt c.txt# tar -uf a.tar b.txt c.txt# tar -rf a.tar b.txt c.txt2)打包并压缩语法:tar 选项 打包文件名 要压缩的文件或目录-z,压缩为.gz格式-j,压缩为.bz2格式-J,压缩为.xz格式-c,create 创建的意思-v,可视化的意思,即可以查看创建的过程,可以省略-f,使用档案名字,切记,这个参数是最后一个参数,后面只能接档案名。必选参数,不能省略# tar -czvf hw.tar.gz /bb3)解压解压的时候,把压缩命令中的 c 换成 x 即可示例代码:解压hw.tar.gz文件# tar -xzvf hw.tar.gz使用选项 -tf ,可以查看压缩文件内容# tar -tf hw.tar.gzzip压缩与解压缩zip压缩语法:# zip [-r] 压缩后的文件 需要压缩的文件(多个文件)# zip read.zip read.txt 文件压缩# zip -p read.zip readunzip解压缩语法:unzip 要解压的压缩文件 [-d] 解压目录unzio read.zip 解压到当前目录unzip read.zip -d /tmp/ 解压到指定目录输出重定向语法:# 需要执行的有输出的命令 输出重定向符号 >或>> 输出到的文件路径场景:一般命令的输出都会显示在终端中,有些时候需要将一些命令的执行结果想要保存到文件中进行后续的分析/统计,则这时候需要使用到的输出重定向技术。>:标准输出重定向 => 覆盖输出,会覆盖掉原先的文件内容>>:追加重定向 => 追加输出,不会覆盖原始文件内容,会在原始内容末尾继续添加ls -l >> a.txtecho "11111" >> a.txt 使用echo命令向文件中写入自定义内容标准输入输出bash的I/O输入输出:0 1 2标准输入(stdin) :键盘上所输入的内容 文件描述符 0标准输出(stdout) :屏幕上所输出的正确的结果 文件描述符 1标准错误(stderr) :屏幕上所输出的错误的结果 文件描述符 22> :标准错误重定向&> :标准输出和标准错误重定向 & = 1+2cmd命令 2> stderr.txt 1>stdout.txtcmd &> output.txtcmd >& output.txt #两个表达式效果一样的2>/dev/null意思就是把错误输出到“黑洞”>/dev/null 2>&1默认情况是1,也就是等同于1>/dev/null 2>&1。意思就是把标准输出重定向到“黑洞”,还把错误输出2重定向到标准输出1,也就是标准输出和错误输出都进了“黑洞”2>&1 >/dev/null意思就是把错误输出2重定向到标准出1,也就是屏幕,标准输出进了“黑洞”,也就是标准输出进了黑洞,错误输出打印到屏幕&>/dev/null这个就是,标准输出和标准错误,通通重定向到/dev/null2&>11是屏幕, 所以标准错误重定向到屏幕1>/dev/null即标准输出重定向到 /dev/null,>/dev/null 2>&1 标准输出和标准错误都重定向到了/dev/null实际上,应该等同于这样: 1>/dev/null 2>/dev/null ,默认情况下就是1,标准输出,所以一般都省略。 而&符号,后面接的是必须的文件描述符。不能写成2>1,这样就成了标准错误重定向到文件名为1的文件中了,而不是重定向标准错误到标准输出中。所以这里就是:标准输出重定向到了/dev/null,而标准错误又重定向到了标准输出,所以就成了标准输出和标准错误都重定向到了/dev/null2>&1 >/dev/null 标准错误打印到屏幕,而标准输出不打印到屏幕咋一看,这个跟上面那个有啥区别呢,不也是标准错误重定向到标准输出,而标准输出重定向到/dev/null么? 最后不应该都重定向/dev/null么? 我是这么理解的!一条指令同一时刻要么产生标准错误,要么产生标准输出。 当产出标准错误的时候,因这个标准错误重定向到了标准输出,而标准输出是输出到屏幕。这个时候标准输出还没有被重定向到/dev/null,于是在屏幕上打印了。当产生标准输出时,那么它就不是标准错误,2>&1无效,于是标准输出重定向dev/null,不打印到屏幕。所以最终结果将是:标准错误打印到屏幕,而标准输出不打印到屏幕。查看文件内容语法:# cat 文件名称文件内容合并语法:#cat 待合并的文件路径1 待合并的文件路径2 …. 文件路径n > 合并之后的文件路径# cat hello.txt world.txt > helloworld.txt倒序查看语法:# tac 文件名称求帮助方法:help 简约内部:help 命令外部:命令 --help or --hman manul缩写,代表手册。详细帮助,任何命令,任何配置文件都可以在man文档中找到相关信息1 命令(bin)5 配置文件8 管理员相关工具命令和后台的程序(sbin)man 1 命令man 5 配置文件的名字(不用加路径)man 8 shutdown## type命令主要功能:查看一个命令是属于内部命令还是外部命令。别名命令:[root@linuxcool ~]# type lsls is aliased to `ls --color=auto'内建命令:[root@linuxcool ~]# type cdcd is a shell builtin关键字:[root@linuxcool ~]# type ifif is a shell keywordhistory命令
Linux基本命令(下)
磁盘内存命令:df作用:查看磁盘的空间(disk free)语法:# df [-h]选项:-h表示可读性较高的形式展示大小[root@db02 1]# df -h文件系统 容量 已用 可用 已用% 挂载点devtmpfs 470M 0 470M 0% /devtmpfs 487M 0 487M 0% /dev/shmtmpfs 487M 8.4M 478M 2% /runtmpfs 487M 0 487M 0% /sys/fs/cgroup/dev/mapper/centos-root 8.0G 7.5G 600M 93% //dev/sda1 1014M 185M 830M 19% /boottmpfs 98M 12K 98M 1% /run/user/42tmpfs 98M 0 98M 0% /run/user/0Filesystem=>磁盘名称、Size=>总大小、Used=>被使用的大小、Avail=>剩余大小、Use%=>使用百分比、Mounted on=>挂载路径(相当于Windows 的磁盘符)free命令命令:free作用:查看内存使用情况语法:#free -m选项:-m 表示以mb为单位查看(1g = 1024mb,1mb = 1024kb)☆ used=total-free 即 total=used+free☆ 实际内存占用:**used-buffers-cached** 即 **total-free-buffers-cached**☆ 实际可用内存:**buffers+cached+free**[root@db02 1]# free -mtotal used free shared buff/cache availableMem: 972 380 261 10 330 441Swap: 1023 0 1023第1行Mem数据:total 内存总数: 979used 已经使用的内存数: 539free 空闲的内存数: 440shared 共享内存数: 4buffers Buffer Cache块设备缓存区内存数: 34cached Page Cache文件缓存内存数: 182第2行-/+ buffers/cache:-buffers/cache 的内存数:323 (等于第1行的 used - buffers - cached)+buffers/cache 的内存数: 656 (等于第1行的 free + buffers + cached)可见-buffers/cache反映的是被程序实实在在吃掉的内存,而+buffers/cache反映的是可以挪用的内存总数。第3行数据是Swap交换分区,也就是我们通常所说的虚拟内存。可以在内存不够使用的情况下当临时内存来使用,交换分区并不是越大越好,一般话它就等同于实际内存的大小。文件内容相关命令命令:head作用:查看一个文件的前n 行,如果不指定n,则默认显示前10 行。语法:#head -n 文件路径 【n 表示数字】示例代码:显示install.log 文件的前3行# head -3 install.log命令:tail作用:查看一个文件的末n 行,如果n 不指定默认显示后10 行语法:# tail -n 文件路径 【n 表示数字】tail命令扩展语法:# tail -f 文件路径作用:查看一个文件动态变化的内容【变化的内容不能是用户手动增加的,必须要求是计算机帮我们写入的内容】说明:tail -f命令一般用于查看系统的日志tail -f /var/log/messages① less命令(推荐)命令:less作用:查看文件,按下辅助功能键(**数字+回车、空格键(向下翻页)、上下方向键**)查看更多语法:# less 需要查看的文件路径**流程:不是加载整个文件,而是一点一点进行加载,相对而言,读取大文件时,效率比较高。**扩展:less命令我们还可以进行关键词检索功能/关键字,搜索成功后,文档中的所有关键字都会高亮。n : next,向下切换关键字N : shift + n,向上切换关键字### ② more命令命令:more作用:查看文件,按下辅助功能键(空格、字母键b等价于back)查看更多语法:#more 需要查看的文件路径一屏一屏的读**流程:more在读取文件时,默认已经加载文件的全部内容。**## 4、wc命令命令:wc,wc = word count作用:用于统计文件内容信息(包含行数、单词数、字节数)语法:# wc -lwc 需要统计的文件路径-l:表示lines,行数(以回车/换行符为标准)-w:表示words,单词数 依照空格来判断单词数量-c:表示bytes, 字节数(空格,回车,换行)## 5、du命令命令:du`作用:查看文件或目录(会递归显示子目录)占用磁盘空间大小`语法:# du [-sh]选项:-s :summaries,只显示汇总的大小,统计文件夹的大小-h:表示以高可读性的形式进行显示,如果不写-h,默认以KB的形式显示文件大小[root@db02 1]# du /var/log/messages172 /var/log/messages[root@db02 1]# du -h /var/log/messages172K /var/log/messages[root@db02 1]# du -s /var/log/messages172 /var/log/messages[root@db02 1]# du -sh /var/log/messages172K /var/log/messages## 6、find命令命令:find作用:用于查找文档(其选项有55 个之多)**语法:# find 路径范围 选项1 选项1的值 [选项2 选项2 的值…]**选项:-name:按照文档名称进行搜索(支持模糊搜索)* : 通配符,匹配任意个任意字符-type:按照文档的类型进行搜索文档类型:`"-"` 表示文件(在使用find 的时候需要用f 来替换),`"d"`表示文件夹[root@db02 1]# find /etc -type d #搜索/etc 目录下所有的文件夹[root@db02 1]# find /etc -name "*g" -type d/etc/pki/rpm-gpg/etc/pki/rsyslog/etc/sysconfig/etc/xdg[root@db02 1]# find /etc -name ".conf" -type d命令:date作用:表示获取系统时间==语法1:# date 输出的形式:2018 年 3 月 24 日 星期六 15:54:28 CST====语法2:# date "+%F" (等价于# date "+%Y-%m-%d" ) 输出形式:2018-03-24====语法3:# date "+%F %T" 引号表示让 "年月日与时分秒" 成为一个不可分割的整体==> 等价操作# date "+%Y-%m-%d %H:%M:%S",输出的形式:2018-03-24 16:01:00==语法4:获取之前或者之后的某个时间(备份)==# date -d "-1 day" "+%Y-%m-%d %H:%M:%S"[root@db02 1]# date "+%F"2020-11-11[root@db02 1]# date "+%Y-%m-%d"2020-11-11[root@db02 1]# date "+%Y/%m/%d"2020/11/11[root@db02 1]# date "+%T"16:44:04[root@db02 1]# date2020年 11月 11日 星期三 16:44:16 CST[root@db02 1]# date "+%T %F"16:44:39 2020-11-11[root@db02 1]# date -d "-7 day" "+ %F %T"2020-11-04 16:48:25[root@db02 1]# date -d "-7 day" "+%F %T"2020-11-04 16:48:2[root@db02 1]# date -d "-7 day"2020年 11月 04日 星期三 16:48:02 CST[root@db02 1]# date -d "-7 hour" "+%F %T"2020-11-11 09:49:21设置时间命令:date作用:表示设置系统时间选项:-s, --set=STRING,设置系统时间# date -s "2020-12-12 10:10:10"hwclock命令命令:hwclock作用:表示获取计算机硬件RTC时间[root@db02 1]# hwclock2020年11月11日 星期三 16时49分50秒 -0.585070 秒[root@db02 1]# date2020年 11月 11日 星期三 16:51:29 CST-w,将Linux系统时间保存到硬件RTC中-s,将硬件RTC中的时间保存到Linux系统时间中[root@db02 1]# date2020年 11月 11日 星期三 16:54:02 CST[root@db02 1]# hwclock2020年11月11日 星期三 16时52分28秒 -0.099936 秒[root@db02 1]# hwclock -w[root@db02 1]# date2020年 11月 11日 星期三 16:54:35 CST[root@db02 1]# hwclock2020年11月11日 星期三 16时54分39秒 -0.272681 秒操作系统日历#cal#cal -1#cal -数字#cal -y 2018bash中的引号☆ 双引号"" : 会把引号的内容当成整体来看待,允许通过$符号引用其他变量值☆ 单引号'' : 会把引号的内容当成整体来看待,禁止引用其他变量值,shell中特殊符号都被视为普通字符☆ 反撇号`` : 反撇号和$()一样,引号或括号里的命令会优先执行,如果存在嵌套,反撇号不能用[root@db02 1]# echo $(date +%F)2020-11-11[root@db02 1]# echo `date +%F`2020-11-11[root@db02 1]# echo `echo $(date +%F)`2020-11-11[root@db02 1]# echo `echo `date +%F``date +%F[root@db02 /]# echo $(ls)bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var[root@db02 /]# echo `ls`bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var[root@db02 /]# $(ls)bash: bin: 未找到命令...1、管道符管道符:`|`作用:管道是一种通信机制,通常用于进程间的通信。它表现出来的形式将前面每一个进程的输出(stdout)直接作为下一个进程的输入(stdin)。# ls / | grep “y”grep 指令用于“过滤”grep 语法:grep 选项 文件路径/内容针对上面这个命令说明:① 以管道作为分界线,前面的命令有个输出,后面需要先输入(缺少查找范围),然后再过滤,最后再输出,通俗的讲就是管道前面的输出就是后面指令的输入。为了便于理解,上述的指令变相实现可以如下:# ls / > xxx.txt 将ls /的结果保存到xxx.txt文件中# grep “y” xxx.txt 使用grep指令搜索xxx.txt中的包含y的行② grep 指令:主要用于过滤语法:# grep [选项] “搜索关键词” 搜索范围[root@db02 /]# grep "mysql" /root/install.log使用Linux命令统计“/”下的文档的个数[root@db02 /]# ls / | wc -l19用户在计算机中有一个配置文件(/etc/passwd),一般情况下,一个用户会占用一行配置,请你使用现学的管道统计当前计算机中一共有多少个用户个信息[root@db02 /]# cat /etc/passwd | wc -l45xargs命令之所以能用到这个命令,关键是由于很多命令不支持|管道来传递参数,而日常工作中有有这个必要,所以就有了 xargs 命令。find /etc -name "*.conf" | ls -l (错误)find /etc -name "*.conf" | xargs ls -l (正确)xargs特别说明:xargs 可以将管道或标准输入(stdin)数据转换成命令行参数,也能够从文件的输出中读取数据。xargs 也可以将单行或多行文本输入转换为其他格式,例如多行变单行,单行变多行。xargs 默认的命令是 echo,这意味着通过管道传递给 xargs 的输入将会包含换行和空白,不过通过 xargs 的处理,换行和空白将被空格取代。xargs 是一个强有力的命令,它能够捕获一个命令的输出,然后传递给另外一个命令。[root@linuxcool ~]#cat test.txta b c de f[root@linuxcool ~]#cat test.txt | xargsa b c d e f[root@linuxcool ~]#cat test.txt | xargs -n3a b cd e fFQDN全限定域名,临时设置主机名称作用:操作服务器的主机名(读取、设置)语法1:# hostname,获取主机名.完整域名语法2:# hostname -f 全限定域名(FQDN)命令:id作用:查看一个用户的一些基本信息(包含用户id,用户组id,附加组id…),该指令如果不指定用户则默认当前用户。# id# id cdnsps命令指令:ps【process show】作用:主要是查看服务器的进程信息选项含义:-e:等价于“-A”,表示列出全部(all)的进程-f : 表示full,显示全部的列(显示全字段)语法:ps -ef | grep "进程名称"【Linux/Unix命令格式】#ps -ef |grep "mysql"#ps -aux |grep "mysql"ps aux【BSD格式命令,注意没有横杠"-"】[root@db02 /]# ps -aux | grep "sshd"root 1091 0.0 0.4 112924 4332 ? Ss 14:22 0:00 /usr/sbin/sshd -Droot 2109 0.0 0.7 168304 7048 ? Ss 14:50 0:01 sshd: root@pts/0root 2111 0.0 0.6 167972 6440 ? Ss 14:50 0:00 sshd: root@nottyroot 4219 0.0 0.0 112828 980 pts/0 S+ 17:17 0:00 grep --color=auto sshd[root@db02 /]# ps -efUID PID PPID C STIME TTY TIME CMDroot 1 0 0 14:22 ? 00:00:02 /usr/lib/systemd/systemd --switched-root --system --deserialize 22root 2 0 0 14:22 ? 00:00:00 [kthreadd]root 4 2 0 14:22 ? 00:00:00 [kworker/0:0H]root 6 2 0 14:22 ? 00:00:00 [ksoftirqd/0]root 7 2 0 14:22 ? 00:00:00 [migration/0]列的含义:UID :该进程执行的用户IDPID :进程IDPPID :该进程的父级进程ID,如果找不到,则该进程就被称之为僵尸进程(Parent Process ID)C :Cpu的占用率,其形式是百分数STIME:进程的启动时间TTY :终端设备,发起该进程的设备识别符号,如果显示“?”则表示该进程并不是由终端设备发起扩展:Ctrl + Alt + F1 ~ F6,可以进入到不同的终端设备TIME :进程实际使用CPU的时间CMD :该进程的名称或者对应的路径[root@db02 /]# ps auxUSER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMANDroot 1 0.0 0.4 191236 4180 ? Ss 14:22 0:02 /usr/lib/systemd/systemd --switched-root --system --deserialize 22root 2 0.0 0.0 0 0 ? S 14:22 0:00 [kthreadd]root 4 0.0 0.0 0 0 ? S< 14:22 0:00 [kworker/0:0H]root 6 0.0 0.0 0 0 ? S 14:22 0:00 [ksoftirqd/0]root 2127 2109 0 14:50 pts/0 00:00:00 -bashUSER:该 process 属于哪个使用者账号PID :该 process 的ID%CPU:该 process 使用掉的 CPU 资源百分比%MEM:该 process 所占用的物理内存百分比VSZ :该 process 使用掉的虚拟内存量 (Kbytes)RSS :该 process 占用的固定的内存量 (Kbytes)TTY :该 process 是在那个终端机上面运作,若与终端机无关,则显示 ?,另外, tty1-tty6 是本机上面的登入者程序,若为 pts/0 等等的,则表示为由网络连接进主机的程序。STAT:该程序目前的状态,主要的状态有R :该程序目前正在运作,或者是可被运作S :该程序目前正在睡眠当中 (可说是 idle 状态),但可被某些讯号 (signal) 唤醒。T :该程序目前正在侦测或者是停止了Z :该程序应该已经终止,但是其父程序却无法正常的终止他,造成 zombie (疆尸) 程序的状态START:该 process 被触发启动的时间TIME :该 process 实际使用 CPU 运作的时间COMMAND:该程序的实际指令[root@db02 /]# toptop - 17:23:54 up 3:01, 1 user, load average: 0.00, 0.01, 0.05Tasks: 175 total, 1 running, 174 sleeping, 0 stopped, 0 zombie%Cpu(s): 0.2 us, 0.2 sy, 0.0 ni, 99.3 id, 0.3 wa, 0.0 hi, 0.0 si, 0.0 stKiB Mem : 995712 total, 261052 free, 392340 used, 342320 buff/cacheKiB Swap: 1048572 total, 1048572 free, 0 used. 449488 avail MemPID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND4200 root 20 0 0 0 0 S 1.0 0.0 0:00.09 kworker/1:14279 root 20 0 162124 2328 1596 R 0.7 0.2 0:00.09 top1 root 20 0 191236 4180 2612 S 0.0 0.4 0:02.69 systemd2 root 20 0 0 0 0 S 0.0 0.0 0:00.03 kthreadd4 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H6 root 20 0 0 0 0 S 0.0 0.0 0:00.93 ksoftirqd/07 root rt 0 0 0 0 S 0.0 0.0 0:00.22 migration/08 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_bh9 root 20 0 0 0 0 S 0.0 0.0 0:05.32 rcu_sched10 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 lru-add-drain11 root rt 0 0 0 0 S 0.0 0.0 0:00.15 watchdog/012 root rt 0 0 0 0 S 0.0 0.0 0:00.25 watchdog/113 root rt 0 0 0 0 S 0.0 0.0 0:00.20 migration/1表头含义:PID :进程IDUSER:该进程对应的用户PR :优先级VIRT:虚拟内存RES :常驻内存SHR :共享内存,计算一个进程实际使用的内存 = 常驻内存(RES)- 共享内存(SHR)S :表示进程的状态status(sleeping,其中S 表示睡眠,R 表示运行)%CPU:表示CPU 的占用百分比%MEM:表示内存的占用百分比TIME+ :执行的时间COMMAND:进程的名称或者路径M(大写):表示将结果按照内存(MEM)从高到低进行降序排列;P(大写):,表示将结果按照CPU 使用率从高到低进行降序排列;1 :当服务器拥有多个cpu 的时候可以使用“1”快捷键来切换是否展示显示各个cpu 的详细信息;[root@db02 /]# toptop - 17:28:08 up 3:05, 1 user, load average: 0.00, 0.01, 0.05Tasks: 175 total, 1 running, 174 sleeping, 0 stopped, 0 zombie%Cpu0 : 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st%Cpu1 : 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 stKiB Mem : 995712 total, 260984 free, 392248 used, 342480 buff/cacheKiB Swap: 1048572 total, 1048572 free, 0 used. 449500 avail Memscroll coordinates: y = 1/175 (tasks), x = 1/12 (fields)PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND1566 gdm 20 0 3236424 132948 60628 S 0.0 13.4 0:16.01 gnome-shell1369 root 20 0 296128 24356 15700 S 0.0 2.4 0:00.99 X1095 root 20 0 574304 19476 6144 S 0.0 2.0 0:01.94 tuned722 polkitd 20 0 616540 17940 5156 S 0.0 1.8 0:02.16 polkitd1676 gdm 20 0 1012400 17936 10364 S 0.0 1.8 0:00.34 gsd-media-keys命令:service作用:用于控制一些软件的服务启动/停止/重启语法:# service 服务名 start/stop/restart/status状态> 注:服务名可以去/etc/init.d 目录下寻找服务和进程有啥区别?服务≠进程进程是指运行的程序(状态不一定是正在运行:run/sleep/stop/zombieˈzɑ:mbi']僵尸)服务是进程的一个"外壳",用于控制对进程的启动/停止/重启操作# service sshd start|stop|restart|status# service httpd start# ps -ef | grep "httpd" 通过`ps -ef` 得到的结果发现apache启动的进程存在父子关系了解:在centos7 中,service 命令将会被systemctl 所替代(#systemctl start/restart/stop 服务名)。但是,service 命令在centos7 中同时兼容。在互联网中,经常看到kill -9 进程PID,强制杀死某个进程,kill -l# killall 进程名称killall httpdpkill 进程名称,与killall类似,杀死所有进程[root@db02 /]# unameLinuxuname -a,选项-a代表all,表示获取全部的系统信息(类型、全部主机名、内核版本、发布时间、开源计划)[root@db02 /]# uname -aLinux db02.slave.cc 3.10.0-1127.el7.x86_64 #1 SMP Tue Mar 31 23:36:51 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux[root@db02 /]# cat /etc/redhat-releaseCentOS Linux release 7.8.2003 (Core)[root@db02 /]# netstat -tunlpActive Internet connections (only servers)Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program nametcp 0 0 192.168.122.1:53 0.0.0.0:* LISTEN 1374/dnsmasqtcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1091/sshdtcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 1094/cupsdtcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1301/master[root@db02 /]# netstat -tulpActive Internet connections (only servers)Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program nametcp 0 0 db02.slave.cc:domain 0.0.0.0:* LISTEN 1374/dnsmasqtcp 0 0 0.0.0.0:ssh 0.0.0.0:* LISTEN 1091/sshdtcp 0 0 localhost:ipp 0.0.0.0:* LISTEN 1094/cupsdtcp 0 0 localhost:smtp 0.0.0.0:* LISTEN 1301/master# mkdir ad{1..3}# mv abc{,cc}# cp a{,b}如何在命令行中快速删除光标前/后的内容? 前:ctrl + u 后:ctrl + k
Vim编辑器
① 命令模式:在该模式下是不能对文件直接编辑,可以输入快捷键(命令)进行一些操作(复制、粘贴、删除等等)
注意:当我们使用Vim编辑器,打开某个文件后默认进入的模式就是命令模式
② 编辑模式:在该模式下可以对文件的内容进行编辑
③ 末行模式:可以在末行输入命令来对文件进行操作(搜索、替换、保存、退出、撤销、高亮等等)
\# `vim 文件路径` 作用:打开指定的文件,如果文件不存在,自动创建该文件
\# ` vim +/关键词 文件的路径` 作用:打开指定的文件,并且高亮显示关键词
\# ` vim +数字 文件的路径` 作用:打开指定的文件,并且将光标移动到指定行
# vim read.txt
# vim +10 read.txt
# vim +/mysql /root/install.log
# vim a.txt b.txt
> 注:退出方式,在命令模式下,输入":q"按下回车即可。
:next代表切换到下一个文件
:prev代表切换到上一个文件
### ☆ 光标移动到行首与行尾
光标移动到行首,按键:`shift + 6 或 ^`(T 字母上面的6,不要按小键盘的6)
光标移动到行尾,按键:`shift + 4 或 $`(R 字母的左上角的4,不是小键盘的4)
光标移动到首行的行首,按键:`gg`
光标移动到末行的行首,按键:`G [Capslk 再加 G 键] / [Shift + G 键]`
### ☆ 翻屏
向上 翻屏,按键:`ctrl + b (before) 或 PgUp`
向下 翻屏,按键:`ctrl + f (after) 或 PgDn`
向上翻半屏,按键:`ctrl + u (up)`
向下翻半屏,按键:`ctrl + d (down)`
### ☆ 向上/下/左/右移动指定的行/列
数字 + 方向键(上下左右),比如5 + 向上方向键,代表将光标向上移动5行
### ☆ 快速定位到指定行(重点)
数字 + G
### ☆ 以当前行为准向上/下移动指定行
数字+/-【等价于数字】
5 - :代表向上移动5行
5 +(shift + = ) :代表向下移动5行
① 复制光标所在行 按键:yy
② 以光标所在行为准(包含当前行),向下复制指定的行数 按键:数字yy,如5yy
③ 可视化模式下复制
按键:ctrl + v(可视块)或V(可视行)或v(可视),然后按下↑ ↓ ← →方向键来选中需要
复制的区块,按下y 键进行复制(不要按下yy),最后按下p 键粘贴
==① 剪切/删除光标所在行==
按键:dd (删除之后下一行上移)
注意:dd 严格意义上说是剪切命令,但是如果剪切了不粘贴就是删除的效果。
==② 剪切/删除光标所在行为准(包含当前行),向下删除/剪切指定的行==
按键:数字dd (删除之后下一行上移)
③ 剪切/删除光标所在的当前行(光标所在位置)之后的内容,但是删除之后下一行不上移
按键:D (删除之后当前行会变成空白行)留白
④ 可视化删除(了解)
按键:ctrl + v(可视块)或V(可视行)或v(可视),上下左右移动,按下D 表示删除选中行,d 表示删选中块
退出可视模式按下Esc
【末行模式功能】
① :x在文件没有修改的情况下,表示直接退出(等价于:q),在文件修改的情况下表示保存并退出(:wq)
:w 保存文件
:w 路径 另存为
`:q` 退出文件
`:wq` 保存并且退出
`:q!` 表示强制退出,刚才做的修改操作不做保存
搜索/查找
:/关键词 noh
:/ #都可以
:s/搜索的关键词/新的内容` 替换==光标所在行==的第一处符合条件的内容(只替换1次)
:s/搜索的关键词/新的内容/g` 替换==光标所在行==的全部符合条件的内容
:%s/搜索的关键词/新的内容 替换整个文档中每行第一个符合条件的内容
:%s/搜索的关键词/新的内容/g 替换整个文档的符合条件的内容
:set nu
复制语法:`:开始行号,结束行号y`,例如输入`:1,10y`
剪切删除语法:`:开始行号,结束行号d`,例如输入`:1,10d`
:set list list分辨尾部的字符是tab还是空格
i 光标所在字符前插入
o 光标所在字符后插入
a 光标所在行下一行插入
