(一)buffer与cache的区别

buffer是缓冲区,数据被提前写入,以防止对系统产生冲击而设。 cache是缓存,为了缓和高速设备和低速设备之间而设。系统将一些中间结果置于此处,以加快访问速度。

(二)GNU和GPL

彼时Unix从免费转而收费,斯托曼同学非常生气,便创立了自由软件基金会,开展了GNU工程,试图建立一个新的操作系统,摆脱Unix。GPL协议是GNU的规则,规定了行为准则。

(三)Linux系统分区

常见分法:/boot(引导分区) 200M

swap(交换分区)当服务器内存<8G 服务器内存的1.5倍

当服务器内存>=8G 8G

/(根) 剩余容量

如果数据很重要:/boot(引导分区) 200M

swap(交换分区)当服务器内存<8G 服务器内存的1.5倍

当服务器内存>=8G 8G

/(根) 50-200G

/data 剩余容量

如果数据重要性未知:/boot(引导分区) 200M

swap(交换分区)当服务器内存<8G 服务器内存的1.5倍

当服务器内存>=8G 8G

/(根) 50-200G

/data 暂不分

交换分区:临时作为内存使用,类型于Windows的虚拟内存,防止因为内存不够导致系统故障。

(四)raid卡

就是磁盘阵列卡,统一管理磁盘,可以将多个磁盘拼接之后获得更高容量,速度更快,安全性更高。

raid0:至少需要1块磁盘,没有冗余,任何一块磁盘损坏都无法正常工作,安全性低,n块磁盘组成的阵列读写性能理论上是单块磁盘的n倍。适用于对性能要求高,安全性要求不高的场合。

raid1:至少需要两块磁盘,50%冗余,每两块磁盘为一组,任何一组磁盘损坏都无法正常工作,n组磁盘的读写性能理论上是单组的n倍。适用于对安全性要求较高,对性能要求不高的场合。

raid2/3/4:较少应用于实际工作场合,某些研究领域使用。

raid5:目前最常见的应用等级,原理与raid4相似,区别在于校验数据分布在阵列中的所有磁盘上,而没有采用专门的校验磁盘。对于数据和校验数据,他们的写操作可以同时发生在完全不同的磁盘上。所以raid5不存在校验盘的性能瓶颈问题。此外,raid5具备很好的扩展性,当阵列磁盘数量增加时,磁盘组的并发读写性能也随之增加。比raid4支持更多的磁盘,从而能获得更多的容量以及更高的性能。

raid5的磁盘上同时存储数据和校验数据,数据块和对应的校验数据存储在不同的磁盘上,当一个数据盘损坏时,系统可以根据同一条带的其他数据块和校验数据重建损坏数据。与其他raid等级一样,在重建数据的时候,raid5的性能会受到较大影响。

raid5兼顾性能、安全性和综合成本等多方考量,是目前综合性能最佳的数据保护方案。raid5可以满足大部分的存储应用需求,大部分的数据中心都采用它。

RAID 1+0 也被称为RAID 10标准,实际是将RAID 1和RAID 0标准结合的产物,在连续地以位或字节为单位分割数据并且并行读/写多个磁盘的同时,为每一块磁盘作磁盘镜像进行冗余。它的优点是同时拥有RAID 0的超凡速度和RAID1的数据高可靠性,但是CPU占用率同样也更高,而且磁盘的利用率比较低。由于利用了RAID 0极高的读写效率和RAID1较高的数据保护、恢复能力,使RAID10成为了一种性价比较高的等级,目前几乎所有的RAID控制卡都支持这一等级。但是,RAID10对存储容量的利用率和RAID1一样低,只有50%。因此,RAID10即高可靠性与高效磁盘结构它是一个带区结构加一个镜象结构,可以达到既高效又高速的目的,RAID10能提供比RAID5更好的性能。这种新结构的可扩充性不好,这种解决方案被广泛应用,使用此方案比较昂贵。

(五)虚拟机网络配置

centos6中,setup命令可调出网卡配置的图形界面。配置完后,可以通过ifdown eth0&&ifup eth0重启网卡。 ifconfig命令可以查看网卡的配置信息。

虚拟机的网络类型中,有NAT、桥接模式和仅主机模式。

在NAT模式中,可以实现最简单的连接互联网操作,只要宿主机能访问互联网即可。NAT模式下的IP地址是有系统的DHCP服务器来提供,因此IP和DNS一般设置成自动获取,也可手动配置。因此虚拟机无法同局域网中真实的主机进行通讯。

在桥接模式下,虚拟机相当于局域网中一台真实的机器,IP需要手动配置。虚拟机的地位和宿主机一样,所以它可以访问局域网当中的任何一台机器。只要配置好IP、网关、DNS等信息,虚拟机就可以通过局域网网关访问互联网。

在仅主机模式下,虚拟机的网络同外部网络是隔离的。虚拟机只能和宿主机互访,IP地址也是自动分配的。此时,虚拟机无法访问互联网。

(六)基础命令

(1)mkdir 创建目录

-p:连父目录一起创建

(2)ls 显示目标列表

选项 说明 -l 以长格式显示详细信息 -a 显示所有文件,包括隐藏文件 -A 显示所有文件,除隐藏文件外 -t 以文件和目录的更改时间排序 -r 逆序排序 -i 显示文件的inode号 -R 显示递归文件 -h 以人类可读方式显示 -d 仅显示目录名 -k 以kb为单位显示文件大小 -m 以‘,’分隔文件,按行显示 (3)cd 进入目录

cd ~ 回当前用户的家目录

cd - 回到上一次所在的目录

(4)pwd 显示当前位置,从根开始的就是绝对路径,否则是相对路径。

(5)touch 更新文件的时间戳,也可用于创建新文件。

(6)cat 查看文件内容

选项 说明 -A 显示不可打印字符 -n 在输出行前面加上行号 (8)向文件中追加多行的方式:

cat >>/data/oldboy.txt<<eof i love littlefat eof eof是结束符 (9)> 等同于1>,标准输出流重定向正确的内容

