# 查找对应程序的进程ps -ef|grep mysql# 将所有的程序显示出来ps aux
# 常用与统计当前系统有多少线程在运行,系统慢,io较高时使用,可以看哪个程序开启的线程多pstree -p |wc -lpstree -p 进程号 |wc -l
如果log中出现无法创建线程的异常,可以查看下,一般appuser的默认值都不高
# 查看资源限制ulimitunlimitedulimit -acore file size (blocks, -c) 0data seg size (kbytes, -d) unlimitedscheduling priority (-e) 0file size (blocks, -f) unlimitedpending signals (-i) 31151max locked memory (kbytes, -l) 64max memory size (kbytes, -m) unlimitedopen files (-n) 65536 打开文件数pipe size (512 bytes, -p) 8POSIX message queues (bytes, -q) 819200priority (-r) 0stack size (kbytes, -s) 8192 # 当前用户栈最大8192cpu time (seconds, -t) unlimitedmax user processes (-u) 4096 #当前用户最大进程4096virtual memory (kbytes, -v) unlimitedfile locks (-x) unlimited
在启动脚本里
#/bin/shulimit -u 128 # 设置最多启动128进程ulimit -n 256 # 设置文件句柄数不超过256个start.sh
修改用户的限制
# centos中设置vim /etc/security/limits.d/*-nproc.confappuser soft nproc 10240appuser hard nproc 10240appuser soft nofile 10240appuser hard nofile 10240#soft 指的是当前系统生效的设置值#hard 表明系统中所能设定的最大值# noproc 是代表进程数、nofile 是代表文件打开数表示占用的 cpu 时间
top - 14:33:59 up 140 days, 17:08, 1 user, load average: 0.36, 0.14, 0.08Tasks: 193 total, 1 running, 192 sleeping, 0 stopped, 0 zombie: 0.7 us, 0.3 sy, 0.0 ni, 99.1 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 stKiB Mem : 8008868 total, 178140 free, 6977448 used, 853280 buff/cacheKiB Swap: 8257532 total, 7999996 free, 257536 used. 517908 avail MemPID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND19461 root 20 0 5871784 1.1g 7208 S 1.0 14.1 55:03.21 java26092 root 20 0 5958732 498696 8656 S 1.0 6.2 67:17.80 java7492 gdm 20 0 753896 44568 2848 S 0.7 0.6 844:55.38 gsd-color26790 appuser 20 0 1344164 222596 8444 S 0.7 2.8 19:43.57 node9 root 20 0 0 0 0 S 0.3 0.0 22:03.45 rcu_sched8986 root 20 0 5720692 935004 6992 S 0.3 11.7 44:15.39 java18945 appuser 20 0 6023192 2.4g 8476 S 0.3 31.1 32:35.86 java
# 综合信息14:33:59 当前时间up 140 days, 17:08 系统运行了 140天,17小时08分钟1 user, 当前登录用户数load average: 0.36, 0.14, 0.08 系统负载近1分钟的负载近5分钟的负载近15分钟的负载一般能从这个负载看出来系统的情况,逐步上升,说明系统负载高,一般是并发量大或者刚启动项目(没加白名单,或者网不同,导致阻塞,cpu彪高)# 进程信息Tasks: 193 total, 193个进程总数1 running, 正在运行的 运行的越多,cpu利用率越高192 sleeping, 休眠的 不影响cpu0 stopped, 停止的0 zombie 僵尸进程# cpu信息(可以按核心展示):us, 用户空间占用cpu百分比sy, 内核空间占用cpu百分比ni, 进程优先级改变占用cpu的百分比id, 空闲cpu百分比wa, 等待输入输出的cpu占用百分比hi, 硬件中断占用cpu百分比si, 软件中断占用cpu百分比st 虚拟机占用百分比# 内存信息KiB Mem : 内存的单位8008868 total, 物理总内存178140 free, 空闲内存6977448 used, 使用的物理内存853280 buff/cache 用于内核缓冲区的内存量KiB Swap:8257532 total, 交换区总量7999996 free, 空闲的交换区总量257536 used. 已使用的交互区总量517908 avail Mem 缓冲区的总量
# 查看内存使用,m表示MB显示(服务器内存报警后查看)free -m# 当前目录的大小,并按从大到小排序du -sh *|sort -rhB K(1024) M(mb) G(gb) T(tb)s 算总量h 表示以1000为基底计算大小=N 计算深度# 显示磁盘使用情况df -h
tail 命令
head 命令
cat 命令 使用也得注意,最好加|more
grep 命令 常和别的命令组合, 正则匹配还是很强大的
vim 命令(文件太大,占内容,容易把服务器搞崩,慎用)
# 查看文件末尾最后20行,并实时监听(f循环读取),上线后查看验证tail -fn 20 5ycode_access.logf 循环读取n 读取多少行# 查看文件的前10行(有时候查看动是输出了什么,有用)head -n 10 5ycode_access.logn 读取多少行v 显示标题# 翻页查看内容cat 5ycode_access.log |more按回车一页页的查看# 从某个文件中搜索关键字,并一页页的显示grep "article" 5ycode_access.log |more# 从当前目录中搜索grep "article" ./* |morei 忽略大小写v 取反n 显示行号匹配的内容高亮显示n after的简写 表示显示匹配到的字符串所在行以及其后n行n before 表示显示匹配到的字符串所在行以及其前n行n context 上下文,表示显示匹配行以及其上下n行# 从文件的后两万行中检索Exception 并显示对应的后20行(方便检索异常)tail -fn 20000 error.log |grep 'Exception' -A 20vim my.ini
vim命令看这张图就行了(忘了从哪找的了) 
nohup mqnamesrv 1>/usr/local/rocketMq/logs/out.log 2>/usr/local/rocketMq/logs/error.log &nohup java -jar /app/eureka/eureka-server-0.0.1-SNAPSHOT.jar > /app/eureka/nohup.out 2>&1 &
操作系统中有三个常用的流:0:标准输入流 stdin1:标准输出流 stdout2:标准错误流 stderr> /app/eureka/nohup.out 实际是 1 >/app/eureka/nohup.out 的简略写法< nohup.out ,实际是 0 < nohup.out> /app/eureka/nohup.out 2>&1 &2>&1是将标准错误流stderr2重定向到标准输出流(&1),标准输出(&1)再被重定向输入到nohup.out 文件中最后添加的&表示命令结束
# 统计接口出现的次数awk -F'[ ?]' '{print $7} localhost_access_log.2018-02-12.txt |sort |uniq -c# 统计链接10.255.200.214:22 的ip前20个netstat -nat | grep "10.255.200.214:22" |awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -nr|head -20- 先以空格分隔取第5个字符串- 再以: 分隔取第一个字符串- sort 排序- uniq -c 去重统计# 统计3306 端口的TCP状态netstat -n |grep 3306| awk '/^tcp/ {++y[$NF]} END {for(w in y) print w, y[w]}'- 先过滤tcp- 以最后一位构建数组(AWK 中的数组都是关联数组,数字索引也会转变为字符串索引)- END 最后将数组输出# 只打印第10行的行号tail -fn 20 5ycode_access.log | awk '{if (NR==10) print NR}'# 同时以" "和: 分隔 输出$4和$5 以" " 拼接tail -fn 20 5ycode_access.log | awk -F'[ :]+' '{print $4" "$5}'

