常用linux命令

网友投稿 880 2022-10-13

本站部分文章、图片属于网络上可搜索到的公开信息,均用于学习和交流用途,不能代表睿象云的观点、立场或意见。我们接受网民的监督,如发现任何违法内容或侵犯了您的权益,请第一时间联系小编邮箱jiasou666@gmail.com 处理。

常用linux命令

ps 命令用来列出系统中当前运行的那些进程

# 查找对应程序的进程ps -ef|grep mysql# 将所有的程序显示出来ps aux

pstree 命令以树状图显示进程间的关系

# 常用与统计当前系统有多少线程在运行,系统慢,io较高时使用,可以看哪个程序开启的线程多pstree -p |wc -lpstree -p 进程号 |wc -l

ulimit 为进程及其子进程的资源使用设置限制

如果log中出现无法创建线程的异常,可以查看下,一般appuser的默认值都不高

# 查看资源限制sh-4.2$ ulimitunlimitedsh-4.2$ ulimit -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) 819200real-time priority (-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 10240 appuser hard nproc 10240 appuser soft nofile 10240 appuser hard nofile 10240 #soft 指的是当前系统生效的设置值#hard 表明系统中所能设定的最大值# noproc 是代表进程数、nofile 是代表文件打开数 stack表示堆栈大小,cpu 表示占用的 cpu 时间

top 命令

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%Cpu(s): 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 Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 19461 root 20 0 5871784 1.1g 7208 S 1.0 14.1 55:03.21 java 26092 root 20 0 5958732 498696 8656 S 1.0 6.2 67:17.80 java 7492 gdm 20 0 753896 44568 2848 S 0.7 0.6 844:55.38 gsd-color 26790 appuser 20 0 1344164 222596 8444 S 0.7 2.8 19:43.57 node 9 root 20 0 0 0 0 S 0.3 0.0 22:03.45 rcu_sched 8986 root 20 0 5720692 935004 6992 S 0.3 11.7 44:15.39 java 18945 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 系统负载0.36 近1分钟的负载0.14 近5分钟的负载0.08 近15分钟的负载一般能从这个负载看出来系统的情况,逐步上升,说明系统负载高,一般是并发量大或者刚启动项目(没加白名单,或者网不同,导致阻塞,cpu彪高)# 进程信息Tasks: 193 total, 193个进程总数1 running, 正在运行的 运行的越多,cpu利用率越高192 sleeping, 休眠的 不影响cpu0 stopped, 停止的0 zombie 僵尸进程# cpu信息(可以按核心展示)%Cpu(s): 0.7 us, 用户空间占用cpu百分比0.3 sy, 内核空间占用cpu百分比0.0 ni, 进程优先级改变占用cpu的百分比99.1 id, 空闲cpu百分比0.0 wa, 等待输入输出的cpu占用百分比0.0 hi, 硬件中断占用cpu百分比0.0 si, 软件中断占用cpu百分比0.0 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为基底计算大小--max-depth=N 计算深度# 显示磁盘使用情况df -h

日志检索

tail 命令head 命令cat 命令 使用也得注意,最好加|moregrep 命令 常和别的命令组合, 正则匹配还是很强大的vim 命令(文件太大,占内容,容易把服务器搞崩,慎用)

# 查看文件末尾最后20行,并实时监听(f循环读取),上线后查看验证tail -fn 20 5ycode_access.log f 循环读取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 显示行号--clolor 匹配的内容高亮显示-A n after的简写 表示显示匹配到的字符串所在行以及其后n行-B n before 表示显示匹配到的字符串所在行以及其前n行-C n context 上下文,表示显示匹配行以及其上下n行# 从文件的后两万行中检索Exception 并显示对应的后20行(方便检索异常)tail -fn 20000 error.log |grep 'Exception' -A 20vim my.ini

后端启动 nohup

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 拥有自己的语言,允许创建简短的程序,这些程序读取输入文件、为数据排序、处理数据、对输入执行计算以及生成报表,还有无数其他的功能

# 统计接口出现的次数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 指定分隔方式,可以指定多个

rz &sz 文件上传与下载

yum install rz szsz file 执行后,会弹出让你保存文件的路径rz 执行该命令后,在弹出框中选择要上传的文件即可

linux之间文件传输

scp方式需要密码

scp -r 文件 user@ip:目录scp -r jdk-8u251-linux-x64.tar.gz root@10.255.200.215:/usr/local/java/输入密码

nc 方式不需要密码

# 接收端先开启命令接收文件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

查看域

# 查看active域firewall-cmd --get-active-zones# 查看当前域firewall-cmd --get-default-zone#查看网卡对应的域firewall-cmd --get-zone-of-interface=ine0

查看开放端口

# 查询开放了哪些端口firewall-cmd --zone=public --list-ports# 查询80端口有无开放firewall-cmd --query-port=80/tcp

添加开放端口

# 往对应的zone中添加端口# 8000-9000表示的是一个范围# tcp udpfirewall-cmd --zone=public --add-port=8000-9000/tcp --permanent# RunTime:当前正在生效的。# Permanent:永久生效的。# 配置立即生效firewall-cmd --reload

关闭端口

firewall-cmd --permanent --zone=public --remove-port=8848/tcp

关闭防火墙

systemctl stop firewalld.service# 禁止开机启动systemctl disable firewalld.service

在public域中分别查询ssh与http服务是否被允许

firewall-cmd --zone=public --query-service=sshfirewall-cmd --zone=public --query-service=http

允许https服务流量通过public区域,要求立即生效且永久有效

# 设置当前有效,如果加上--permanent 则永久有效firewall-cmd --zone=public --add-service=https# 让立即生效firewall-cmd --reload# 不再允许http访问

firewall-cmd --permanent --zone=public --remove-service=http

对指定ip开放服务

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 -20 3 10.203.0.57 2 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

sort

-r 降序显示,默认是升序-u 去除重复行-n 以数值排序

jstack

# 将java栈信息输出到对应的文件,如果出现的BLOCKED比较多就会有问题,RUNNABLE比较多也有可能是有慢操作。jstack pid > pid.log

jmap 命令

一般直接jmap,有对应的额示例

上一篇:Kubernetes 笔记 02 demo初体验
下一篇:技术分享 | 利用GreatSQL部署部署MGR集群,并完成添加新节点 、滚动升级、切主(超详细)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~