等同于1>>,标准输出流追加重定向正确的内容

2>,标准错误输出流重定向错误的内容

2>>,标准错误输出流追加重定向错误的内容

2>&1,标准错误输出流追加重定向到前相同的文件

0:标准输入流

1:标准输出流

2:标准错误输出流

(10)cp 复制,(操作前备份,操作后检查。)

选项 说明 -r 递归复制 -p 复制时保持属性不变 -d 当复制符号链接时,把目标文件或目录也建立为符号链接,并指向与源文件或目录相连接的原始文件或目录 -a 等同于-dpr (11)mv 对文件或目录重新命名,或把文件从一个目录移到下一个目录。如果目标文件已经存在,则会被覆盖。如果目标是个目录,那么源文件会移过来。

(12)rm 删除

选项 说明 -d 删除目录 -r 递归删除,就是连子目录及其文件一起删除 -f 取消提示,强制删除 (13)find 在指定目录下查找文件

find pathname [-options] [-print -exec -ok命令 {} ;] options:

格式 说明 -type 文件类型 文件类型有b(块设备文件)f(普通文件)d(目录)l(符号链接)s(socket文件) -name '字符串' 匹配字符串的所有文件 -lname '字符串' 匹配字符串的所有符号链接文件 -mtime +n或n或-n 按修改时间是n天之前,恰好前第n天,n天之内。类似的还有-atime访问时间,-ctime文件属性修改时间 -maxdepth 1 设置最大目录层级为1,即查找当前目录下的一级子目录 -mindepth 2 设置最小目录深度为2 -perm 644 查找符合644权限数值的文件或目录 -user '字符串' 查找属于匹配用户的文件 -group '字符串' 查找属于匹配用户组的文件 -size 大小 查找符合指定文件大小的文件 -prune 目录 搜索时不搜索该目录,若同时使用-depth,该选项会被忽略 -path '字符串' 搜索路径名匹配字符串的文件 -print 将搜索结果输出到标准输出 -exec 可以对find命令找到文件进行处理。这货不会问你要不要执行,-OK会问你。 {} ; {}用于匹配find找到的所有文件,;是结束符

实例1:否定参数 find /oldboy ! -name '.txt' 查找不是以txt结尾的文件 实例2:find . -maxdepth 1 -type f 查找当前目录下的一级目录 实例3:根据文件时间戳进行查找 Linux中每个文件有三种时间戳: -atime:最近一次访问时间 -mtime:最近一次修改文件内容时间 -ctime:最近一次修改文件属性时间 单位是天,如要改成分钟请用-amin -mmin -cmin find . -type f -mtime -7 查找7天内被访问的文件 find . -type f -mtime 7 查找恰好在7天前被访问的文件 find . -type f -mtime +7 查找超过7天被访问的文件 实例4:根据文件的大小进行查找 find . -type f -size -100k 查找小于100k的文件 find . -type f -size 100k 查找等于100k的文件 find . -type f -size +100k 查找大于100k的文件 实例5:删除找到的匹配文件 find . -type f '*.txt' -delete 选项的联合使用采用-a 并且需要用小括号框起来,括号需要转义 实例6:find (-size +1k -a -size -10m -a -mtime -7 -a -type f)

实例7:find (-size +1k -a -size -10m -a -mtime -7 -a -type f) -exec rm -rf (14)head 取文件内容的前几行,默认10行

选项 说明 -n3 取文件内容的前3行 -c 10 显示文件头部10个字符 (15)tail 取文件内容的后几行,默认10行

选项 说明 -n3 取文件内容的后3行 -c 10 显示文件尾部10个字符 -f 显示文件最近新追加的内容 实例1:tail +20 /oldboy.txt 从第20行开始显示到行尾 (16)alias 查看系统的别名

自定义别名:rm='rm -i'

(17)将一个目录中的文件复制到另一个目录中时,发现有同名文件时,会提示是否需要覆盖。若想不出现提示,

方法一:在命令之前添加反斜杠

方法二:命令采用绝对路径,通过which可查询绝对路径

方法三:修改/etc/profile文件,将自定义的别名写入其中,再用source命令编译/etc/profile即可永久生效。同时/root/.bashrc中把相关的别名注释掉即可。

(18)sed 一种流编辑器,用于处理文件内容,默认不会修改源文件

sed命令的执行过程:处理完一行,就将该行打印到屏幕上,如果没有取消默认打印的话。

语法:sed [options] 'comands' file(s)

选项格式 说明 -n 取消默认输出,只打印处理过的行 -i 直接编辑文件内容,不打印屏幕 -r 支持扩展正则 -e 多重编辑,顺序会影响结果 sed定位:

1.first~step

first:起始匹配行,step:步长

sed -n 2~5p:从第2行开始,每5行打印

2.$:最后一行

3./REGEXP/:匹配正则的那一行

例子:sed -i -r /disable/'s#no#yes#' /etc/xinetd.d/telnet 找到disable那一行,将no修改为yes 4.addr1,addr2:用于定位哪些行,可以是数字、正则或二者的结合。数字代表行号,两个数字就是从哪一行到哪一行。

5.addr1,+n:从addr1开始匹配n行。

6.\cREGEXPc:匹配正则的那一行,c可以是任一字符,通常用#

7.忽略大小写

使用I

sed -e '/aa/Id' a.txtbbcc sed操作命令:

操作格式 说明 p 打印行 g 全面替换 s 替换,如果不加g,则只替换第一个匹配的范本,可替换为空 d 删除行 a 在当前行后添加一行 i 在当前行前添加一行 q 处理完当前行就退出 c 更改当前行 正则表达式特殊元字符:

格式 说明 & 已匹配字符串标记,s/love/&/,会变成love \1 子串匹配标记,\1表示第一个被匹配到的,\2表示第二个被匹配到的 实例1:sed 's/(Mar)got/\1lina/p' test.txt, 包含在圆括号里的模式 Mar 作为标签 1 保存在特定的寄存器中。替换串可以通过\1 来引用它。则 Margot 被替换为 Marlina。

