解决方案

最全Linux系统学习笔记--持续更新

seo靠我 2023-09-23 13:43:55

1、shell语法

命令 选项 参数

命令:整条shell命令的主体

选项:会影响会微调整个命令的行为

参数:命令作用的对象

1、自动补全

2、快捷键ctrl+C:终止前台运行的程序 ctrl+DSEO靠我:相当于exit ctrl+L:清屏 ctrl+A:光标移到命令行的前端 ctrl+E:光标移到命令行的后端 ctrl+K:删除光标后的SEO靠我所有字符 ctrl+U:删除光标前的所有字符

文件管理

1、文件目录结构 2、各个目录的作用各目录详解

https://www.cnblogs.com/zhuchenglin/p/868692SEO靠我4.html

3、命令详解

输出重定向

方式一:正确输出:> 等价于1> :将目标输出到文件中,会覆盖 >>等价于1>>: 将目标输出到文件中,追加到文件后

方式二:错误输出:2>将错误命令输出到文件中 ,有SEO靠我覆盖作用 ,2>>: 将错误命令输出到文件中 ,追加到文件后*

方式三:&> 不管是正确输出还是错误输出都重定向到一个文件中

实例:命令:ls /home/ /hfsadd 1> yes.tst 2> nSEO靠我o.txt 通过1>可将正确输出结果重定向到yes.txt中,并通过2>将错误输出结果重定向到no.txt中。

输入重定向

< 或者 0< 将文件中的内容作为CMD的输入

command file2 将 fSEO靠我ile1 作为 command 的输入,并将 command 的处理结果输出到 file2。

重定向符号<<,这个符号的作用是使用特定的分界符作为命令输入的结束标志,而不使用 Ctrl+D 键。[c.bSEO靠我iancheng.net]$ wc -l <<END > 123 > 789 > abc > xyz > END SEO靠我 4[c.biancheng.net]$ cat > test.txt <<END > 123 > 789 > abc > xySEO靠我z > END 表示通过cat看内容,即EOF后内容,随后将内容写入test.txt中

管道

操作符是:”|”,它只能处理经由前面一个指令传出的正确输出信息,对错误信息信息SEO靠我没有直接处理能力。然后,传递给下一个命令,作为标准的输入.

管理命令的输出说明:

tee命令:

tee指令会从标准输入设备读取数据,将其内容输出到标准输出设备,同时保存成文件

xargs命令用法

作用:用作替换SEO靠我工具,读取输入数据重新格式化后输出

1、多行输入单行输出

2、-n选项多行输出 例如:cat /h

ome/ss.txt | xargs -n3 表示以三个字母为一行输出

3、-d选项可以自定义一个定界符 表SEO靠我示以某个字符为界输出

cut命令:

正如其名,cut的工作就是“剪”,具体的说就是在文件中负责剪切数据用的。cut是以每一行为一个处理对象的,提取一列的字段,这种机制和sed是一样的。

剪切依据

cut命令主SEO靠我要是接受三个定位方法:

第一,字节(bytes),用选项-b

第二,字符(characters),用选项-c

第三,域(fields),用选项-f

语法格式cut [-bn] [file] 或 cut [-cSEO靠我] [file] 或 cut [-df] [file]

使用说明

cut 命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段写至标准输出。

如果不指定 File 参数,cut 命令将读取标准输入SEO靠我。必须指定 -b、-c 或 -f 标志之一。

主要参数

-b :以字节为单位进行分割。这些字节位置将忽略多字节字符边界,除非也指定了 -n 标志。

-c :以字符为单位进行分割。

-d :自定义分隔符,默认为SEO靠我制表符。

-f :与-d一起使用,指定显示哪个区域。

-n :取消分割多字节字符。仅和 -b 标志一起使用。如果字符的最后一个字节落在由 -b 标志的 List 参数指示的

范围之内,该字符将被写出;否则,SEO靠我该字符将被排除。

awk命令讲解

awk是行处理器: 相比较屏幕处理的优点,在处理庞大文件时不会出现内存溢出或是处理缓慢的问题,通常用来格式化文本信息

awk处理过程:

1、awk使用一行作为输入,并将这一行SEO靠我赋给内部变量$0,每一行也可称为一个记录,以换行符(RS)结束;

2、每行被间隔符:(默认为空格活制表符)分解成字段,每个字段储存在已编好的变量中,从$1开始

3、awk使用print函数打印字段,打印出SEO靠我来的字段以空格分隔,因为$1,$3之间有一个逗号,逗号比较特殊,它映射为另一个内部变量,称为输出字段分隔符OFS,OFS默认为空格

