find命令

借助-exec选项与其他命令结合使用

find . -type f -user root -exec chown tom {} \;  #找出当前目录下所有root的文件,并把所有权更改为用户tom
find $HOME/. -name "*.txt" -ok rm {} \;    # -ok 和 -exec 行为一样,不过它会给出提示,是否执行相应的操作。
xargs 结合 find 使用
ls |xargs mv -t -i {} {}.bak
-t 选项可以打印出 `xargs` 执行的命令
-i 指定一个替换字符串{},这个字符串在 xargs 扩展时会被替换掉,当 -i 与 xargs 结合使用,每一个参数命令都会被执行一次:
-p 选项会在执行每一个命令时弹出确认,当你需要非常准确的确认每一次操作时可以使用 -p 参数

系统运维监控类命令

1、查询当前整个系统每个进程的线程数

for pid in $(ps -ef|grep -v grep|grep "java"|awk '{print $2}'); do echo ${pid} > /tmp/a.txt ;cat /proc/${pid}/status|grep Threads> /tmp/b.txt;paste /tmp/a.txt /tmp/b.txt;done|sort -k3 -rn

2、检测系统中的僵尸进程并将其kill

ps -e -o stat,ppid,pid,cmd|egrep '^[Zz]'|awk '{print $2}'|xargs kill -9

3、查看当前占用CPU或内存最多的几个进程

ps aux|head -1;ps aux|sort -rn -k3|head -10  #CPU占用前10
ps aux|head -1;ps aux|sort -rn -k3|head -10  #内存占用前10

网络故障排查类命令

1、wget命令

断点续传 -c
wget -c http://www.jsdig.com/testfile.zip
-–limit-rate=RATE 限定下载输率
wget --limit-rate=300k http://www.jsdig.com/testfile.zip

2、curl命令

-I/--head            只显示请求头信息
-o/--output            把输出写到该文件中
-O/--remote-name    把输出写到该文件中,保留远程文件的文件名
-C/--continue-at    断点续传
--limit-rate            设置传输速度 

3、动态路由追踪及网络故障排查工具mtr命令

mtr www.hqq365.com

  • Host:网络节点的主机名或IP地址。
  • [Loss%]:该节点的丢包率。
  • Snt:发送的数据包数量。
  • Last:最后一个数据包的往返时间。
  • Avg:所有数据包的平均往返时间。
  • Best:所有数据包的最低往返时间。
  • Wrst:所有数据包的最高往返时间。
  • StDev:往返时间的标准偏差。

进程管理和监控

1、ps命令

ps -ef |head -n 1;ps -ef |grep httpd
UID          PID    PPID  C STIME TTY          TIME CMD
PID是进程的标识号,PPID表示父进程,STIME表 示进程的启动时间 TIME表后进程启动后累计使用的
CPU总时间 CMD表示正在执行的命令。

ps -auxf|head -n 1;ps -auxf |grep httpd
USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
vsz 表币进程虚拟内仔大小,RSS表后进程的实际内仔(驻留集)大小(单位;在页):
STAT表示进程的状态,进程的状态有 R表后正在运行中的边程, S表示休眠状态的进程,用Z表示僵死进程,
用<表示优先级高的进程,用N表示优先级较低的进程,用s友示父进程,用+表示位于后台的进程: 
START表示启动进程的时间。

2、用top监控系统进程

PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
优先级CPR)为23,占用的虚拟内布总量( VIRT)为1236M,未被换出的物理内存(RES)为360M,
共享内再(SHR)为2384KB。从上次更新到现在java占用CPU时间(%CPU) 为6%,
占用物理内布(%MEM))14.4%,从进程启动到现在java占用CPU总时间(TIME+) 为1382:24. 14,单位是(1/100) s

3、lsof监控系统进程与程序

lsof命令功能强大, 这且介绍-c、 -g、 -p和-i主 4个最常用的参数。 更详细的介绍请 参看man lsof

1) lsof filename: 显示使用filename文件的迸程 。

lsof /var/log/messages

2)lsof -c nfs: 显示nfs 进程现在打开的文件

lsof -c nfs
COMMAND   PID USER   FD      TYPE             DEVICE SIZE/OFF     NODE NAME
FD列表示文件描述符, TYPE列显示文件的类型, 
SIZE列显示文件的大小, NODE列显示本地文件的node码, 
NAME列显示文件的全路径或挂载点

3)列出指定进程号所打开的文件:

lsof -p $pid

4)lsof -i 监听指定的协议、 端口 、主机等信息, 显示符合条件的进程信息

lsof -i:9981 -P -t -sTCP:LISTEN #获取端口对应的进程ID=>pid

