$ who -a | grep -Ev "tty|system boot|run-level"
$ ps aux | sort -k3,3nr | head -5
$ ps aux | sort -k4,4nr | head -5
$ watch -n 1 -d "#监控的命令"
$ fuser
$ find . -type f -mtime +7 | xargs rm -f
ps aux | grep ${PNAME} | grep -v grep | cut -c 9-15 | xargs kill -9
$JAVA_HOME/bin/jstat -gcutil PID 1000 100
$ $JAVA_HOME/bin/jmap -heap ${PID} $ $JAVA_HOME/bin/jmap -dump:format=b,file=edwfms-8084_108.bin $PID
$ find . -size -200k -type f | xargs -I {} cp -rp {} /tmp/history_file/
说明: -I 将xargs的每项参数,通常是一行一行赋值给 {},能够用 {} 代替 -size -200k 文件小于200K redis
```bash
$ curl ifconfig.me ubuntu
##### 12.删除空目录 ```bash $ find . -empty -type d | xargs rmdir
JAVA_OPTS="-Xms1024m -Xmx1024m -XX:PermSize=128m -XX:MaxPermSize=256m"
```bash
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}' centos
网络链接状态统计: netstat 分析解决网络链接问题和检查接口/端口统计数据、路由表、协议状态等等的 **语法:** netstat -l 显示全部处于监听状态的端口列表 netstat -a 显示全部端口;若是去指定仅显示 TCP 端口,使用 -at(指定信显示 UDP 端口,使用 -au) netstat -r 显示路由表 netstat -s 显示每一个协议的状态总结 netstat -i 显示每一个接口传输/接收(TX/RX)包的统计数据 centos7 默认不带该命令,须要手动 安装 ```bash $ yum install net-tools
查看系统链接数bash
$ netstat -n | awk '/^tcp/ {n=split($(NF-1),array,":");if(n<=2)++S[array[(1)]];else++S[array[(4)]];++s[$NF];++N} \ END {for(a in S){printf("%-20s %s\n", a, S[a]);++I}printf("%-20s %s\n","TOTAL_IP",I);for(a in s) printf("%-20s %s\n",a, s[a]);printf("%-20s %s\n","TOTAL_LINK",N);}'
--系统参数TCP标识
CLOSED:无链接是活动的或正在进行中的
LISTEN:服务器在等待进入呼叫
SYN_RECV:一个链接请求已经到达,等待确认
SYN_SENT:应用已经开始,打开一个链接
ESTABLISHED:正常数据传输状态
FIN_WAIT1:应用说它已经完成
FIN_WAIT2:另外一边已赞成释放
CLOSING:两边同时尝试关闭
TIME_WAIT:另外一边已初始化一个释放。(数据链接已经连上的)
LAST_ACK:等待全部分组死掉 查看Apache的并发请求数及其TCP链接状态服务器
```bash
$ watch -d cat /proc/softirqs 网络
##### 16.强制卸载NFS设备 ```bash $ mount -l /nfs挂载目录
1) 从根目录开始分析,用如下命令找到占比最大的二级目录并发
$ cd / #第一种命令 $ find / -maxdepth 1 | grep -vE 'proc|lost|upload|cgroup' | sed 's#/##g' | awk '{print $0}' | xargs du -a --max-depth=0 | sort -nr | awk '{print $2}' | xargs du -sh #第二种方法 $ find / -maxdepth 1 ! -path / | grep -vE 'proc|lost|upload|cgroup' | awk '{print $0}' | xargs du -a --max-depth=0 | sort -nr | awk '{print $2}' | xargs du -sh
$ ls | grep -E 'jpg|png' | xargs -I {} mv {} image_dir/
$ cat /proc/cpuinfo | grep "core id" | awk -F ':' '{print $2}' | sort -rn | uniq | wc -l
$ curl http://quan.suning.com/getSysTime.do
#整行处理模式 $ sed -i 's/要被取代的字串/新的字串/g' 文件名 #参数 -i 表示替换,若是不加 -i 则表示只预览替换是否正确,不实际修改文件
$ find . -type f | wc -l
$ lsb_release -a
$ sudo gpasswd -d root ubuntu Removing user root from group ubuntu
#查询当前占用设备的进程信息&剔除进程 $ fuser -m -v /media/USB/ $ fuser -m -v -i -k /media/USB/
#手动过滤出进程号再Kill掉 ps aux | grep send_jvm.sh | grep -v grep | cut -c 9-15 | xargs kill -9 9-15 是进程ID所在的列位置xargs 将结果解析成参数 #过滤出进程号再 kill pgrep httpd | xargs kill -9
#!/bin/bash ip=$1 #服务器IP port=$2 #服务器端口 while : do echo -e "$(date +%H:%M:%S)--$(nc -v -w 5 -z $1 $2)" sleep 1 done #-w 5 表示超时时间
#显示消耗内存/CPU最多的10个进程 $ ps aux | sort -nk +4 | tail -10 ps aux | sort -nk +3 | tail -10 #使用ps 查看进程使用的环境变量信息 $ ps -eo pid,cmd e | tail -n 1
taskset用来查看和设定“CPU亲和力”,说白了就是查看或者配置进程和cpu的绑定关系,让某进程在指定的CPU核上运行,便是“绑核”curl
redis进程运行绑定jvm
taskset -p pid
注意,此命令返回的是十六进制的,转换成二进制后,每一位对应一个逻辑CPU,低位是0号CPU,依次类推。若是每一个位置上是1,表示该进程绑定了该CPU。例如,0101就表示进程绑定在了0号和3号逻辑CPU上了tcp
taskset -pc 3 pid 表示将进程pid绑定到第3个核上(注:不用将3弄成二进制的)taskset -c 3 command 表示执行command命令,并将command启动的进程绑定到第3个核上。
背景
使用物业OA grguser用户登陆其生产OA应用服务器时,执行命令报错以下
-bash: fork: retry: Resource temporarily unavailable
排查
#提示符 root用户执行$提示符 grguser用户执行
1)查看当前用户运行的进程/线程数量
#lsof -u grguser | wc -l
1450
2)查看当前用户最大能够运行的进程、线程数量,若是该值在当前终端窗口小于运行的进程/线程数量,将会报资源没法分配的错误"-bash: fork: retry: Resource temporarily unavailable"
# cat /etc/security/limits.d/90-nproc.conf * soft nproc 1024 #系统安装时默认是1024 root soft nproc unlimited $ ulimit -a max user processes (-u) 1024
解决
root用户下修改/etc/security/limits.d/90-nproc.conf文件,将nproc的值调大 ,调整为8192 $ulimit -a max user processes (-u) 8192 若是没有发生改变,最好重启下服务器
注意,通常的搜索结果都是说要改/etc/security/limits.conf这个文件,实际上我修改了以后,发现仍是没有生效,最终修改/etc/security/limits.d/90-nproc.conf文件后生效
查看具体vmstat文档
跟踪程序打开的文件命令
$ strace -e open netstat #跟踪netstat命令打开的文件数
列出当前进程打开的文件
lsof abc.txt 显示开启文件abc.txt的进程 lsof -i :22 知道22端口如今运行什么程序 lsof -c abc 显示abc进程如今打开的文件 lsof -p 12 看进程号为12的进程打开了哪些文件
nload
iftop
iptraf
nethogs #该工具能够看到进程的通讯流量状况
bmon
slurm
tcptrack
vnstat
查看每一个链接的实时流量状况的工具 $ pktstat -i eth3 -nt
查看具体rsync文档
按文件内容搜索,xxx是文件内容, '.' 是搜索范围,在当前目录下
$ grep -rin xxx .