4、awk处理完一行后,将从文件中获取另一行,并将其储存在$0中,覆盖SEO靠我原来的内容,然后将新的字符串分隔成字段并进行处理,该过程将持续到所有行处理完成。awk命令形式: awk [-F|-f|-v] ‘BEGIN{} //{command1; command2} END{SEO靠我}’ file [-F|-f|-v] 大参数,-F指定分隔符,-f调用脚本,-v定义变量 var=value 引用代码块 BEGIN 初始化代码块,在对SEO靠我每一行进行处理之前,初始化代码,主要是引用全局变量,设置FS分隔符,注意:如果要手动设置分隔符,在分隔符开始要用BEGIN // 匹配代码块,可以是字符串或正则表达式 SEO靠我{} 命令代码块,包含一条或多条命令 ; 多条命令使用分号分隔 END 结尾代码块,在对每一行进行处理之后再执行的代码块,主要是进行最终计算或输出结尾摘要信息 SEO靠我 **特殊要点:** $0 表示整个当前行,整行全部内容,awk {print $0} copy.txt $1 每行第一个字段,类似的$2 $3 $4 $5 SEO靠我 NF 字段数量变量 cat /etc/passwd | awk -F: {print NF},即为一共有多少列全部打印出来 $NF 表示打印最后一列,如果要往前则是$(NFSEO靠我-1) NR 每行的记录号,多文件记录递增,比如打印1到5行,则是awk NR==1,NR==5{print $0} FNR 与NR类似,不过多文件记录不递增,每个文件SEO靠我都从1开始 \t 制表符 \n 换行符 FS BEGIN时定义分隔符,可以理解为F的作用 OFS 输出字段分隔符, 默认也是空格,可以改SEO靠我为制表符等,意思是将输出字段按指定分隔符衔接 ~ 匹配,与==相比不是精确比较 !~ 不匹配,不精确比较 == 等于,必须全部相等,精确比较 SEO靠我 != 不等于,精确比较 &&  逻辑与 || 逻辑或 + 匹配时表示1个或1个以上 /[0-9][0-9]+/ 两个或两个以上数字SEO靠我 /[0-9][0-9]*/ 一个或一个以上数字 FILENAME 文件名 ORS 输出的记录分隔符,默认为换行符,即处理结果也是一行一行输出到屏幕 SEO靠我 RS 输入的记录分隔符, 默认为换行符(即文本是按一行一行输入) -F[:#/] 定义三个分隔符 例如:awk $6>=20{ print $1},在输出SEO靠我时候先进行判断

sed命令

sed是一种几乎包括在所有unix平台的轻量级流编辑器,sed主要是用来将数据进行选取,替换,删除,新增的命令。

sed命令详解https://blog.csdn.net/jsuSEO靠我t_rick/article/details/78287737 **语法:sed [选项] ‘[动作]’ 文件名** 选项: -n:一般sed命令会把所SEO靠我有数据都输出到屏幕,如果加入此选择,则只会把经过sed命令处理的行输出到屏幕 -e:允许对输入数据应用多条sed命令编辑 -i: 用sed的修改结果直接修改读取数据的文SEO靠我件,而不是由屏幕输出动作: a\ :追加,在当前行后添加一行或多行 c \:行替换,用c后面的字符串替换原数据行 i \:插入,在当前行前插入一行或者多SEO靠我行 d:删除指定行 p:打印指定行 s:字符串替换,格式为 “行范围s/旧字符/新字符/g”

命令排序

1、&& || 具备逻辑判断

command1 && SEO靠我command2 只有在command1成功执行后才会执行command2

command1 || command2 在command1没有成功执行时执行command2

2、;(分号)不具备逻辑判断

paSEO靠我ste用法:

paste单词意思是粘贴。该命令主要用来将多个文件的内容合并,与cut命令完成的功能刚好相反。

粘贴两个不同来源的数据时,首先需将其分类,并确保两个文件行数相同。paste将按行将不同文件行SEO靠我信息放在一行。缺省情况下, paste连接时,用空格或tab键分隔新行中不同文本,除非指定-d选项,它将成为域分隔符。

paste格式为:

paste -d -s -file1 file2

选项含义如下:

-SEO靠我d 指定不同于空格或tab键的域分隔符。例如用@分隔域,使用- d @。

-s 将每个文件合并成行而不是按行粘贴。使用标准输入。例如ls -l |paste ,意即只在一列上显示输出。(这个参数的解释是SEO靠我网上找来的,但从后面的例子来看,应该是对输出的列进行设置。)

join命令用法: 功能说明:将两个文件中,指定栏位内容相同的行连接起来。

语法:join [-i][-a<1或2>][-e<字符串>][-o<SEO靠我格式>] [-t<字符>][-v<1或2>][-1<栏位>][-2<栏位>][--help] [--version][文件1][文件2] 补充说明:找出两个文件中,指定栏位内容相同的行,并加以合并,再SEO靠我输出到标准输出设备。 参 数 -a<1或2> 除了显示原来的输出内容之外,还显示指令文件中没有相同栏位的行。 -e<字符串> 若[文件1]与[文件2]中SEO靠我找不到指定的栏位,则在输出中填入选项中的字符串。 -i或--igore-case 比较栏位内容时,忽略大小写的差异。 -o<格式> 按照指定的格式来显示结果。 SEO靠我 -t<字符> 使用栏位的分隔字符。 -v<1或2> 跟-a相同,但是只显示文件中没有相同栏位的行。 -1<栏位> 连接[文件1]指定的栏位。 -SEO靠我2<栏位> 连接[文件2]指定的栏位。 --help 显示帮助。 --version 显示版本信息。

rpm相关命令

rpm -ivh 软件包的名字 #安装软件 rpm -SEO靠我ql 软件名称 #查看软件包的安装路径 rpm -qa 软件名称 #查看软件包名称 如果是rpm安装的话可以使用以下命令: rpm -qa | grepSEO靠我 软件名 查看软件相关的配置文件,可使用如下命令 rpm -qc 软件名,比如:rpm -qc rsyslog