4、利用 pgrep 查询进程 ID

-o:仅显示找到的最小(起始)进程号;
-n:仅显示找到的最大(结束)进程号; 
-l:显示进程名称;
-P:指定父进程号;
-g:指定进程组;
-f: 可以匹配command 中的关键字,即为字符串匹配 
-u:指定进程的有效用户ID。

pgrep -lo httpd #查看httpd 进程的起始ID
pgrep -f sshd #查看sshd 进程对应的所有ID,

5、关闭进程

kill $PID
killall 进程名称 killall httpd
pkill 进程名称 pkill -u user httpd #用户A的进程杀掉

系统性能调优

1、CPU性能调优

1)vmstat 显示虚拟内存状态(“Viryual Memor Statics”),但是它可以报告关于进程、内存、I/O等系统整体运行状态。

vmstat 3 5
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 0  0    320  42188 167332 1534368    0    0     4     7    1    0  0  0 99  0  0
r: 运行队列中进程数量,这个值也可以判断是否需要增加CPU。(长期大于1)
b: 等待IO的进程数量
swpd: 使用虚拟内存大小,如果swpd的值不为0,但是SI,SO的值长期为0,这种情况不会影响系统性能。
free: 空闲物理内存大小。
buff: 用作缓冲的内存大小。
cache: 用作缓存的内存大小,如果cache的值大的时候,说明cache处的文件数多,如果频繁访问到的文件都能被cache处,那么磁盘的读IO bi会非常小。
si: 每秒从交换区写到内存的大小,由磁盘调入内存。
so: 每秒写入交换区的内存大小,由内存调入磁盘。
bi: 每秒读取的块数
bo: 每秒写入的块数
in: 每秒中断数,包括时钟中断。
us: 用户进程执行时间百分比(user time)
us的值比较高时,说明用户进程消耗的CPU时间多,但是如果长期超50%的使用,那么我们就该考虑优化程序算法或者进行加速。
sy: 内核系统进程执行时间百分比(system time)
sy的值高时,说明系统内核消耗的CPU资源多,这并不是良性表现,我们应该检查原因。
wa: IO等待时间百分比
wa的值高时,说明IO等待比较严重,这可能由于磁盘大量作随机访问造成,也有可能磁盘出现瓶颈(块操作)。
id: 空闲时间百分比
cs: 每秒上下文切换数。

2)uptime命令 查看Linux系统负载信息

[root@LinServ-1 ~]# uptime  15:31:30 up 127 days, 3:00, 1 user, load average: 0.00, 0.00, 0.00

15:31:30 # 系统当前时间 
up 127 days, 3:00 # 主机已运行时间,时间越大,说明你的机器越稳定。 
 1 user # 用户连接数,是总连接数而不是用户数 
load average: 0.00, 0.00, 0.00  # 系统平均负载,统计最近1,5,15分钟的系统平均负载

3)mpstat命令 显示各个可用CPU的状态

-P:指定CPU编号。
-   间隔时间:每次报告的间隔时间(秒);
-   次数:显示报告的次数。

例:mpstat -P ALL 2 3
Linux 2.6.18-164.el5 (server.sys.com)    01/04/2010
09:34:20 PM CPU   %user   %nice    %sys %iowait    %irq   %soft %steal   %idle    intr/s

CPU:处理器 ID,多处理器时, 会显不每个处理器 ID 号。 
%usr: 显示了用户进程消扭的 CPU 时间百分比。
%nice: 显示了运行正常进程所消屁的 CPU 时间百分比。
%sys: 显示了系统进程消耗的 CPU时间 n分比。
%iowait: 显示了 l/0 等待所 ,1-0口的 CPU时间百分比。
%irq: 也示了使中断时间占用的 CPUIH 问百分比。
%soft: 显示了软中断时间占用的CPU 时'间百分比。
%steal: 显示了在内存相对紧张的环境下page in强制对不同的页面进行的steal操作。
%guest: 显示了运行虚拟处理器时 CPU 花费时间的百分比。
%gnice: 显示f运行带有nice优先级的虚拟CPU (宿主机角度)所花费的时间百分比。
%idle: 显示了 CPU 处在空闲状态的时间百分比。

2、内存性能调优工具

1)free命令

              total        used        free      shared  buff/cache   available
Mem:          3.6Gi       1.2Gi       620Mi       200Mi       1.7Gi       1.9Gi

total:内存总数;
used:已经使用的内存数;
free:空闲的内存数;
shared:当前已经废弃不用;
buffers Buffer:缓存内存数;
cached Page:缓存内存数。
所以若要查看内存是否充足, 只需要关注available,available 内存<20%时,表示系统内存资源紧缺,需要增加系统内存

