2024年运维最新Linux必懂知识大总结(上)

/var/log/boot.log 守护进程启动和停止相关的日志消息

/var/log/wtmp 该日志文件永久记录每个用户登录、注销及系统的启动、停机的事件

find

====

查找磁盘上最大的文件的命令

find / -type f -size +10G

列出当前目录及子目录下所有文件和文件夹

在/home目录下查找以.txt结尾的文件名 find /home -name “*.txt”

同上,但忽略大小写 find /home -iname “*.txt”

当前目录及子目录下查找所有以.txt和.pdf结尾的文件 find . \( -name “*.txt” -o -name “*.pdf” \) 或 find . -name “*.txt” -o -name “*.pdf”

匹配文件路径或者文件 find /usr/ -path “*local*”

基于正则表达式匹配文件路径 find . -regex “.*\(\.txt\|\.pdf\)$”

同上,但忽略大小写 find . -iregex “.*\(\.txt\|\.pdf\)$”

找出/home下不是以.txt结尾的文件 find /home ! -name “*.txt”

根据文件类型进行搜索find . -type 类型参数

类型参数列表:

f 普通文件

l 符号连接

d 目录

c 字符设备

b 块设备

s 套接字

p Fifo

基于目录深度搜索

向下最大深度限制为3 find . -maxdepth 3 -type f

搜索出深度距离当前目录至少2个子目录的所有文件 find . -mindepth 2 -type f

根据文件时间戳进行搜索 find . -type f 时间戳

UNIX/Linux文件系统每个文件都有三种时间戳:

访问时间(-atime/天,-amin/分钟):用户最近一次访问时间。

修改时间(-mtime/天,-mmin/分钟):文件最后一次修改时间。

变化时间(-ctime/天,-cmin/分钟):文件数据元(例如权限等)最后一次修改时间。

搜索最近七天内被访问过的所有文件

find . -type f -atime -7 搜索恰好在七天前被访问过的所有文件

find . -type f -atime 7 搜索超过七天内被访问过的所有文件

find . -type f -atime +7 搜索访问时间超过10分钟的所有文件

find . -type f -amin +10 找出比file.log修改时间更长的所有文件

find . -type f -newer file.log 根据文件大小进行匹配

find . -type f -size 文件大小单元 文件大小单元:

b —— 块(512字节)

c —— 字节

w —— 字(2字节)

k —— 千字节

M —— 兆字节

G —— 吉字节

搜索大于10KB的文件find . -type f -size +10k

搜索小于10KB的文件find . -type f -size -10k

搜索等于10KB的文件find . -type f -size 10k

删除匹配文件

删除当前目录下所有.txt文件 find . -type f -name “*.txt” -delete

根据文件权限/所有权进行匹配

当前目录下搜索出权限为777的文件 find . -type f -perm 777

找出当前目录下权限不是644的php文件 find . -type f -name “*.php” ! -perm 644

找出当前目录用户tom拥有的所有文件 find . -type f -user tom

将当前目录下所有以“.txt”结尾的文件打印出来,再追问,除了“.txt”再加上“.abc”结尾的也打印出来。

find . -name “*.txt”

grep

====

在文件内查找字符串

grep “字符串” filename

文件权限

====

r:可读(4)

w:可写(2),对于目录来说表示可在目录中新建文件

x:可执行(1),对于目录来说为可进入到该目录中

-:表示无对应位上的权限

4代表读权限,2代表写权限,1代表执行权限

7=4+2+1,表示拥有可读可写可执行权限

5=4+1,表示拥有可读可执行权限,但是没有写权限

4 代表拥有可读权限

0 代表没有任何权限

chmod 修改文件属性

============

chmod 777 /home/berry

chmod u+x /home/berry

u 表示“用户(user)”,即文件或目录的所有者。

g 表示“同组(group)用户”,即与文件属主有相同组ID的所有用户。

o 表示“其他(others)用户”。

a 表示“所有(all)用户”。它是系统默认值。

chown 修改文件的属主与属组

================

chown guest:guest a.txt

chown -R guest /home/berry (把berry文件下的所有文件都改成guest这个组)

chgrp 修改文件的所属的用户组

=================

chgrp -R guest /var/tmp/f.txt

chgrp - R root /home/berry/file/a.txt

iostat(查看各个设备的IO状态,查看磁盘读写性能)

============================

直接输入iostat:

tps是每秒的IO请求数,这是IO消耗情况值得关注的数字。

Blk_read/s是指每秒读取的块数量,通过块的大小是512字节