awk 默认是 以 " " 去分隔字符串分隔,然后就是数组的处理$0~$n去取数
awk 可以通过 -F 指定分隔方式,可以指定多个
内置函数:
awk 正则 
yum install rz szsz file 执行后,会弹出让你保存文件的路径rz 执行该命令后,在弹出框中选择要上传的文件即可
scp -r 文件 user@ip:目录scp -r jdk-8u251-linux-x64.tar.gz root@10.255.200.215:/usr/local/java/输入密码
# 接收端先开启命令接收文件nc -l ip port > 文件名nc -l 127.0.0.1 9999 > jdk-8u251-linux-x64.tar.gz# 发送端发送对应的文件nc ip port < 文件名nc 127.0.0.1 9999 < jdk-8u251-linux-x64.tar.gz
firewall-cmd --state
firewall-cmd --get-active-zonesfirewall-cmd --get-default-zonefirewall-cmd --get-zone-of-interface=ine0
# 查询开放了哪些端口firewall-cmd --zone=public --list-ports# 查询80端口有无开放firewall-cmd --query-port=80/tcp
firewall-cmd --zone=public --add-port=8000-9000/tcp --permanentfirewall-cmd --reload
firewall-cmd --permanent --zone=public --remove-port=8848/tcpsystemctl stop firewalld.service# 禁止开机启动systemctl disable firewalld.service
firewall-cmd --zone=public --query-service=sshfirewall-cmd --zone=public --query-service=http
firewall-cmd --zone=public --add-service=httpsfirewall-cmd --reload
firewall-cmd --permanent --zone=public --remove-service=http
firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="172.17.0.1/16" port port="3306" protocol="tcp" accept'firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.0.4/24" service name="http" accept"'
firewall-cmd --permanent --zone=public --add-forward-port=port=888:proto=tcp:toport=22:toaddr=192.168.0.100
netstat命令
#常用参数-a (all)显示所有选项,默认不显示LISTEN相关-t (tcp)仅显示tcp相关选项-u (udp)仅显示udp相关选项-n 拒绝显示别名,能显示数字的全部转化成数字。-l 仅列出有在 Listen (监听) 的服务状态-p 显示建立相关链接的程序名-r 显示路由信息,路由表-e 显示扩展信息,例如uid等-s 按各个协议进行统计-c 每隔一个固定时间,执行该netstat命令。# 查看端口监听netstat -lnptnetstat -lnpt |grep 8080# 查看TCP链接的状态,比如链接数据库,或者服务链接处在状态netstat -n |grep 3306| awk '/^tcp/ {++y[$NF]} END {for(w in y) print w, y[w]}'CLOSE_WAIT 348ESTABLISHED 1240TIME_WAIT 5621# 同上netstat -nat |grep 22|awk '{print $6}'|sort|uniq -c|sort -nr# 统计链接服务器22端口按链接数倒序排,取前20个[root@dev214 bin]# netstat -nat | grep "10.255.200.214:22" |awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -nr|head -203 10.203.0.572 10.255.255.247# 统计nginx access中前20个访问awk '{print $1}' access.log |sort|uniq -c|sort -nr|head -10解决大量TIME_WAIT( 操作系统默认 240 秒后,才会关闭处于 time_wait 状态的连接) vim/etc/sysctl.conf#编辑文件,加入以下内容:net.ipv4.tcp_syncookies =1#表示开启SYN Cookies。当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击,默认为0,表示关闭;net.ipv4.tcp_tw_reuse =1#表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭;net.ipv4.tcp_tw_recycle =1#表示开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭;net.ipv4.tcp_fin_timeout=30#修改系統默认的 TIMEOUT 时间。然后执行以下命令让参数生效 /sbin/sysctl -p
-r 降序显示,默认是升序-u 去除重复行-n 以数值排序
# 将java栈信息输出到对应的文件,如果出现的BLOCKED比较多就会有问题,RUNNABLE比较多也有可能是有慢操作。jstack pid > pid.log
一般直接jmap,有对应的额示例原文作者:5ycode;如有侵权,请联系管理员删除。