实例2:sed -e '1,3d' -e 's/Hemenway/Jones/' ceshi.txt,第一重编辑编辑删除第 1~3 行。第二重编辑将Hemenway 替换为 Jones。

实例3:sed '^$d' oldboy.txt 删除空行

实例4:sed '2a 106,dandan,CSO\n107,bingbing,CCO' person.txt,多行添加利用换行符

实例5:-i.bak实现修改前的备份, sed ‐i.bak 's#1,000#20,000#g' income.txt #实现工资从1000到20000 前,先备份源文件到income.txt.bak

实例6:最后一行之后添加一行 sed -i '$a export LANG="zh_CN.UTF-8"' /etc/profile

实例7:最后一行之后添加特殊字符,如果实在有错误,可以使用echo " . @x.x.x.x" 追加重定向的方式来添加

实例9:采用变量的方式替换,不能用单引号,只能用双引号 x=oldboy y=oldgirl sed "s#$x#$y#g" test.txt

(19)管道| 将前面命令的标准输出流传送给后面的命令的标准输入流

| 与|xargs的区别: 前者将命令的执行结果当做标准输入流传给后面的命令 后者将命令的执行结果当做参数传给后面的命令

(20)df 查看磁盘分区使用情况

选项 说明 -h 以人类可读的方式展现 -i 查看inode使用情况 (21)free 显示当前内存使用和未使用的数目

-m:以mb为单位

(22)lscpu 显示CPU的详细情况

(23)w 显示已登录系统的用户列表,以及他们现在在干嘛

(24)rpm 包管理命令,曾是Redhat发行版用于管理其软件套件用的,后来陆续被其他发行版所采用

选项 说明 -a 查询所有软件 -q 使用询问模式,当出现任何问题时先询问用户 -i 安装指定的软件 -e 删除指定的软件 -v 显示指令执行过程 -V 对包进行验证 -h 软件安装时列出标记 -l 显示软件的文件列表 -p <rpm套件> 查询指定未安装的rpm包的详细信息 1:安装rpm软件包 rpm -ivh your-package.rpm

2.升级一个包 # rpm -Uvh

3.卸载一个包 # rpm -e

4.安装参数

--force 即使覆盖属于其它包的文件也强迫安装 --nodeps 如果该RPM包的安装依赖其它包,即使其它包没装,也强迫安装。 5.查询一个包是否被安装

rpm -q < rpm package name>

6.列出该包中有哪些文件

rpm -ql < rpm package name>

8.列出服务器上的一个文件属于哪一个RPM包

#rpm -qf 9.列出所有被安装的rpm package

rpm -qa

10.解压rpm包

RPM包括是使用cpio格式打包的,因此可以先转成cpio然后解压,如下所示:

可以先创建一个文件夹,再执行 rpm2cpio xxx.rpm | cpio -div #该命令会解压到当前文件夹 11.查找包的依赖关系

repoquery

--requires只会列出依赖哪些库,但是不会显示这些库来自哪个源包,如果要列出源包,再附上--resolve

(25)tree 树状图显示目录

选项 说明 -d 只显示目录 -L 1 目录树的最大深度为1级目录 (26)grep 强大的文本过滤工具,支持正则表达式,并把匹配的行打印出来

grep [options] '字符串' filename

常用选项:

格式 说明 -E 支持扩展正则表达式等同于egrep -n 在匹配的行之前显示该行的编号 -o 只输出文件中匹配到的部分 -v 输出除之外的所有行 -c 计算符合范本的列数 --color==auto 标记颜色 -r 在目录中进行递归搜索 -q 静默输出,即不会输出任何信息 -e 'hello' 指定字符串为查找的范本样式,可指定多个字符串 -A 3 除显示匹配的当前行之外,还显示其后的3行 -B 3 除显示匹配的当前行之外,还显示其前的3行 -C 3 除显示匹配的当前行之外,还显示其前的3行和其后的3行 -i 搜索时忽略大小写 实例1:在搜索结果中包含或排除指定文件 grep -r 'main' --include *.{php,html} 只在目录中所有PHP和HTML文件中搜索 grep -r 'main' --exclude 'readme' 在搜索时排除所有readme文件 实例2:-e匹配多个范本样式 echo this is a text line | grep -e "is" -e "line" -o 实例2:过滤配置文件中的所有空行和注释 egrep -v '^#|^$' /etc/ssh/sshd_config (27)awk 是一种强大的编程语言,能够处理数据以及文件的内容,可在命令行中使用,更多的是作为脚本使用。

执行过程:BEGIN初始化模块,读入第一行,判断条件,满足条件处理,读入第二行,继续判断...,END统计模块。

awk [options] 'script' var=value file(s) awk [options] -f scriptfile var=value file(s) var=value:赋值一个用户定义变量 -f scriptfile:从脚本文件中读取awk命令 script:脚本 选项格式 说明 -F 指定输入分隔符,分隔符可以是字符串或正则表达式 -v 赋值一个用户自定义变量,把外部变量传递给awk awk脚本是由模式和操作组成的,其中模式可以是下面任意一个: 正则表达式; 关系表达式; 模式匹配表达式; BEGIN语句块,PATTERN语句块,END语句块;

操作由一个或多个命令、函数、表达式组成,之间由换行符或分号隔开,并位于大刮号内,主要部分是:变量或数组赋值、输出命令、内置函数、控制流语句。

awk脚本基本结构:

awk ‘BEGIN{} 模式{command1; command2} END{}’ file 模式中: //:匹配正则或字符串的行 BEGIN语句块、pattern通用模式语句块、END语句块三个是可选的。

工作流程:

先执行BEGIN语句块里的内容,然后对文件进行逐行扫描并执行pattern语句块内容,扫描完之后执行END语句块内容。如果pattern语句块没提供,则默认执行打印即{print}。

awk的内置变量:

格式 说明 $0 当前行 $n 第n个字段 FILENAME 当前输入的文件名 NR 执行过程中的当前行号 NF 执行过程中的当前字段数 FS 字段分隔符,默认是任何空格 特殊说明:

格式 说明 ~ 匹配 !~ 不匹配 == 等于 != 不等于 匹配代码块:

格式 说明 // 匹配正则或字符串 !// 纯字符或正则不匹配 ~// 字段值匹配 !~// 字段值不匹配 awk '$2~/xiaoyu/{print $1,$2}' test.txt

内置函数:

格式 说明 gsub( Ere, Repl, [ In ] ) Ere:要替换的文本,Repl:正则匹配,后面跟着定位 awk '{gsub(/:/,"$",$4);print}' test.txt gsub:替换函数 将:替换为$,而且只替换第四列,g的含义同sed表全面替换。

将外部变量值传递给awk

实例6:var=1000 echo|awk -v VARIABLE=$VAR '{ print VARIABLE }' 实例7:var1="aaa" echo | awk '{ print v1}' v1=$var1

循环结构

for循环: for(变量 in 数组) {语句}

for(变量;条件;表达式) {语句}

while循环: while(表达式) {语句}

do...while循环: do {语句} while(条件)

其他相关语句

break:退出程序循环

continue: 进入下一次循环

next:读取下一个输入行

exit:退出主输入循环,进入END,若没有END或END中有exit语句,则退出脚本。

实例1:echo -e "A line 1nA line 2" | awk 'BEGIN{ print "Start" } { print } END{ print "End" }' Start A line 1 A line 2 当print参数以逗号为分隔符时,打印时以空格为定界符。在print语句中双引号被当做拼接符使用。

实例2:echo | awk '{ var1="v1"; var2="v2"; var3="v3"; print var1,var2,var3; }' v1 v2 v3

实例3:echo | awk '{ var1="v1"; var2="v2"; var3="v3"; print var1"="var2"="var3; }' v1=v2=v3

实例5:seq 5|awk 'BEGIN{sum=0} {print $1"+";sum+=$1} END{print "等于",sum}' 1+ 2+ 3+ 4+ 5+ 等于 15

实例8:调用外部应用程序system方法 awk 'BEGIN{a=system("ls -l /");print a}' 实例9:统计文件中空行的数量 awk '/^$/{i++;print i;}' test.txt awk '/^$/{i++}END{print i}' test.txt 实例10:查找目标字符串是在文件中的哪一行 awk '/password[ ]+required[ ]+pam_deny.so/{print NR}' /etc/pam.d/system-auth (28)chkconfig 查看、设置系统的服务

格式 说明 --level 3 指定服务要在哪一个运行级别里开启或关闭 --list 列出所有系统服务 --add 添加指定服务 --del 删除指定服务 实例1:如何增加一个服务 服务脚本必须存放在/etc/init.d下 chkconfig --add servicename 添加该服务 chkconfig --level 35 servicename on 在运行级别3和5下启动该服务 (29)echo 打印变量的值或输出指定字符串

格式 说明 -e 激活转义字符 使用-e之后,当字符串中出现以下字符时,会做特殊处理。 -n:取消结尾的回车换行 \a 发出警告声; \b 删除前一个字符; \c 最后不加上换行符号; \f 换行但光标仍旧停留在原来的位置; \n 换行且光标移至行首; \r 光标移至行首,但不换行; \t 插入tab; \v 与\f相同; \ 插入\字符; \nnn 插入nnn(八进制)所代表的ASCII字符 (30)tar 打包文件或目录。打包和压缩是两个不同的概念,打包就是把一堆文件放在一个总文件里,而压缩则是把一堆文件经过压缩算法变成一个小文件。

格式 说明 -c 创建新的备份文件 -x 从备份文件中还原文件 -v 显示指令执行过程 -z 通过gzip指令处理备份文件 -t 查看备份文件的内容 -r 添加文件到已压缩的文件里 -f filename 指定备份文件 -C 用于解压缩,如果要解压至特定的目录使用这个选项 --exclude==<范本> 排除符合范本的文件 -N 只将比指定日期更新的文件打包 实例:tar -cvf log.tar.gz /var/log 仅打包不压缩 tar -zcvf log.tar.gz /var/log 以gzip压缩 tar -ztvf log.tar.gz 查看压缩包的内容 tar -zxvf log.tar.gz 解压压缩包 tar -zxvf log.tar.gz -C /tmp/ 解压到指定目录 tar -N "2018/10/01" -zcvf log10.tar.gz /var/log 解压ltp-full-20180118.tar.bz2格式的压缩文档 tar -jxvf ltp-full-20180118.tar.bz2 默认logrotate的压缩使用gzip格式,解压使用gunzip gunzip messages.1.gz (31)wc 统计文件的字数、行数,如不给定文件,就从标准输入当中读取。

格式 说明 -l 只显示行数 -c 只显示字符数 -w 只显示字节数 (32)ps 查看当前系统的进程状态。

格式 说明 -A 显示所有程序 -a 显示现行终端机下的所有程序,包括其他用户的程序 -e 同上 -f 显示UID、PPIP、C与STIME -G<群组名称或群组识别码> 显示该群组下的所有程序 -U<用户名称或用户识别码> 显示该用户下的所有程序 -u 以用户为主的格式来显示程序状况 x 显示所有程序,不以终端机来区分 -l 详细方式显示 例子1:ps aux :显示所有包含其他使用者的行程

显示的详细信息

列 说明 第一列 USER 第二列 PID 第三列 %CPU 第四列 %MEM 第五列 VSZ(进程所使用的虚拟内存的大小) 第六列 RSS(进程使用的驻留集大小或者是实际内存的大小,Kbytes字节) 第七列 TTY(终端) 第八列 STAT(进程的状态) 第九列 START 第十列 TIME(进程使用的总cpu时间) 第十一列 PID 第十二列 COMMAND (33)file 显示文件的类型

格式 说明 -b 不显示文件名称 -L 直接显示软链接所指向的文件或目录 (34)id 查看用户id和组id

格式 说明 -u 显示用户id -g 显示用户所属组id -G 显示用户所属附加组id (35)lsof 可以查看进程打开的文件,端口等信息