Blk_read是指总共读取的块数量

iostat –x xvda 3 5 定时采样查看IO消耗情况

首先要关注的是CPU中的iowait%所占的百分比,当iowait占据主要的百分比时,就表示要关注IO方面的消耗状况了。

pidstat(查看某个线程的IO状态)

====================

pidstat –d –t –p [pid] 1 100

KB_rd/s 表示每秒读取的KB数

KB_wd/s 表示每秒写入的KB数

通过pidstat直接找到文件IO操作多的线程,之后结合jstack找到对应的Java代码。

cp/mv的区别

========

1、功能上的区别

mv:用户可以使用该命令为文件或目录重命名或将文件由一个目录移入另一个目录中。

cp: 该命令的功能是将给出的文件或目录拷贝到另一文件或目录中。

2、从inode角度来区分

mv:会将存储于indoe索引节点上的文件元信息也移动到新文件中。

cp : 只会复制文件数据,不会复制inode索引节点上的文件元信息。

cp 的时候是真正意义上的内容copy,对于 inode 节点却是不会变化的。

mv 的时候是把源文件直接删除了(inode 删除了),新的文件其实已经不是以前的文件了,只是名字一样而已。

网络

==

netstat(端口)

查看tcp连接数状态

netstat -n | awk ‘/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}’

统计8080端口上有多少个TCP连接,命令:

netstat –nat | grep 8080 | wc –l

TCP连接中有多少个连接状态是ESTABLISHED,命令:

netstat –nat | grep 8080 | grep ESTABLISHED| wc -l

TCP连接中有多少个连接状态是CLOSE_WAIT

netstat –nat | grep 8080 | grep CLOSE_WAIT| wc -l

TCP连接中有多少个连接状态是TIME_WAIT

netstat –nat | grep 8080 | grep TIME_WAIT| wc -l

使用awk来完成统计信息,命令如下

netstat –nat | grep 8080 | awk ‘{++S[$NF]} END {for (a in S) print a, S[a]}’

sar

sar –n FULL 1 2 执行后以1s为频率,总共输出两次网络IO的消耗情况。

输出信息包含三部分:网卡上成功的接包和发包的信息 网卡上失败的接包和发包信息 sockets上的统计信息(tcpsck、udpsck)

如需详细跟踪tcp/ip通信过程的信息,则可通过tcpdump来进行。

tcpdump

tcpdump [ -DenNqvX ] [ -c count ] [ -F file ] [ -i interface ] [ -r file ]

[ -s snaplen ] [ -w file ] [ expression ]

抓包选项:

-c:指定要抓取的包数量。注意,是最终要获取这么多个包。例如,指定"-c 10"将获取10个包,但可能已经处理了100个包,只不过只有10个包是满足条件的包。

-i interface:指定tcpdump需要监听的端口。若未指定该选项,将从系统接口列表中搜寻编号最小的已配置好的接口(不包括loopback端口,要抓取loopback接口使用tcpdump -i lo),

:一旦找到第一个符合条件的端口,搜寻马上结束。可以使用’any’关键字表示所有网络接口。

-n:对地址以数字方式显式,否则显式为主机名,也就是说-n选项不做主机名解析。

-nn:除了-n的作用外,还把端口显示为数值,否则显示端口服务名。

-N:不打印出host的域名部分。例如tcpdump将会打印’nic’而不是’nic.ddn.mil’。

-P:指定要抓取的包是流入还是流出的包。可以给定的值为"in"、“out"和"inout”,默认为"inout"。

-s len:设置tcpdump的数据包抓取长度为len,如果不设置默认将会是65535字节。对于要抓取的数据包较大时,长度设置不够可能会产生包截断,若出现包截断,

:输出行中会出现"[|proto]"的标志(proto实际会显示为协议名)。但是抓取len越长,包的处理时间越长,并且会减少tcpdump可缓存的数据包的数量,

:从而会导致数据包的丢失,所以在能抓取我们想要的包的前提下,抓取长度越小越好。

输出选项:

-e:输出的每行中都将包括数据链路层头部信息,例如源MAC和目标MAC。

-q:快速打印输出。即打印很少的协议相关信息,从而输出行都比较简短。

-X:输出包的头部数据,会以16进制和ASCII两种方式同时输出。

-XX:输出包的头部数据,会以16进制和ASCII两种方式同时输出,更详细。

-v:当分析和打印的时候,产生详细的输出。

-vv:产生比-v更详细的输出。

-vvv:产生比-vv更详细的输出。