yum相关命令:

yum clean all #清理yum缓SEO靠我存 yum makecache #缓存软件包信息 yum repolist #查询yum源信息 yum search 软件名 #查询软件 SEO靠我 yum provides 软件名 #查看软件属于哪个文件 yum list # yum list显示所有已经安装和可以安装的程序包 yum list 软件名 #可以查SEO靠我看相关的软件信息,是否安装 如果是yum安装的话可以使用 yum list installed | grep 软件名

日志管理

日志优先级

日志优先级划分为:7种日志级别代号SEO靠我0-7 0 debug 有调试信息的,日志信息最多 1 info 一般信息的日志,最常用 2 notice 最具有重要性的普通条件的信息 SEO靠我 3 warning 警告级别 4 err 错误级别,阻止某个功能或者模块不能正常工作的信息 5 crit 严重级别,阻止整个系统或者整个软件不能正常工作的信息 SEO靠我 6 alter 需要立刻修改的信息 7 emerg 内核崩溃等严重信息

常见的日志文件(系统、进程、应用程序)

tail -f /var/log/messages 动态查看日志文SEO靠我件的尾部,核心系统日志文件,记录linux操作系统和服务错误信息。

/var/log/secure 是查看记录安全相关的信息、系统登录、与网络连接的信息。

/var/log/dmesg 查看和系统启动的信SEO靠我息。

/var/log/cron 看下crond、at进程产生的日志。

/var/log/yum.log 查看yum日志

通过rpm -qc 加程序名字可以查看配置文件地址

rsyslog程序,维护配置文件

SEO靠我级:yum update rsyslog

配置文件: /etc/rsyslog.conf

规则:设备.级别 文件

日志轮转的配置文件有哪些?