格式 说明 -g 列出GID号 -p 列出指定进程号所打开的文件 -u 列出UID号进程详情 -i:22 查看指定端口的进程占用情况 实例:lsof /etc/.pwd.lock 查看当前哪个进程在占用该文件

(36)stat 显示文件的状态信息

格式 说明 -t 以简洁方式输出 -L 支持符合链接 -c 使用指定格式输出 -f 显示文件系统状态而非文件状态 针对-c参数 说明 %a 以8进制显示访问权限,如644 %A 以人类可读方式显示访问权限,如-rw-r--r-- %g 显示其组id %G 显示其组名 %u 显示其userid %U 显示其username 更多详情请stat --help

(37)history 显示历史命令,在命令行中,可以使用符号!2执行第二条历史命令

历史命令被保持在内存中,当退出或登录shell时,会被保持或读取。在内存中,最多保存1000条历史命令,这个数量是由环境变量HISTSIZE控制。

格式 说明 -c 清空当前的历史命令 n 打印最近的n条历史命令 (38)cat 显示文件的内容

格式 说明 -A 显示所有字符 -n 前面加上行号 -b 与上类似,但空白行不编号 (39)date (选项)(参数) 显示或设置系统时间或日期

-d:显示字符串所指的日期和时间 -s:根据字符串所指设置系统日期和时间 参数:+时间日期格式 %F:年-月-日 %T:时:分:秒 %w:一个星期的第几天 %A:星期的全称 %a:星期的简称 %d:一个月的第几天 %j:一年的第几天 %W:一年的第几个星期

实例1:date -d "1day" +%F 显示一天后的时间 date -d "-1day" +%F 显示一天前的时间 year month day hour min sec 年月日时分秒 实例2:date -s "1hour" 修改系统时间,往后延1小时 常用的时间服务器有:pool.ntp.org ntpl.aliyun.com 系统自动校时:ntpdate pool.ntp.org 如果遇到the ntp socket is in use 需要把ntpd服务先停掉。service ntpd stop 实例3:设置全部时间 date -s "2012-05-23 01:01:01" //这样可以设置全部时间 hwclock -s 将系统时间同步到硬件时间

查看硬件时间hwclock --show 将硬件时钟调整为与系统时钟一致 hwclock --systohc --localtime (40)service 控制系统服务的实用工具,可以启动、停止、重启、关闭系统服务。系统服务存放在/etc/init.d下

--status--all:显示所有服务的状态 (41)which 查找给定命令的绝对路径

(42)last 显示用户的最近登录信息

格式 说明 -n 3 显示最近3条登录信息 -d 将IP地址转换成主机名称 (43)lastlog 显示所有用户的最近一次登录信息

(44)shutdown (选项)(参数) 系统关机命令

格式 说明 -h 关机 -r 重启 -c 中断关机命令 -k 送出消息给所有用户,但不会实际关机 实例1:shutdown -h now 立即关机 实例2:shutdown -h +5 "system will shutdown after 5 minutes" 系统5分钟后关机并广播 (45)halt 关闭正在运行的Linux系统

格式 说明 -p 关闭之后断电 -d 关闭系统但不留下记录 (46)poweroff 关闭系统并断电

(47)whoami 查看当前用户

(48)chmod 更改文件或目录的权限

格式 说明 -R 递归处理 -v 显示指令的执行过程 u:user所有者

g:group所有者属的组

o:other其他人

a:all所有人

实例1:chmod u+x,g+w f01  //为文件f01设置自己可以执行,组员可以写入的权限 chmod u=rwx,g=rw,o=r f01 chmod 764 f01 chmod a+x f01  //对文件f01的u,g,o都设置可执行属性 (49)chown 更改文件或目录的所有者和所属群组

格式 说明 -R 递归处理 -v 显示指令的执行过程 参数:用户:组:指定所有者和用户组,当省略“:组”,仅改变文件所有者 (50)ln 创建链接文件,默认创建硬链接,如果要创建软链接需-s

格式 说明 -s 创建软连接 -v 显示指令的执行过程 实例:

ln -s /root/pycharm-2018.1/bin/pycharm.sh /usr/bin/pycharm /root/pycharm-2018.1/bin/pycharm.sh是pycharm.sh文件所在位置 /usr/bin/pycharm相当于创建一个快捷方式名称为pycharm (51)less 用于查看文件内容,功能比cat强大,支持翻页和查找功能。pageup向上翻页,pagedown向下翻页,q退出。/root查找特定字符串,n是下一个,N是上一个。如果文件较大,cat命令可能显示不全,less命令不会出现这种情况。

(52)seq 用于生成从某个数到另外一个数之间的所有整数

格式 说明 -w 列前添加0,使宽度相同 -s 使用指定字符串分隔数字,默认使用\n (53)sort 将文件进行排序,并将排序结果标准输出

格式 说明 -b 忽略每行前面的空格 -o filename 指定输出文件 -r 逆序 -n 按数值的大小排序 -f 将小写字母视为大写字母 -u 忽略相同的行 -t 列前添加0,使宽度相同 (54)uniq:报告或删除文件中的重复行,一般与sort同时使用

(54)seq

seq [选项]... 尾数 seq [选项]... 首数 尾数 seq [选项]... 首数 增量 尾数 (55)userdel 删除给定用户

-r:递归删除

(56)netstat

用来打印Linux中网络系统的状态信息,可让你得知整个Linux系统的网络情况。

语法:netstat(选项)

选项 说明 -l 显示监控中的服务器的Socket -n 直接使用ip地址而不使用域名 -t 显示TCP传输协议的连线状况 -u 显示UDP传输协议的连线状况 -p 显示正在使用Socket的程序识别码和程序名称 -a 显示所有连线中的Socket -r 显示Routing Table (57)cut

用来显示行中的指定部分,删除文件中指定字段。 说明:该命令有两项功能,其一是用来显示文件的内容,它依次读取由参数file所指 明的文件,将它们的内容输出到标准输出上;其二是连接两个或多个文件,如cut fl f2 > f3将把文件fl和几的内容合并起来,然后通过输出重定向符“>”的作用,将它们放入文件f3中。

