常用命令
文件传输
(1)使用xshell传输
sftp root@ip:使用命令将文件从windows上传到linux,使用这个命令进入传输文件的模式,然后直接拖动文件到这个界面就行了;
exit:退出传输文件的模式使用
注意:不知为何,这种方式一直传输速度为0
(2)使用mobaxterm传输
新建sftp连接,直接将windows文件上传到linux上
(3)CentOS 8系统 开启 BBR加速
BBR是Google开源的一种TCP网络拥塞优化算法,可以提高网站访问速度。
CentOS 8 默认内核版本为 4.18.x,内核版本高于 4.9 就可以直接开启 BBR,所以 CentOS 8 启用 BBR 非常简单不需要再去升级内核。
步骤:
1、将参数写入配置文件
echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf
2、重新加载配置文件
sysctl -p
3、重启服务器(其实不用重启服务器,只用重新加载配置就行了)
reboot
4、然后查看BBR是否开启成功
sysctl -n net.ipv4.tcp_congestion_control:会返回bbr
lsmod | grep bbr:会返回tcp_bbr
这样就说明 bbr开启成功
文件查看
ll:其实就是ls -l命令的缩写;ll命令中显示的时间是文件最后一次更新的时间
ll -sh /:查看/目录下文件的大小,注意,只能查看文件大小(有些特殊文件夹也会查看不知道什么情况),想要混合统计文件夹以及文件大小可以使用du命令
ll -sh -t /:将/目录下的文件按照大小降序排列
ll -sh -rt /:将/目录下的文件按照大小升序排列
ll -t /:将/目录下的文件按照时间(最后一次更新的时间)降序排列
ll -rt /:将/目录下的文件按照时间(最后一次更新的时间)升序排列
stat:查看文件的详细信息
stat test:查看test文件的详细信息
文本处理
sed、grep、awk
参考:https://www.cnblogs.com/along21/p/10366886.html
进程(线程)相关
/proc/loadavg该文件会显示cpu的负载信息(基本可以认为文件内容是实时更新的)
参数含义:
0.00,0.01,0.05,2/110,4081:分别表示最近1分钟、5分钟、15分钟CPU的负载情况、活跃的进程数/总的进程数、最近一个的进程的进程id;这里面显示的负载信息跟top命令中显示的负载信息是一样的
load 1 ,5 , 15 取自 /proc/loadavg 前3个数据
load1:表示1分钟的平均负载,load5,load15依此类推
对CPU负载的理解
翻译:系统load是处于运行状态或者不可中断状态的进程的平均数。一个处于运行状态的进程表示正在使用cpu或者等待使用cpu,一个不可中断状态的进程表示正在等待IO,例如磁盘IO。load的平均值通过3个时间间隔来展示,就是我们看到的1分钟、5分钟、15分钟,load值和cpu核数有关,单核cpu的load=1表示系统一直处在负载状态,但是4核cpu的load=1表示系统有75%的空闲。
可以简单理解为CPU处理任务的繁忙程度。如果说一个CPU(叶就是一个cpu核心)满负载工作可以在100进程之间切换(可以简单理解为处理100个任务(每个进程应该是对应一个任务,操作系统的进程肯定与用户进程或者线程有对应关系),但是此时操作系统中只有50个活跃进程,那么此时的负载就是0.5。值得注意的是,显示的负载信息是该操作系统中所有CPU核心的平均负载情况,如果该系统有两个CPU核心(也就是说CPU是2核心),那么有50个活跃进程时,负载也是0.5,当负载达到2时,说明两个CPU核心都在满负荷进行工作。
/proc/cpuinfo文件中有cpu的详细信息,需要什么信息都可以去里面查询
cpu使用率、load高问题排查思路
查看进程信息:ps -aux、ps -ef
ps -aux和ps -ef这两个命令都是用来显示进程信息的,只是显示的风格不一样,显示的关键内容基本相似。推荐使用ps -aux
基础命令
ps -aux
基本格式如下
user:表示当前登录的用户
PID:表示当前进程的id
%CPU%:当前进程占用的cpu百分比
%MEM%:当前进程占用的内存百分比
VSZ:该进程使用的虚拟內存量(KB)
RSS:该进程占用的固定內存量(KB)(驻留中页的数量)
TTY:该进程在那个终端上运行,若与终端无关,则显示? 若为pts/0等,则表示由网络连接主机进程。
STAT:进程的状态
START:进程启动的时间(该进程是什么时候启动的)
TIME:该进程实际使用CPU运行的时间
COMMAND:启动该进程的脚本
进程状态(STAT)主要包括下面这些:
D:无法中断的休眠状态(通常 IO 的进程);
R:正在运行可中在队列中可过行的;
S:处于休眠状态;
T:停止或被追踪;
W:进入内存交换 (从内核2.6开始无效);
X:死掉的进程 (基本很少见);
Z:僵尸进程;
<:优先级高的进程
N:优先级较低的进程
L:有些页被锁进内存;
s:进程的领导者(在它之下有子进程);
l:多线程,克隆线程(使用 CLONE_THREAD, 类似 NPTL pthreads);
+:位于后台的进程组;
top
基本格式如下:
使用top命令后,按P可以按照CPU使用率降序排列;按M可以按照内存使用率降序排列
top命令显示的参数解读:
tasks:操作系统中的任务情况,有两中模式
(1)默认是tasks,可以简单理解为进程数;
(2)可以按H进入线程模式,tasks会变成threads
%cpu(s):CPU的使用情况
(1)0.0 us:用户空间进程占用CPU时间百分比
(2)0.3 sy:内核进程占用CPU时间百分比
(3)0.0 ni:用户空间内改变过优先级的进程占用CPU时间百分比
(4)99.7 id:空闲CPU时间百分比(100%表示系统完全空闲)
(5)0.0 wa:I/O等待占用的CPU时间百分比
(6)0.0 hi:硬件中断占用CPU时间百分比
(7)0.0 si:软件中断占用CPU时间百分比
(8)0.0 st:虚拟化hypervisor从当前虚拟机vm偷走的时间,这个值很高的话,说明你的VPS提供商的CPU资源有限,而你没能抢过别人,很有可能就是VPS提供商超售了(?)
KiB Mem:操作系统中的内存情况,前面那个KiB表示的是单位(KB),也可以使用命令切换成GB或者其他单位(按E可切换单位)
(1)total:表示总内存
(2)used:表示已使用的内存
(3)free:表示空闲的内存
(4)buff/cache:buff(Buffer Cache)表示块设备的读写缓冲区占用的内存;cache(Page Cache)表示文件系统缓存占用的内粗。总结,buff:块设备缓冲;cache:文件系统缓存,统一可以理解为缓冲区。
注意:如果cache的值很大,说明cache住的文件数很多.如果频繁访问到的文件都能被cache住,那么磁盘的读I/O就非常小.所谓块设备是指对其信息的存取以"块"为单位,如通常的光盘,硬磁盘,软磁盘,磁带等,块长取512字节或1024字节或4096字节.设备可以直接通过块设备特别文件来访问,为了提高数据传输效率,块设备驱动程序内部采用块缓冲技术.
KiB Swap:交换空间,交换空间在物理内存(RAM)被充满时被使用(各项参数可以参考上面的).
如果系统需要更多的内存资源,而物理内存已经充满,内存中不活跃的页就会被移到交换空间去.虽然交换空间可以为带有少量内存的机器提供帮助,但是这种方法不应该被当做是对内存的取代.交换空间位于硬盘驱动器上,它比进入物理内存要慢.
注意:%cpu(s) 跟进程中的%cpu区别 【假设整个机器是12核的cpu】
%cpu(s):表示所有用户进程占用整个cpu的平均值,由于每个核心占用的百分比不同,所以按平均值来算比较有参考意义。
%CPU:显示的是进程占用一个核的百分比,而不是整个cpu(12核)的百分比,有时候可能大于100,那是因为该进程启用了多线程占用了多个核心,所以有时候我们看该值得时候会超过100%,但不会超过总核数*100。
free
该命令是查看内存相关信息的,可以参考文章:free命令显示内容解读
网络相关
linux默认的hosts文件是/etc/hosts,就跟windows的那个hosts文件一样,是本地的域名解析,就是在本记访问这个域名的时候,访问到那个域名对应的ip上;如果想要修改主机名,则修改/etc/hostname文件中的值就行了
网卡配置
linux默认的网卡配置文件在/etc/sysconfig/network-scripts/,文件夹下,以ifcfg-开头(因为网卡启动的脚本会自动扫描该文件夹下以这个开头的文件,也就是说所有的网卡的配置文件都满足ifcfg-*),
以网卡ens33为例,查看网卡配置文件ifcfg-ens33有哪些参数
TYPE=“Ethernet”:指定网络类型 以太网是Ethernet
PROXY_METHOD=“none”
BROWSER_ONLY=“no”
BOOTPROTO=“dhcp”:网络启动协议 如何让主机得到IP地址;包括下面两种类型
1)自己手动配置 none static(这两个值任选其一就行)(静态)
2)自动获取地址 dhcpd(动态)
注意:如果选择了静态ip,则必须要手动给该网卡配置ip,也就是要在这个文件中给IPADDR,参数赋值
DEFROUTE=“yes”
IPV4_FAILURE_FATAL=“no”
IPV6INIT=“yes”
IPV6_AUTOCONF=“yes”
IPV6_DEFROUTE=“yes”
IPV6_FAILURE_FATAL=“no”
IPV6_ADDR_GEN_MODE=“stable-privacy”
NAME=“ens33”:主机网卡的名称 逻辑名称(不知道跟DEVICE有啥区别)
UUID=“d490ca6f-eede-4f64-825d-367cf6d2e003”:虚拟主机,会给每个硬件一个标识
DEVICE=“ens33”:网卡名(ip a命令显示的那个,默认有俩,分别是lo、ens33)
ONBOOT=“yes”:设置网卡是否处于开启状态(激活状态)
IPADDR=10.0.0.200(这个只有上面的BOOTPROTO非dhcp的时候才要填写)
PREFIX=24:定义网络中可以有多少主机 房间里面可以有多少人
GATEWAY=10.0.0.2:网关,一个网络到另一个网络的必经之路 人从一个国家到另一个国家必经之路(海关)
DNS1=223.5.5.5:DNS(建立名称和IP地址的对应关系,不知道有啥用)
系统相关
uname -srm:查看linux内核版本
java相关
java -jar xxx.jar:这种运行方式,只能运行打包的时候,指定了mainClass的包,一般情况直接使用项目中的maven package命令打包的都没有指定manClass,这种方式不是很便
java -cp xxx.jar com.xxx.xxx:这种运行方式,直接指定jar包中的mainClass,就不需要在打包的时候指定mainClass,正常打包就行,这种方式比较方便,推荐用这种
注意:
java -jar XXX.jar
特点:当前ssh窗口被锁定,可按CTRL + C打断程序运行,或直接关闭窗口,程序退出,那如何让窗口不锁定?
java -jar XXX.jar &
&代表在后台运行。
特定:当前ssh窗口不被锁定,但是当窗口关闭时,程序中止运行。继续改进,如何让窗口关闭时,程序仍然运行?
nohup java -jar XXX.jar &
nohup 意思是不挂断运行命令,当账户退出或终端关闭时,程序仍然运行
当用 nohup 命令执行作业时,缺省情况下该作业的所有输出被重定向到nohup.out的文件中,除非另外指定了输出文件。
nohup java -jar XXX.jar >temp.txt &
解释下 >temp.txt
该作业的所有输出被重定向到temp.txt的文件中
如果需要传入参数:nohup java -jar XXX.jar 参数 >temp.txt &
常用命令
nohup java -Xms4g -Xmx4g -XX:MaxMetaspaceSize=256m -XX:MetaspaceSize=256m -jar test.jar 参数 >/dev/null 2>&1 &
加入插件将依赖的jar包打进去,并指定mainClass
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.4.1</version>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifest>
<mainClass>com.test.utils.testUtils</mainClass> <!-- 你的主类名 只需要修改这个,其他都不用改-->
</manifest>
</archive>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
git相关
1.使用git命令行,作为客户端链接服务器
ssh 用户名@IP地址 -p 端口号
监控相关
接口的tp99:将一个接口的调用耗时按照升序排列,假如调用了100次,耗时分别是1ms到100ms,tp99就是99ms,也就是倒数第二耗时最大的
p90:数据集按升序排列,第90分位置大的数据(即升序排列后排在90%位置的数据)