2)smem命令 一款命令行下的内存使用情况报告工具

RSS (Resident Set Size): 使用top命令可以查询到,是最常用的内存指标,表示
进程占用的物理内存大小。但是,将各进程的RSS值相加, 通常会超出整个系统
的内存消耗, 这是因为RSS咛l 包含了各进程间共享的内存。
PSS ( Proportional Set Size):所有使用某共享库的程序均分该共享库占用的内存。
显然所有进程的PSS之和就是系统的内存使用量。它会更准确一些, 它将共享内
存的大小进行平均后, 再分摊到各进程上去。
USS (Unique Set Size):进程独自占用的内存, 它只计算了进程独自占用的内存大
小,不包含任何共享的部分。

smem -k -r uss # -r 降序 -s 升序 
smem -u -k #-u用户占用内存信息  -k参数用来显示内荐单位
smem -k -P prometheus #查看某个进程占用内存大小

3、磁盘性能调优工具

3.1 iotop命令

用来监视磁盘I/O使用状况的工具 。
iotop命令 是一个用来监视磁盘I/O使用状况的top类工具

-o:只显示有io操作的进程
-b:批量显示,无交互,主要用作记录到文件。 
-n NUM:显示NUM次,主要用于非交互式模式。
-d SEC:间隔SEC秒显示一次。
-p PID:监控的进程pid。 
-u USER:监控的进程用户。

iotop常用快捷键:

1.  左右箭头:改变排序方式,默认是按IO排序。
2.  r:改变排序顺序。
3.  o:只显示有IO输出的进程。
4.  p:进程/线程的显示方式的切换。
5.  a:显示累积使用量。
6.  q:退出。

3.2 iostat
被用于监视系统输入输出设备和CPU的使用情况。

需要安装
yum install sysstat
iostat
avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           7.58    0.00    6.82    0.13    0.00   85.46
Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util

标示    说明
Device    监测设备名称
rrqm/s    每秒需要读取需求的数量
wrqm/s    每秒需要写入需求的数量
r/s    每秒实际读取需求的数量
w/s    每秒实际写入需求的数量
rsec/s    每秒读取区段的数量
wsec/s    每秒写入区段的数量
rkB/s    每秒实际读取的大小,单位为KB
wkB/s    每秒实际写入的大小,单位为KB
avgrq-sz    需求的平均大小区段
avgqu-sz    需求的平均队列长度
await    等待I/O平均的时间(milliseconds)
svctm    I/O需求完成的平均时间
%util    被I/O需求消耗的CPU百分比

4、网络性能调优工具

4.1 ping命令

-c<完成次数>:设置完成要求回应的次数;
-i<间隔秒数>:指定收发信息的间隔时间;

4.2 traceroute命令

traceroute命令可以用来显示网络数据包传输到指定主机的路由信息

-i<网络界面>:使用指定的网络界面送出数据包;
-s<来源地址>:设置本地主机送出数据包的IP地址
-w<超时秒数>:设置等待远端主机回报的时间;

traceroute -m 10 www.baidu.com # 跳数设置
traceroute -n www.baidu.com    # 显示IP地址,不查主机名
traceroute -p 6888 www.baidu.com  # 探测包使用的基本UDP端口设置6888
traceroute -q 4 www.baidu.com  # 把探测包的个数设置为值4
traceroute -r www.baidu.com    # 绕过正常的路由表,直接发送到网络相连的主机
traceroute -w 3 www.baidu.com  # 把对外发探测包的等待响应时间设置为3秒

4.3 mtr命令

是一款网络诊断工具,结合了traceoute和ping两种常见工具的功能

                                            Packets               Pings

 Host                                       Loss%   Snt   Last   Avg  Best  Wrst StDev

 1. 192.168.222.2                           0.0%    13    2.7   0.5   0.2   2.7   0.6

-   Hostname:到目的服务器要经过的每个主机 IP 或名称。
-   Nr:经过节点的数量。
-   Loss%:对应节点的丢包率。
-   Sent:发送的数据包数量。
-   Recv:接收到响应的数量。
-   Best:最短的响应时间。
-   Avrg:平均响应时间。
-   Worst:最长的响应时间。
-   Last:最近一次的响应时间。
大多数情况,只需要关注最后一跳(目的地址)是否有丢包即可。

5、系统性能综合调优工具

如top、htop命令

与top相比,htop有以下优点:

可以横向或纵向滚动浏览进程列表,以便看到所有的进程和完整的命令行。
在启动上,比top 更快。
杀进程时不需要输入进程号。
htop 支持鼠标操作。
两者相比起来,top比较繁琐。
/ : 搜索字符 
h : 显示帮助 
l : 显示进程打开的文件: 如果安装了lsof,按此键可以显示进程所打开的文件
u : 显示所有用户,并可以选择某一特定用户的进程
U : 取消标记所有的进程 
s : 将调用strace追踪进程的系统调用
t : 显示树形结构
H:显示/隐藏用户线程 
I:倒转排序顺序
K:显示/隐藏内核线程 
M:按内存占用排序
P:按CPU排序 
T:按运行时间排序

内核参数调优

cat /etc/sysctl.conf

fs.inotify.max_user_instances=40960
fs.inotify.max_user_watches=2000000000
fs.file-max = 2000000000
fs.nr_open = 1048576

net.ipv4.ip_forward=1
net.bridge.bridge-nf-call-iptables=1
net.ipv4.neigh.default.gc_thresh1=4096
net.ipv4.neigh.default.gc_thresh2=6144
net.ipv4.neigh.default.gc_thresh3=8192
kernel.shmmax = 33285996543
kernel.shmmni = 4096
kernel.shmall = 8126464
kernel.sem = 1010 129280 1010 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 4194304
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
fs.aio-max-nr = 1048576
#fs.file-max = 6815744
vm.swappiness=0
systcl -p  #将/etc/sysctl.conf中修改的配置项加载到系统中,让配置生效。
sysctl -a : 查询所有的系统使用的内核配置值
sysctl -w xxx=xx : 临时修改系统配置。修改后,/proc/sys/下的对应配置的文件内值也会修改,但/etc/sysctl.conf中的值不会被修改,重启将失效

文件系统内核参数优化

1、/proc/sys/fs/file-max

/proc/ sys/ fs/fi le-max参数指定 了可以分配的文件句柄的最大数目。如果用户得到的错误消息声明由于打开文件数己经达到了最大值而不能打开更多文件 ,则可能需要增加 该值。

2、/proc/sys/vm/swappiness

Linux默认设置为60, 表示物理内存在使用到40% ( 100-60) 的时候, 就开始使用交换分区,此值在一些内存数据库服务器上需要设置得足够小。

ls -al /proc/$PID/exe #获取PID的对应的可报告路径
/var/spool/cron/       #用户级别下的cron计划任务
开源杀毒软件 clamav   #yum install clamav clamav-milter
1)netstat -nat|grep -i "80"|wc -1 #查看所有 80 端口的连接数
2)对连接的IP 按连接数量进行排序。
netstat -ntu |awk '{print $5}' |cut -d: -fl| sort|uniq -c| sort -n
3 )查看TCP 连攘状态。
netstat -n |awk '/^tcp/ {++S [$NF]} ; END {for (a in S) print a, S[a]}'
netstat -ant |awk '{print $NF}' |grep -v '[a-z]'|sort|uniq -c
4)查看80 端口连接数最多的20 个IP。
netstat -anlp|grep 80 | grep tcp|awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -nr|head -n20
5)封单个IP 的命令如下。
iptables -I INPUT -s 189.10.32.10/32 -j DROP

通过目录名查找容器名

docker ps -q | xargs docker inspect --format '{{.State.Pid}}, {{.Id}}, {{.Name}}, {{.GraphDriver.Data.WorkDir}}' | grep "7b758c851983e32f933b2b2e3b735536d1abb8a47830477960edc2d36a21dc2"

标签: none

已有 13 条评论

  1. 博主真是太厉害了!!!

  2. 想想你的文章写的特别好

  3. 看的我热血沸腾啊https://www.jiwenlaw.com/

  4. 怎么收藏这篇文章?

  5. 《村小的孩子》记录片高清在线免费观看:https://www.jgz518.com/xingkong/108049.html

  6. 你的文章让我感受到了快乐,每天都要来看一看。 http://www.55baobei.com/uFn8lUV2bC.html

  7. 你的文章内容非常专业,让人佩服。 http://www.55baobei.com/eakfEk6qT1.html

  8. 真棒!

  9. 你的文章让我感受到了不一样的风景,谢谢分享。 https://www.4006400989.com/qyvideo/69963.html

  10. zkhyhg.com

  11. 《非常嫌疑犯国语》动作片高清在线免费观看:https://www.jgz518.com/xingkong/69725.html

  12. 你的文章让我感受到了艺术的魅力,谢谢! http://www.55baobei.com/0D8QIPyg4a.html

  13. 你的才华横溢,让人敬佩。 http://www.55baobei.com/1mCBo98xtL.html

添加新评论