语法:cut(选项)(参数)

选项 说明 -c 仅显示行中指定范围的字符 -d 指定字段的分隔符,默认的字段分隔符为“TAB” -f 显示指定字段的内容 --help 帮助信息 指定字段的字符或者字节范围 N-:从第N个字节、字符、字段到结尾; N-M:从第N个字节、字符、字段到第M个(包括M在内)字节、字符、字段; -M:从第1个字节、字符、字段到第M个(包括M在内)字节、字符、字段。 -b 表示字节; -c 表示字符; -f 表示定义字段 实例1:打印第1个到第3个字符 cut -c 1-3 test.txt 实例2:打印前2个字符 cut -c -2 test.txt 打印从第5个字符开始到结尾 cut -c 5- test.txt (58)rename

用字符串替换的方式批量改变文件名

语法:rename(参数)

参数:

原字符串:将文件名需要替换的字符串;

目标字符串:将文件名中含有的原字符替换成目标字符串;

文件:指定要改变文件名的文件列表。

实例:

将main1.c重命名为main.c rename main1.c main.c main1.c

rename支持通配符

? 可替代单个字符

星号 可替代多个字符

[charset] 可替代charset集中的任意单个字符

rename支持正则表达式

字母的替换 rename "s/AA/aa/" * //把文件名中的AA替换成aa 修改文件的后缀 rename "s//.html//.php/" * //把.html 后缀的改成 .php后缀 批量添加文件后缀 rename "s/$//.txt/" * //把所有的文件名都以txt结尾 批量删除文件名 rename "s//.txt//" * //把所有以.txt结尾的文件名的.txt删掉 (59)pstree

以树状图的方式展现进程之间的派生关系,显示效果比较直观

语法:pstree <选项>

选项 说明 -a 显示每个程序的完整指令,包含路径,参数或是常驻服务的标示 -p 显示当前所有进程的进程号和进程id 最后可跟进程id,只显示该进程的子进程

实例1:只显示单独某个进程的父子进程信息

pstree -s [PID]

pstree [PID] #centos6是这个命令

实例2:只显示某个用户所有的进程树信息

pstree username

实例3:高亮某个进程的进程树信息

pstree -H [PID]

实例4:使pstree输出结果带上命令行的参数

pstree -a

(60)du

也是查看使用空间的,但是与df命令不同的是Linux du命令是对文件和目录磁盘使用的空间的查看,还是和df命令有一些区别的

语法:du [选项][文件]

选项 说明 -a 显示目录中个别文件的大小 -h 以K,M,G为单位,提高信息的可读性 --max-depth=1 显示第一级目录的大小 --exclude=<目录或文件> 略过指定的目录或文件 --max-depth=1 显示第一级目录的大小 查看指定目录的所占空间:du scf

(61)modprobe

modprobe 智能添加或删除内核模块包含其依赖,为了方便起见,_ and - in module names (automatic underscore conversion is performed)没有差别。modprobe检查模块目录/lib/modules/uname -r for all the modules and other files, except for the optional configuration files in the /etc/modprobe.d目录。modprobe will also use module options specified on the kernel command line in the form of <module>.<option> and blacklists in the form of modprobe.blacklist=<module>.

注意:2.4系列Linux内核(不支持该工具)

如果在模块名后添加参数,这个参数会传递给内核(除了配置文件当中列出的选项) 选项 说明 -a 载入全部的模块 -d 使用排错模式 -l 显示可用的模块 -v 执行时显示详细的信息 -V 显示版本信息 -t 指定模块类型 -c 显示所有模块的设置信息 -b 在模块配置文件中应用黑名单命令针对模块名 (62)scp

1、从本地复制到远程

scp local_file remote_username@remote_ip:remote_file 2、从远程复制到本地

scp remote_username@remote_ip:remote_file local_file (62)sdiff

检查文件与文件之间的不同

选项 说明 --output=FILE 结果输出到文件 -d 使用排错模式 -l 显示可用的模块 -v 执行时显示详细的信息 (七)用户分类

root用户

普通用户

1.添加新用户:useradd oldboy

2.设置密码: passwd oldboy

3.切换用户: su - oldboy

4.退出当前用户:ctrl + d

(八)关闭selinux

查看selinux运行状态:getenforce

enforcing:正在运行

permissive:临时关闭

disabled:彻底关闭

如果selinux正在运行,临时关闭命令:setenforce Permissive

永久关闭selinux:修改/etc/selinux/config,将selinux设成disabled,重启服务器之后生效。

(九)关闭iptables防火墙

centos6关闭防火墙

当服务器仅在内网使用时,可关闭

查询iptables状态:/etc/init.d/iptables status

临时关闭:/etc/init.d/iptables stop

永久关闭:chkconfig iptables off 让防火墙不自启动

centos7关闭防火墙

systemctl stop firewalld.service 关闭 systemctl disable firewalld.service 禁止启动

(十)关于中文乱码如何解决的问题

远程连接工具的字符集与服务器的字符集不一致导致。

查看当前系统字符集:echo $LANG

临时修改服务器字符集:export LANG=en_US.UTF-8

centos6永久修改服务器字符集:修改/etc/sysconfig/i18n,再用source编译该文件即可。

centos7中修改/etc/locale.conf文件,再source编译即可。

(十一)Linux目录结构

一切从根开始,一切皆文件

磁盘/分区/设备在没有挂载的情况下,是无法使用的,挂载相当于给设备开了一个入口。

mount /dev/cdrom /mnt

挂载点 目录 /bin:二进制命令文件的存放目录

/dev:设备、光盘、硬盘的挂载点

/etc:系统的配置文件

/home:普通用户的家目录

/lib:库文件

/lib64:64位库文件

/lost+found:磁盘或文件系统损坏,断电的临时文件位置

/mnt:临时挂载点

/opt:第三方软件安装位置

/proc:内存中的信息

/root:root的家目录

/tmp:临时目录

/sbin:超级二进制文件,仅root用户可用

/usr:存放用户的程序

/var:经常变化的文件,系统日志