其他功能性选项:

-D:列出可用于抓包的接口。将会列出接口的数值编号和接口名,它们都可以用于"-i"后。

-F:从文件中读取抓包的表达式。若使用该选项,则命令行中给定的其他表达式都将失效。

-w:将抓包数据输出到文件中而不是标准输出。可以同时配合"-G time"选项使得输出文件每time秒就自动切换到另一个文件。可通过"-r"选项载入这些文件以进行分析和打印。

-r:从给定的数据包文件中读取数据。使用"-"表示从标准输入中读取。

(1).默认启动

tcpdump

默认情况下,直接启动tcpdump将监视第一个网络接口(非lo口)上所有流通的数据包。这样抓取的结果会非常多,滚动非常快。

(2).监视指定网络接口的数据包

tcpdump -i eth1

如果不指定网卡,默认tcpdump只会监视第一个网络接口,如eth0。

(3).监视指定主机的数据包,例如所有进入或离开longshuai的数据包

tcpdump host longshuai

(4).打印helios<–>hot或helios<–>ace之间通信的数据包

tcpdump host helios and \( hot or ace \)

(5).打印ace与任何其他主机之间通信的IP数据包,但不包括与helios之间的数据包

tcpdump ip host ace and not helios

(6).截获主机hostname发送的所有数据

tcpdump src host hostname

(7).监视所有发送到主机hostname的数据包

tcpdump dst host hostname

(8).监视指定主机和端口的数据包

tcpdump tcp port 22 and host hostname

(9).对本机的udp 123端口进行监视(123为ntp的服务端口)

tcpdump udp port 123

(10).监视指定网络的数据包,如本机与192.168网段通信的数据包,"-c 10"表示只抓取10个包

tcpdump -c 10 net 192.168

(11).打印所有通过网关snup的ftp数据包(注意,表达式被单引号括起来了,这可以防止shell对其中的括号进行错误解析)

shell> tcpdump ‘gateway snup and (port ftp or ftp-data)’

(12).抓取ping包

[root@server2 ~]# tcpdump -c 5 -nn -i eth0 icmp

内存

==

vmstat、sar、top、pidstat等可以查看swap和物理内存的消耗情况。

vmstat和sar共同的弱点是不能分析进程所占用的内存量。

top可以查看进程所消耗的内存量,在top中看Java进程的内存包括了JVM已分配的内存加上JVM外的物理内存。

pidstat也可以查看进程所消耗的内存量。

pidstat –r –p [pid] [interval] [times]

进程

==

ps –ef/-aux

ps aux 和ps -ef

两者的输出结果差别不大,但展示风格不同。aux是BSD风格,-ef是System V风格。这是次要的区别,一个影响使用的区别是aux会截断command列,而-ef不会。当结合grep时这种区别会影响到结果。

ps -ef 显示出的结果:

1.UID       用户ID

2.PID        进程ID

3.PPID      父进程ID

4.C           CPU占用率

5.STIME     开始时间

6.TTY         开始此进程的TTY----终端设备

7.TIME       此进程运行的总时间

8.CMD       命令名

lsof 进程打开的文件、端口

lsof [options] filename

-a:列出打开文件存在的进程;

最后的话

最近很多小伙伴找我要Linux学习资料,于是我翻箱倒柜,整理了一些优质资源,涵盖视频、电子书、PPT等共享给大家!

资料预览

给大家整理的视频资料:

给大家整理的电子书资料:

如果本文对你有帮助,欢迎点赞、收藏、转发给朋友,让我有持续创作的动力!

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以点击这里获取!

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

ps -ef 显示出的结果:

1.UID       用户ID

2.PID        进程ID

3.PPID      父进程ID

4.C           CPU占用率

5.STIME     开始时间

6.TTY         开始此进程的TTY----终端设备

7.TIME       此进程运行的总时间

8.CMD       命令名

lsof 进程打开的文件、端口

lsof [options] filename

-a:列出打开文件存在的进程;

最后的话

最近很多小伙伴找我要Linux学习资料,于是我翻箱倒柜,整理了一些优质资源,涵盖视频、电子书、PPT等共享给大家!

资料预览

给大家整理的视频资料:

[外链图片转存中…(img-9Y0J7qj8-1714535339781)]

给大家整理的电子书资料:

[外链图片转存中…(img-0inhNgwI-1714535339781)]

如果本文对你有帮助,欢迎点赞、收藏、转发给朋友,让我有持续创作的动力!

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以点击这里获取!

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 13
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值