Linux、Shell

常用命令

文件传输

(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%位置的数据)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值