/etc/resolv.conf:DNS配置文件,优先级低于/etc/sysconfig/network-scripts/ifcfg-eth0

/etc/sysconfig/network:主机名配置文件

临时修改主机名:hostname oldboy02

永久修改:修改配置文件,重启生效

/etc/hosts:主机名与IP地址解析关系文件

/etc/fstab:开机自动挂载文件

第一列:设备名称

第二列:设备挂载点

/etc/rc.local:开机自启动程序,想要让一个程序自启动,加入此处即可。

/etc/inittab:开机运行级别配置文件

如果一个分区变只读了,以下可变读写

It is not recommended to remount a filesystem as read-write before a filesystem check (fsck/e2fsck) has been performed; often a reboot may be required.

Remounting as read-write may work, however, if the filesystem remounts as read-only again, a filesystem check and reboot of the system is required. Refer to How can I do fsck in rescue mode in Red Hat Enterprise Linux?.

mount -o remount,rw <filesystem_path> 0 关机状态,don't set in this mode 1 单用户模式 2 多用户模式 3 完全的多用户模式,命令模式 4 未使用 5 X11,桌面模式 6 重启状态,don't set in this mode 查看当前运行级别:runlevel

临时切换运行级别:init 3

永久切换运行级别:修改配置文件,重启生效

/etc/init.d:服务管理目录,管理开机自启动的程序

/etc/profile:系统环境变量和别名

/etc/bashrc:别名文件

~:当前用户的家目录

/usr/local:编译安装软件的默认目录

/var/log/messages:系统默认日志信息

/var/log/secure:系统用户的登录信息

/proc/meminfo:内存信息

/proc/cpuinfo:CPU信息

/proc/loadavg:系统负载信息

/proc/mounts:显示系统挂载信息

(十二)网卡配置

ifcfg配置文件的帮助信息如下

/usr/share/doc/initscripts-*/sysconfig.txt 配置文件:/etc/sysconfig/network-scripts/ifcfg-eth0

其中BooTPROTO=None:网卡获取IP是自动分配

USERCTL=no:不允许普通用户管理网卡

HWADDR= 指定网卡的mac地址

DNS:域名解析服务

DNS1:114.114.114.114

DNS2:114.114.115.115

阿里DNS服务器:223.5.5.5(主)

223.6.6.6(备)

添加ipv6地址:

IPV6INIT=yes IPV6ADDR=2400:a480:f:413:116:255:249:39 IPV6_DEFAULTGW=2400:a480:f:413::1

配置文件修改之后想要生效都必须重启。

重启网卡

方法一:ifdown eth0 &&ifup eth0 重启单一网卡

方法二:/etc/init.d/network restart 重启所有网卡

(十三)Linux开机启动过程

1.BIOS自检

2.磁盘MBR引导

3.GRUB菜单选择要加载的内核

4.加载内核

5.运行init进程

6.运行初始化脚本,设置主机名和IP地址

7.根据开机级别,启动不同的程序

8.加载mingetty进程,出现登录框

(十四)文件属性

特别说明:文件名不是文件属性

1.inode

用来存放文件属性的空间,通过格式化文件系统而来,它在某一个分区是唯一的。 每创建一个文件就要消耗一个inode。inode中存放了数据block的指针,如果两个文件inode号相同,他们其实是一个文件,只是文件名不同而已,则互为硬链接。

df -i 可查看inode使用情况

2.block

实际存放数据的数据块,也是格式化创建文件系统而来。 一般一个block是4k,创建一个大文件会占用很多的block,如果一个文件很小则不足4k空间会被浪费。 每读取一个block就算一次磁盘I/O.

df -h 可查看block使用情况

3.文件类型

-:file文件

d:目录

l:软链接

4.用户和用户组

id 可查询用户id

用户的分类 说明 root 皇帝 UID=0 虚拟用户 傀儡 UID=1-499 普通用户 UID=500+ /etc/passwd 存放用户的信息

/etc/shadow 存放密码的信息

/etc/group 存放用户组的信息

nologin就是傀儡用户

5.Linux基础文件权限

r:读

w:写

x:可执行

-:nothing

rw-r--r--:以8进制表示是644,把每一位看成二进制位

从前往后是所有者的权限,所属群组的权限,其他人的权限

6.软链接与硬链接

软链接相当于快捷方式

创建软链接:ln -s oldboy.txt oldboy.txt-soft

硬链接相当于一个房间的门,一个房间可以有很多门,如果两个文件的inode相同,则互为硬链接。

创建硬链接:ln oldboy.txt oldboy.txt-hard

软链接与硬链接的区别:除了以上之外,目录是不能创建硬链接的,因为目录不是一个实际的房间,没房间哪来门,目录只能创建软链接。软链接虽然指向了源文件,如果源文件被删除了,软链接就变成了死链接。源文件被删除指的是硬链接数为0。只要还有一个硬链接在,文件总是能被访问的。

软链接可以对不存在的目录或文件进行创建。因为软链接有自己的inode号,所以也有自己的文件属性和权限。软链接可以交叉文件系统。

硬链接的inode号相同,仅文件名不同。不能交叉文件系统创建硬链接,不能对目录创建硬链接,只能对已存在的文件进行创建。

7.文件删除原理

删除文件所有的硬链接

文件的进程调用数为0

如果一个文件的硬链接数为0,但是依然被进程所占用,说明这个文件未被彻底删除。

通过 lsof|grep delete 可查看硬链接数为0的文件

进程都存放在/etc/init.d/下,restart即可,文件即被释放。

8.文件的三个时间状态

mtime modified time 修改时间

atime access time 访问时间

ctime change time 文件属性改变时间

可通过stat命令查看

(十五)通配符

{ } 匹配括号中任意的字符串{scripts,jiaoben}

[ ] 可用于生成序列,[0-9]0-9的序列;匹配括号中任意的单一字符[a,b,c]

等同于$() 小括号内命令的执行结果

  • 匹配任何长度字符

!取反

?匹配任意单个字符

\ 转义符

&& 前一个命令执行成功后再执行后一个命令