/etc/logrotate.conf /etc/SEO靠我logrotate.d/*cd /etc/rsyslog.conf cd /etc/logrotate.d /var/log/ppp/connect-errors {mSEO靠我issingokcompressnotifemptydailyrotate 5create 0600 root rootprerotate#中间写命令,表示在日志轮转之前做的动作endscriptpoSEO靠我strotate#中间写命令,表示日志轮转之后要做的动作endscript } #create 创建 0600 权限 root 属主 root属组 #rSEO靠我otate 保留5份 #daily 每天 #compress 是否压缩 #missingok 丢失无所谓 #notifempty 空文件SEO靠我不轮转 写完配置文件用 logrotate /var/logrotate.d/检查配置文件是否写错

注意:etc/rsyslog.conf中的配置文件配置一些日志的存放地点,logrotSEO靠我ate.d中的配置文件说明日志的轮转策略,毕竟日志不会一直保存,占用系统资源

网络管理

目录:/etc/sysconfig/network-scripts TYPE=Ethernet //SEO靠我网络类型:Ethernet以太网 BOOTPROTO=none //引导协议:自动获取dhcp、static静态、none不指定 DEFROUTE=yes //启动默认SEO靠我路由 IPV4_FAILURE_FATAL=no //不启用IPV4错误检测功能 IPV6INIT=yes //启用IPV6协议 IPV6_AUTOCOSEO靠我NF=yes //自动配置IPV6地址 IPV6_DEFROUTE=yes //启用IPV6默认路由 IPV6_FAILURE_FATAL=no //不启用IPV6错误SEO靠我检测功能 NAME=eno16777736 // 网卡设备的别名 UUID=90528772-9967-46da-b401-f82b64b4acbc //网卡设备的UUSEO靠我ID唯一标识号 DEVICE=eno16777736 // 网卡的设备名称 ONBOOT=yes //开机自动激活网卡 DNS1=6.6.6.6 //DSEO靠我NS域名解析服务器的IP地址 IPADDR=192.168.1.199 //网卡的IP地址 PREFIX=24 //子网掩码 GATEWAY=192.1SEO靠我68.1.1 //默认网关IP地址 IPV6_PEERDNS=yes IPV6_PEERROUTES=yes IPADDR=192.168.2.2 #你SEO靠我想要设置的固定IP,理论上192.168.2.2-255之间都可以,请自行验证; NETMASK=255.255.255.0 #子网掩码,不需要修改; GATEWAY=SEO靠我192.168.2.1 #网关,这里是你在“2.配置虚拟机的NAT模式具体地址参数”中的 设置完以后需要重启网卡:systemctl restart nwtwork

主机名

hostnamSEO靠我e 可以查看当前服务器的主机名 hostname +名字 可以临时更改主机名字,重启后失效 hostnamectl set-hostname 可以永久更改主机名 SEO靠我 vim /etc/hostname 可以在此文件下直接更改 更改后可以通过reboot或者init 6 重启

查看ip

ip a 可以查看所有的ip信息 ip rSEO靠我oute可以查看网关 ip addr也可以查看ip信息 ping 命令可以查看能不能ping通 ,测试网络是否通畅。

ping命令

ping命令用于:确定网络和各外部主机的SEO靠我状态;跟踪和隔离硬件和软件问题;测试、评估和管理网络。如果主机正在运行并连在网上,它就对回送信号进行响应。每个回送信号请求包含一个网际协议(IP)和 ICMP 头,后面紧跟一个 tim 结构,以及来填SEO靠我写这个信息包的足够的字节。缺省情况是连续发送回送信号请求直到接收到中断信号(Ctrl-C)。

命令参数:-d 使用Socket的SO_DEBUG功能。 -f 极限检测。大量且快速地送网络SEO靠我封包给一台机器,看它的回应。 -n 只输出数值。 -q 不显示任何传送封包的信息,只显示最后的结果。 #静默输出 -r 忽略普通的Routing TabSEO靠我le,直接将数据包送到远端主机上。通常是查看本机的网络接口是否有问题。 -R 记录路由过程。 -v 详细显示指令的执行过程。 <p>-c 数目:在发送指SEO靠我定数目的包后停止。 # 指定发包数量 -i 秒数:设定间隔几秒送一个网络封包给一台机器,预设值是一秒送一次。 #指定发包间隔时间 -I 网络界面:使用指定的网络界面送出SEO靠我数据包。 -l 前置载入:设置在送出要求信息之前,先行发出的数据包。 -p 范本样式:设置填满数据包的范本样式。 -s 字节数:指定发送的数据字节数,预SEO靠我设值是56,加上8字节的ICMP头,一共是64ICMP数据字节。 -t 存活数值:设置存活数值TTL的大小。

traceroute命令

作用:通过traceroute我们可以知道信息从你的SEO靠我计算机到互联网另一端的主机是走的什么路径。当然每次数据包由某一同样的出发点(source)到达某一同样的目的地(destination)走的路径可能会不一样,但基本上来说大部分时候所走的路由是相同的。SEO靠我linux系统中,我们称之为traceroute,在MS Windows中为tracert。 traceroute通过发送小的数据包到目的设备直到其返回,来测量其需要多长时间。一条路径上的每个设备trSEO靠我aceroute要测3次。输出结果中包括每次测试的时间(ms)和设备的名称(如有的话)及其IP地址。

.命令参数:-d 使用Socket层级的排错功能。 -f 设置第一个检测数据包的存活SEO靠我数值TTL的大小。 -F 设置勿离断位。 -g 设置来源路由网关,最多可设置8个。 -i 使用指定的网络界面送出数据包。 -I 使用ICSEO靠我MP回应取代UDP资料信息。 -m 设置检测数据包的最大存活数值TTL的大小。 -n 直接使用IP地址而非主机名称。 -p 设置UDP传输协议的通信端口SEO靠我。 -r 忽略普通的Routing Table,直接将数据包送到远端主机上。 -s 设置本地主机送出数据包的IP地址。 -t 设置检测数据包的TOS数值SEO靠我。 -v 详细显示指令的执行过程。 -w 设置等待远端主机回报的时间。 -x 开启或关闭数据包的正确性检验。

route命令功能:route命令用于显示和SEO靠我操作IP路由表。要实现两个不同的子网之间的通信,需要一台连接两个网络的路由器,或者同时位于两个网络的网关来实现。在Linux系统中,设置路由通常是 为了解决以下问题:该Linux系统在一个局域网中,局SEO靠我域网中有一个网关,能够让机器访问Internet,那么就需要将这台机器的IP地址设置为 Linux机器的默认路由。要注意的是,直接在命令行下执行route命令来添加路由

1、destination:表示SEO靠我目的的网络或者目的的IP地址,Gateway:指定的网关,Genmask:掩码,比如:上面第三行显示,掩码是24位,目的网络是10.20.48.0,所以如10.20.48.12这类的地址就是走的这个网SEO靠我关,Flags:是一种标识,U:used表示被使用,G:表示Gateway,H:host指的是目的地址不是一个网络而是一个精确的ip,iface:是通过哪个网卡与外部进行通信。

2、default:表示SEO靠我当你访问一个ip时候,它在所以路由信息中都不匹配的时候就会走default,gateway:当显示0.0.0.0或者*号(不同系统显示不一样)时候表示不指定网关,Genmask:掩码显示0.0.0.0SEO靠我,表示不指定掩码,那就是所有ip都可以走,掩码主要看掩了多少位,主要确定不同网段地址

可以参考:https://www.cnblogs.com/peida/archive/2013/03/05/2943SEO靠我698.html

常见服务管理操作

systemctl list-units #列举出所有服务 systemctl start 服务名 #启动一个服务 systemctl SEO靠我restart 服务名 #重启一个服务 systemctl stop 服务名 #停止一个服务 systemctl enable 服务名 #设置为开机自启 SEO靠我 systemctl disalble 服务名 #关闭开机自启服务 systemctl reload 服务名 #重新加载服务 systemctl status 服务名 SEO靠我#查看当前服务状态

正则表达式与通配符

正则表达式用来在文件中匹配符合条件的字符串,正则是包含匹配,grep、awk、sed等命令可以支持正则表达式

通配符是用来匹配符合条件的文件名,通配符是完全匹配,lsSEO靠我、find、cp这些命令不支持正则表达式,所以只能使用shell自己的通配符来进行匹配。元字符 作用 * 前一个字符匹配0次或者任意多次 . 前一个字符匹配1次或者任意SEO靠我多次 ^ 匹配行首 $ 匹配行尾 [] 匹配中括号中指定的任意一个字符,只匹配一个字符 [^] 匹配除中括号以外的任意一个字符, SEO靠我 \ 转义符 \{n,m} 表示前面的字符至少出现n次

进程管理

ps命令

ps 命令是最常用的监控进程的命令,通过此命令可以查看系统中所有运行进程的详细信息。

ps 命令的基本格式如SEO靠我下:[root@localhost ~]# ps aux #查看系统中所有的进程,使用 BS 操作系统格式 [root@localhost ~]# ps -le SEO靠我 #查看系统中所有的进程,使用 Linux 标准命令格式 选项: a:显示所有包括所有终端的进程; u:显示进程的归属用户及内存的使用情况; SEO靠我 x:显示没有控制终端的进程; -a: 显示当前终端下执行的进程; -l:长格式显示更加详细的信息; -e:显示所有进程; SEO靠我-f: 显示所有进程的父进程 可以看到,ps 命令有些与众不同,它的部分选项不能加入"-",比如命令"ps aux",其中"aux"是选项,但是前面不能带“-”。[root@localSEO靠我host ~]# ps aux #查看系统中所有的进程 USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND SEO靠我 root 1 0.0 0.2 2872 1416 ? Ss Jun04 0:02 /sbin/init root 2 0.0 0.0 0 0 ? S Jun04 0:00SEO靠我 [kthreadd] root 3 0.0 0.0 0 0 ? S Jun04 0:00 [migration/0] root 4 0.0 0.0 0 0 ? S JSEO靠我un04 0:00 [ksoftirqd/0] …省略部分输出… USER 该进程是由哪个用户产生的。 PID 进程的 ID。 %CPUSEO靠我 该进程占用 CPU 资源的百分比,占用的百分比越高,进程越耗费资源。 %MEM 该进程占用物理内存的百分比,占用的百分比越高,进程越耗费资源。 VSZ 该进程占用虚拟SEO靠我内存的大小,单位为 KB。 RSS 该进程占用实际物理内存的大小,单位为 KB。 TTY 该进程是在哪个终端运行的。其中,tty1 ~ tty7 代表本地控制台终端(可SEO靠我以通过 Alt+F1 ~ F7 快捷键切换不同的终端),tty1~tty6 是本地的字符界面终端,tty7 是图形终端。pts/0 ~ 255 代表虚拟终端,一般是远程连接的终端,第一个远程连接占用 SEO靠我pts/0,第二个远程连接占用 pts/1,依次増长。 STAT 进程状态。常见的状态有以下几种: -D:不可被唤醒的睡眠状态,通常用于 I/O 情况。 SEO靠我 -R:该进程正在运行。 -S:该进程处于睡眠状态,可被唤醒。 -T:停止状态,可能是在后台暂停或进程处于除错状态。 -W:内存交互状态(从 2.6 内SEO靠我核开始无效)。 -X:死掉的进程(应该不会出现)。 -Z:僵尸进程。进程已经中止,但是部分程序还在内存当中。 -<:高优先级(以下状态在 BSD 格式中SEO靠我出现)。 -N:低优先级。 -L:被锁入内存。 -s:包含子进程。 -l:多线程(小写 L)。 -+:位于后台。 SEO靠我 START 该进程的启动时间。 TIME 该进程占用 CPU 的运算时间,注意不是系统时间。 COMMAND 产生此进程的命令名。

top命令

功能:top命令显SEO靠我示当前系统正在执行的进程的相关信息,包括进程ID,内存占用率,CPU使用率等,top命令实现对系统处理器进行实时监测。

top参数详解

第一行,任务队列信息,同 uptime 命令的执行结果系统时间:07SEO靠我:27:05 运行时间:up 1:57 min, 当前登录用户: 3 user 负载均衡(uptime) load average: 0.00, 0.0SEO靠我0, 0.00 average后面的三个数分别是1分钟、5分钟、15分钟的负载情况。 load average数据是每隔5秒钟检查一次活跃的进程数,然后按特定算法计算出SEO靠我的数值。如果这个数除以逻辑CPU的数量,结果高于5的时候就表明系统在超负荷运转了第二行,Tasks — 任务(进程) 总进程:150 total, 运行:1 running, 休眠:1SEO靠我49 sleeping, 停止: 0 stopped, 僵尸进程: 0 zombie第三行,cpu状态信息 0.0%us【user space】— 用户空间占用CPU的百分比。 SEO靠我 0.3%sy【sysctl】— 内核空间占用CPU的百分比。 0.0%ni【】— 改变过优先级的进程占用CPU的百分比 99.7%id【idolt】— 空闲CSEO靠我PU百分比 0.0%wa【wait】— IO等待占用CPU的百分比 0.0%hi【Hardware IRQ】— 硬中断占用CPU的百分比 0.0%si【SEO靠我Software Interrupts】— 软中断占用CPU的百分比第四行,内存状态 1003020k total, 234464k used, 777824k free, 24084SEO靠我k buffers【缓存的内存量】第五行,swap交换分区信息 2031612k total, 536k used, 2031076k free, 505864k cached【缓冲的SEO靠我交换区总量】备注: 可用内存=free + buffer + cached对于内存监控,在top里我们要时刻监控第五行swap交换分区的used,如果这个数值在不断的变化,说明内核在不SEO靠我断进行内存和swap的数据交换,这是真正的内存不够用了。第四行中使用中的内存总量(used)指的是现在系统内核控制的内存数, 第四行中空闲内存总量(free)是内核还未纳入其管控范围的SEO靠我数量。纳入内核管理的内存不见得都在使用中,还包括过去使用过的现在可以被重复利用的内存,内核并不把这些可被重新使用的内存交还到free中去,因此在linux上free内存会越来越少,但不用为此担心。第六SEO靠我行,空行第七行以下:各进程(任务)的状态监控 PID — 进程id USER — 进程所有者 PR — 进程优先级 NI — nice值SEO靠我。负值表示高优先级,正值表示低优先级 VIRT — 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES RES — 进程使用的、未被换出的物理内存大小,单位kSEO靠我b。RES=CODE+DATA SHR — 共享内存大小,单位kb S —进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程 SEO靠我 %CPU — 上次更新到现在的CPU时间占用百分比 %MEM — 进程使用的物理内存百分比 TIME+ — 进程使用的CPU时间总计,单位1/100秒 SEO靠我 COMMAND — 进程名称(命令名/命令行)内部指令: M:按内存的使用排序 P: 按cpu的使用排序 N: pid的大小排序 SEO靠我>: 向后 <: 向前 z: 彩色

free命令功能:free命令用于显示Linux系统内存的使用情况,包括物理内存(Mem)、交换内存(swap)和内核缓冲区内存(buSEO靠我ffer/cache)

Mem: 内存的使用信息 Swap: 交换空间的使用信息 第一行说明: total : 系统总的物理内存大小 usSEO靠我ed: 系统已使用物理内存大小 free: 系统还剩余的物理内存大小 shared: 被共享使用的物理内存大小 buff/cache: buffer/cSEO靠我ache使用的物理内存大小 available 从应用程序角度来看,还可以被 应用程序 使用的物理内存大小 计算方法 total = used + frSEO靠我ee + buff/cache buff/cache = buffers + cache available = free + buff/cache - 不可释放部分 SEO靠我 内存会拿一部分用于buff/cache

磁盘管理

lsblk命令

主分区:一块物理硬盘上可以被独立使用的一部分,一个硬盘最多可以有4个主分区。

扩展分区:为了突破一个物理硬盘只能有4个分区的限SEO靠我制,引入了扩展分区。扩展分区和主分区的地位相当,但是扩展分区本身不能被直接使用,然而可以被继续划分成多个逻辑分区。

逻辑分区:逻辑分区可以有任意多个,但是不能独立存在,多个连续的逻辑分区可做为一个扩展分SEO靠我区。一个硬盘只能有一个扩展分区。

总结:也就是说,在一个物理硬盘上主分区和扩展分区加在一起最多仍然只有4个。但是扩展分区可以继续被划分成逻辑分区,而对多数用户而言,其实主分区和逻辑分区在使用上是没什么区SEO靠我别的。这样就达到了一快硬盘几乎可以有无限个分区的目的iostat--监测磁盘使用情况 功能:iostat主要用于监控系统设备的IO负载情况,iostat首次运行时显示自系统启动开始的各SEO靠我项统计信息,之后运行iostat将显示自上次运行该命令以后的统计信息。用户可以通过指定统计的次数和时间来获得所需的统计信息。iostat -d -k 1 10 #查看TPS和吞吐量信息(磁盘读写速度单SEO靠我位为KB) iostat -d -m 2 #查看TPS和吞吐量信息(磁盘读写速度单位为MB) iostat -d -x -k 1 10 #查看设备使用率(%util)、SEO靠我响应时间(await) iostat -c 1 10 #查看cpu状态-c 参数 iostat还可以用来获取cpu部分状态值:-x 参数 iostat还有一个比较常用的SEO靠我选项-x,该选项将用于显示和io相关的扩展数据。 rrqm/s:每秒这个设备相关的读取请求有多少被Merge了(当系统调用需要读取数据的时候,VFS将请求发到各个FS,如果FS发现不同SEO靠我的读取请求读取的是相同Block的数据,FS会将这个请求合并Merge);wrqm/s:每秒这个设备相关的写入请求有多少被Merge了。 rsec/s:每秒读取的扇区数; SEO靠我 wsec/:每秒写入的扇区数。 rKB/s:The number of read requests that were issued to the device per seconSEO靠我d; wKB/s:The number of write requests that were issued to the device per second; avgSEO靠我rq-sz 平均请求扇区的大小 avgqu-sz 是平均请求队列的长度。毫无疑问,队列长度越短越好。 await: 每一个IO请求处理的平均时间,包括等待时间(单位是微SEO靠我秒毫秒)。这里可以理解为IO的响应时间,一般地系统IO响应时间应该低于5ms,如果大于10ms就比较大了。这个时间包括了队列时间和服务时间,也就是说,一般情况下,await大于svctm,它们的差值越SEO靠我小,则说明队列时间越短,反之差值越大,队列时间越长,说明系统出了问题。 svctm 表示平均每次设备I/O操作的服务时间(以毫秒为单位)。如果svctm的值与await很接近,表示几乎SEO靠我没有I/O等待,磁盘性能很好,如果await的值远高于svctm的值,则表示I/O队列等待太长,系统上运行的应用程序将变慢。 %util: 在统计时间内所有处理IO时间,除以总共统计时SEO靠我间。例如,如果统计间隔1秒,该设备有0.8秒在处理IO,而0.2秒闲置,那么该设备的%util = 0.8/1 = 80%,所以该参数暗示了设备的繁忙程度。一般地,如果该参数是100%表示设备已经接近SEO靠我满负荷运行了(当然如果是多磁盘,即使%util是100%,因为磁盘的并发能力,所以磁盘使用未必就到了瓶颈)。 %idle cpu空闲时间百分比,idle小于70% IO压力就较大了,一SEO靠我般读取速度有较多的wait.参数 -d 表示,显示设备(磁盘)使用状态;-k某些使用block为单位的列强制使用Kilobytes为单位;2表示,数据显示每隔2秒刷新一次。 tps:该SEO靠我设备每秒的传输次数(Indicate the number of transfers per second that were issued to the device.)。"一次传输"意思是"一次ISEO靠我/O请求"。多个逻辑请求可能会被合并为"一次I/O请求"。"一次传输"请求的大小是未知的。 kB_read/s:每秒从设备(drive expressed)读取的数据量;kB_wrtnSEO靠我/s:每秒向设备(drive expressed)写入的数据量;kB_read:读取的总数据量; kB_wrtn:写入的总数量数据量;这些单位都为Kilobytes。重点关注参数 SEO靠我 1、iowait% 表示CPU等待IO时间占整个CPU周期的百分比,如果iowait值超过50%,或者明显大于%system、%user以及%idle,表示IO可能存在问题。 SEO靠我 2、avgqu-sz 表示磁盘IO队列长度,即IO等待个数。 3、await 表示每次IO请求等待时间,包括等待时间和处理时间 4、svctm 表示每次IO请求处理SEO靠我的时间 5、%util 表示磁盘忙碌情况,一般该值超过80%表示该磁盘可能处于繁忙状态。 备注:如果%iowait的值过高,表示硬盘存在I/O瓶颈,%idle值高,表示SEO靠我CPU较空闲,如果%idle值高但系统响应慢时,有可能是CPU等待分配内存,此时应加大内存容量。%idle值如果持续低于10,那么系统的CPU处理能力相对较低,表明系统中最需要解决的资源是CPU。

正则SEO靠我表达式

元字符:

指那些在正则表达式中具有特殊意义的专用字符,如:. * ?

前导字符:

位于元字符前面的字符,如abc* 中的c,aooo.中的o

正则表达式中的常用元字符,具体功能如下:. 匹配除了换行符以SEO靠我外的任意单个字符 * 前导字符出现0次或者连续多次 .* 任意长度字符 ^ 行首以某字符开头 $ 行尾以某字符结尾 ^$SEO靠我 空行 [] 匹配括号里任意单个字符或者一组单个字符 [^] 匹配不包含括号任一单个字符或一组单子字符 ^[] 匹配以括号里任意单个字符或者一组单个字符SEO靠我开头 ^[^] 匹配不以括号里任意单个字符或一组单个字符开头\< 取单词的头 grep \<hel copy.txt \> 取单词的尾 grep rld\> copy.SEO靠我txt \< \> 精准匹配 grep \<world\> copy.txt \{n\} 匹配前导字符连续出现n次 grep go\{3\} copy.txt 前导字符SEO靠我o出现3次 gooooo中的o只被匹配3次 \{n,\} 匹配前导字符至少出现N次 grep go\{3,\} copy.txt gooooo中的o全部被匹配 \{n,SEO靠我m\} 匹配前导字符出现n次到m次之间 grep go\{1,3\} copy.txt gooooo中的o全部被匹配1到3次 \( \) 保存被匹配的字符 \d 匹配数SEO靠我字 \w 匹配字母数字下划线 \s 匹配空格,制表符,换页符

source命令

source命令也称为“点命令”,也就是一个点符号(.),是bash的内部命令。

功能:使ShSEO靠我ell读入指定的Shell程序文件并依次执行文件中的所有语句

source命令通常用于重新执行刚修改的初始化文件,使之立即生效,而不必注销并重新登录,我任务这是个主要作用,然配置文件在当前shell中立SEO靠我即生效

用法:

source filename 或 . filename

source命令(从 C Shell 而来)是bash shell的内置命令;点命令(.),就是个点符号(从Bourne ShellSEO靠我而来)是source的另一名称。

source filename 与 sh filename 及./filename执行脚本的区别在那里呢?

1.当shell脚本具有可执行权限时,用sh filenameSEO靠我与./filename执行脚本是没有区别得。./filename是因为当前目录没有在PATH中,所有"."是用来表示当前目录的。

2.sh filename 重新建立一个子shell,在子shell中执SEO靠我行脚本里面的语句,该子shell继承父shell的环境变量,但子shell新建的、改变的变量不会被带回父shell,除非使用export让其成为环境变量,且通过source执行脚本才会使export生SEO靠我效,(这里说的为啥需要source才可以,因为source是在本shell中执行,所以其子shell也可以继承父shell的变量,但是通过sh finename即使是export,但其会再生成一个shSEO靠我ell去执行,所以在本shell中的子shell无法继承执行filename中shell的环境变量,简单理解成本shell的子shell跟执行finename的shell的子shell非同一个shelSEO靠我l)

3.source filename:这个命令其实只是简单地读取脚本里面的语句依次在当前shell里面执行,没有建立新的子shell。那么脚本里面所有新建、改变变量的语句都会保存在当前shell里面SEO靠我

export

将局部变量申明为环境变量

用法如:export JAVA_HOME=/opt/jdk,通过export创建的环境变量在子shell中可以被引用,但是无法带回上级shell中

解决:比如脚本为SEO靠我run.sh,如果执行./run.sh是不生效的,要执行source ./run.sh,文件中export的环境变量才能生效。

cpu信息

关于计算机中CPU的计算,主要通过以下几个命令查看

物理CPU

物理SEO靠我CPU就是计算机上实际配置的CPU个数。在linux上可以打开cat /proc/cpuinfo 来查看,其中的physical id就是每个物理CPU的ID,你能找到几个physical id就代表SEO靠我你的计算机实际有几个CPU。在linux下可以通过指令 /proc/cpuinfo | grep ‘physical id’查看

cpu核数

核数就是指CPU上集中的处理数据的cpu核心个数,单核指cpuSEO靠我核心数一个,双核则指的是两个。通常每个CPU下的核数都是固定的,比如你的计算机有两个物理CPU,每个CPU是双核,那么计算机就是四核的。linux的cpu核心总数也可以在/proc/cpuinfo里面SEO靠我通过指令cat /proc/cpuinfo查看的到,其中的core id指的是每个物理CPU下的cpu核的id,能找到几个core id就代表你的计算机有几个核心。也可以使用指令cat /proc/cSEO靠我puinfo | grep “cpu cores”查看

逻辑CPU

操作系统可以使用逻辑CPU来模拟出真实CPU的效果。在之前没有多核处理器的时候,一个CPU只有一个核,而现在有了多核技术,其效果就好像把SEO靠我多个CPU集中在一个CPU上。当计算机没有开启超线程时,逻辑CPU的个数就是计算机的核数。而当超线程开启后,逻辑CPU的个数是核数的两倍。实际上逻辑CPU的数量就是平时称呼的几核几线程中的线程数量,在SEO靠我linux的cpuinfo中逻辑CPU数就是processor的数量。可以使用指令cat /proc/cpuinfo | grep “processor” 查看

知道上面这些,常说的几核几线程就好理解了SEO靠我。假设计算机有一个物理CPU,是双核的,支持超线程。那么这台计算机就是双核四线程的。

所以两路(两路指的是有两个物理CPU)四核超线程就有2x4x2=16个逻辑CPU。有人也把它称之为16核,实际上在lSEO靠我inux的/proc/cpuinfo中查看只有8核。

linux系统中的变量文件

1、每个用户都有自己的环境变量配置文件,~/.bash_profile ~/.bashrc,且以个人配置文件,优先加载变量SEO靠我,读取以个人的优先生效。

2、当你需要给所有用户使用这个变量的话,就要写入全局/etc/profile

谈谈shell编程中的那些括号们

**条件测试常用的语法如下** 语法1:test <SEO靠我测试表达式> 说明:这是利用test命令进行条件测试表达式的方法,test命令和“<测试表达式>”之间至少有一个空格语法2:[ <测试表达式> ] 说明:这是通过[](SEO靠我单中括号)进行条件测试表达式的方法,和test命令的用法相同,这是老男孩推荐的方法,[]边界和内容之间 至少有一个空格,并且可以使用-a(and),-eq等语法3:[[ <测试表达式>SEO靠我 ]] 说明:这是通过[[]](双中括号)进行条件测试表达式的方法,是比test,[]命令更新的语法格式,[[]]边界和内容之间至少有一个空格语法4:((<测试表达式>)) SEO靠我 说明:这是通过(())(双小括号)进行条件测试表达式的方法,一般用于if语句,(())两端不用空格,且此时等于等表达不可再用-eq等, 而采用数学符号> 、<等**用于计算的那些SEO靠我括号们** 语法:(()) 说明:用于整数常用的运算符,效率很高,可以在“(())”前加$符号,表示将表达式极端后赋值给某个数,例如:num=$((i==i+1))语法SEO靠我:() 说明:一个括号的时候不用于计算,主要用于命令的引用,常用于在其前加$(),例如:path=$(pwd),表示当前路径,并把值进行赋值语法:$[] 说明:用于整数SEO靠我计算

shell中字符串、数字、逻辑比较等

常用的字符串测试操作符说明-n “字符串”若字符串的长度不为0,则为真,即测试表达式成立,n可以理解为no zero-z “字符串”若字符串的长度为0则为真,即SEO靠我测试表达式成立,z可以理解为zero的缩写“串1” = “串2”若字符串1等于字符串2,则为真,即测试表达式成立,可使用"==“代替”="“串1” != “串2”若字符串1不等于字符串2,则为真,即测SEO靠我试表达式成立,可使用"!==“代替”!=" 在[]以及test中使用的比较符号在[[]]和(())中使用的比较符号-eq==或者=(equal)-ne!=(not equal)-gt>SEO靠我(greater than)-ge>=(greater equal)-lt< (less than)-le<=(less equal)
“SEO靠我”的新闻页面文章、图片、音频、视频等稿件均为自媒体人、第三方机构发布或转载。如稿件涉及版权等问题,请与 我们联系删除或处理,客服邮箱:html5sh@163.com,稿件内容仅为传递更多信息之目的,不代表本网观点,亦不代表本网站赞同 其观点或证实其内容的真实性。

网站备案号:浙ICP备17034767号-2