|| 前一个命令执行失败后再执行后一个命令

(十六)正则表达式

1.正则与通配符的区别

通配符用于查找文件名,大部分命令都支持

正则用于查找文件内容,只有少数命令支持,如awk、grep、sed

2.正则分类

基础正则:^ $ . * [] [^]

扩展正则:| { } () ? +

支持扩展正则的命令:egrep或grep -e、awk、sed -r

基础正则:

. 匹配任意一个字符,不含空行

\ 转义字符

\d 匹配数字

\w 匹配字母或数字或下划线

\s 匹配任意的空白符

*(星号) 前一个字符连续出现0次以上

.* 匹配所有字符,不含空行

[ ] [abc]找出包含a或b或c的行

^ 排除 [^abc]排除a或b或c,第二种匹配字符串的开头

扩展正则:

+(加号) 前一个字符连续出现1次以上

| 表或者

( ) 表反向引用或后向引用

u{n,m} 前一个字符连续出现至少n次,至多出现m次

{n,} 前一个字符连续出现至少n次

{,m} 前一个字符连续出现至多m次

? 前一个字符出现0次或1次

$ 以前一个字符结尾

(十七)Linux常用快捷键

Ctrl+a:光标移到行首

Ctrl+e:光标移到行尾

Ctrl+c:取消当前操作

Ctrl+d:登出

Ctrl+l:清屏

Ctrl+u:剪切光标到行首的内容

Ctrl+k:剪切光标到行尾的内容

Ctrl+y:粘贴

Ctrl+r:搜索历史命令

(十八)vim快捷键

有三种模式:一般模式、输入模式、命令模式 一般模式下可以移动光标,删除行,复制粘贴这些操作 输入模式下可以插入编辑

光标移到文件的第一行:gg

光标移到文件的最后一行:G

光标移到文件的第10行:10gg

光标移到行首:0

光标移到行尾:$

在当前行插入并编辑:i

在当前行的下一行插入并编辑:o

在当前行的末尾插入并编辑:A

撤销上一次操作:u

恢复上一次操作:Ctrl+r

删除到行尾:D

删除到最后一行:dG

删除当前字符:x

复制当前行:yy

剪切当前行:dd

粘贴:p

esc:退出编辑模式

:会进入命令模式

:wq:保存退出

:q:退出

:q!:强制退出不保存

:wq!:强制退出并保存

:set no 设置行号

:set list 显示所有字符

:set fileencoding

:13,16 copy16 从13到16行复制到第16行下面

替换   :s/vivian/sky/ 替换当前行第一个 vivian 为 sky   :s/vivian/sky/g 替换当前行所有 vivian 为 sky   :n,$s/vivian/sky/ 替换第 n 行开始到最后一行中每一行的第一个 vivian 为 sky   :n,$s/vivian/sky/g 替换第 n 行开始到最后一行中每一行所有 vivian 为 sky   n 为数字,若 n 为 .,表示从当前行开始到最后一行   :%s/vivian/sky/(等同于 :g/vivian/s//sky/) 替换每一行的第一个 vivian 为 sky   :%s/vivian/sky/g(等同于 :g/vivian/s//sky/g) 替换每一行中所有 vivian 为 sky   可以使用 # 作为分隔符,此时中间出现的 / 不会作为分隔符   :s#vivian/#sky/# 替换当前行第一个 vivian/ 为 sky/   :%s+/oradata/apras/+/user01/apras1+ (使用+ 来 替换 / ): /oradata/apras/替换成/user01/apras1/ (十九)文件权限知识

对文件而言:

r:可以读

w:可以修改,但需要r的配合,否则会清空文件

x:可以执行,但需要r的配合,否则无法执行

对目录而言:

r:可以查看目录,需要x的配合

w:可以创建文件,删除文件,重命名文件,需要x的配合

x:可以cd

当要删除一个文件的时候,首先看对所在的目录是否有wx的权限

对于文件而言644比较安全

对于目录而言755比较安全

Linux控制系统默认权限的是umask

文件支持的最大权限是666

目录支持的最大权限是777

对于目录,默认权限=777-umask

对于文件,默认权限=666-umask,但如果某一位是奇数,则这一位还要加1。

隐藏属性

lsattr命令用于显示文件的隐藏属性:

参数 说明 -a 将隐藏文件的属性显示出来 -d 如果连接的是目录,仅列出目录本身的属性而非目录内的文件名 -R 连同子目录的数据也一起列出来 chattr用于修改文件的隐藏属性

'+' 符号用来为文件和文件夹设置属性 '-' 符号用来移除或者取消属性 '=' 使它们成为文件有的唯一属性 属性 说明 a 只允许追加,其他操作都不允许 i 不允许更改、删除、重命名等操作 c 存储时会自动压缩,读取时再自动解压缩 d 不能使用dump命令备份文件 A 不允许更新文件的访问时间 参数 说明 -R 递归地修改文件夹和子文件夹的属性 -V 输出带有版本信息的冗余信息 (二十)关于/etc/shells

该文件包含了能够有效登陆shell的绝对路径。这个文件能别其他程序所引用。有的程序会查询这个文件来判断一个用户是否是一个普通用户。例如:如果一个shell不在这个文件里,使用这个shell的用户就不能登陆ftp服务器。

/etc/shells is a text file which contains the full pathnames of valid login shells. This file is consulted by chsh(1) and available to be queried by other programs.

Be aware that there are programs which consult this file to find out if a user is a normal user; for example, FTP daemons traditionally disallow access to users with shells not included in this file. (二十一)时区

centos6:

查看当前系统时区:

date -R #最后面是时区 查看时区所属地域:

cat /etc/sysconfig/clock 选择系统的时区: 方法一:

tzselect 方法二:

cp /usr/share/zoneinfo/Pacific/Fiji /etc/localtime centos7:

查看当前系统时区:

date -R #最后面是时区 查看时区所属地域,看看软链接到哪:

ll /etc/localtime 选择系统的时区: 方法一:

tzselect 方法二:

ln -sf /usr/share/zoneinfo/Pacific/Fiji /etc/localtime