linux基本操作命令

CentOS7/Linux永久开放某个指定的 端口号

1、开启防火墙

systemctl start firewalld

关闭防火墙

systemctl stop firewalld.service # 临时关闭

systemctl disable firewalld #永久关闭防火墙

systemctl status firewalld # 防火墙状态查看, 该信息中包含firewalld.service服务所在的具体文件路径信息

开机自启 或 关闭防火墙

systemctl enbale/disable firewalld.service

systemctl restart firewalld 重启防护墙

2、开放指定端口

firewall-cmd --zone=public --add-port=8080/tcp --permanent
命令含义:
–zone #作用域
–add-port=8080/tcp #添加端口,格式为:端口/通讯协议
–permanent #永久生效,没有此参数重启后失效

查看某个端口是否开发

firewall-cmd --query-port=port/tcp

查看所有开发端口

firewall-cmd --list-port ### 如果防护墙关闭后将显示firewall不知道运行中提示

移除指定端口

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

3、重启防火墙

firewall-cmd --reload

4、查看那些端口被应用占用

netstat -apn|grep LISTEN 命令查看端口占用信息

netstat -ntlp //查看当前所有tcp端口·

netstat -tunlp  用于显示 tcp,udp 的端口和进程等相关情况

netstat -ntulp |grep 8080 //查看所有8080端口使用情况

5、查看端口占用情况
lsof -i:端口号prot  # 查看端口是否被占用

lsof -Op pid #文件描述符细节查看

# linux中任何文件都存在 0u 1u 2u文件描述符,执行在执行时都会将返回数据流输入到对应的 文件描述符通道中
# 0:标准输入
# 1:标准输出
# 2:报错输出
ls ./ /errorfile 1>ls.out 2>& 1 # 将ls ./ /errorfile的成功和失败数据的标准输出流中的数据输出(>符号)到ls.out文件, 报错输出流中的数据输入到标准输出流中

# > 输出重定向    < 输入重定向  

#查看某个机器上的某个端口号是否可以访问
telnet ip port

# 查询当前服务器ip
ip a | more
ip addr
ifconfig
hostname -I

在这里插入图片描述

6、使用命令传输文件到Linux系统
put -r "文件在系统中的全路径"  // 该方式的文件传输使用时需要在同一系统平台下
7、重启网络服务
// 使用virtual box启动虚拟机时如果本机使用无线网络时,virtual box的网络设置需要设置为桥接模式否则虚拟机和主机将不会在同一个网段中

systemctl restart network.sevice  // 重启某个服务 服务名.service
8、进程查找
ps aux | grep 进程名称   // aux表示的是  所有用户下的所有进行下的进程   | 前者命令的输出作为后者命令的输入 grep过滤
    
jps // 该指令用于显示所有正在启动的进程
    可选参数: -v -m -l // 分别对应 显示进程使用的jvm参数信息  显示传递给main()函数的参数  显示主类的全路径

    
ps -ef | grep java // 显示所有的Java进程

ps -ef | grep 进程名称

在这里插入图片描述

9、普通用户 root用户切换
  • 普通用户切换到root用户

  • 输入 su 指令

  • 输入root用户密码

  • root用户切换到普通用户

  • 输入 (su 普通用户名) 指令

  • 输入普通用户密码

  • 普通用户临时获取root权限(默认时长5分钟)

  • sudo 指令

  • 输入 root用户密码

10、linux中关机 重启

shutdown -r now 重启Linux

shutdown -h now 关闭Linux

shutdown -h 10 Linux将会在10后关机,ctrl+c可以强制取消命令

shutdown -h 20:25 Linux将会在今天的20:25关闭

11、文件解压

Linux 打包命令 tar 详解_linux tar-CSDN博客

tar -zxvf 文件名.tgz /指定路径 ## 解压文件 到指定位置

tar -zcvf 打包的压缩包格式及指定存储位置 /指定路径 ##将指定路径下的所有文件打包为指定的压缩格式并存储在指定存储位置 如tar -zcvf /tmp/etc.tar.gz /etc

tar -cvf etc_backup.tar /etc 将/etc目录中的所有文件和子目录打包成一个名为etc_backup.tar的 tar 存档文件,文件存在不指定绝对路径是存放在当前目录

tar -cvf my_files.tar /path/to/files/* 将压缩 /path/to/files 目录下的所有文件和子目录,并将存档文件保存为 my_files.tar

tar -czvf backup.tar.gz /path/to/files --exclude ‘*.mp3’ 要在创建存档文件时排除所有以 .mp3 结尾的文件

zip test.zip test.txt 该命令将在当前目录下创建名为test.zip的压缩文件,并将test.txt压缩进去。

zip -r test.zip /home 该命令将对/home目录进行递归压缩,保存为名为test.zip的压缩文件

zip -u test.zip test2.txt 该命令将在test.zip压缩文件中添加名为test2.txt的文件,若test.zip文件中已存在test2.txt,则更新该文件

unzip test.zip -d /home/test_folder/ test.txt 该命令将在/home/test_folder/中创建test.txt文件,并将test.zip中的test.txt文件解压缩到该文件中

unzip test.zip -d /home/test_folder/ 该命令将将test.zip中的所有文件和子目录解压缩到/home/test_folder/中

# 假设您已经创建了名为 backup.tar.gz 的存档文件,并且要将其发送到具有 IP 地址 192.168.1.100 的远程计算机上的 /backup 目录中
ssh user@192.168.1.100 'mkdir -p /backup' && \
cat backup.tar.gz | ssh user@192.168.1.100 'cd /backup && tar -xz'
12、环境变量配置

vim /etc/profile 添加所需环境变量配置

source /etc/profile 刷新环境变量 使得配置生效

13、强制文件删除

rm -rf dir_name 强制删除目录及其目录中所有内容

创建文件

touch fileName.filePrefix

chown

修改所属用户与组

chmod

修改用户权限

查看运行的后台进程

jobs -l

对Linux终端结果的某行进行删除/获取

| 管道符,作用是将前面的指令结果作为后面指令结果的输入进行指令操作

以下指令表示对docker中正在运行的结果进行操作,删除终端显示的结果的第一行,并使用awk命令打印出处理后的结果的最后一行

docker ps |sed ‘1d’ | awk ‘{print $NF}’

docker ps | awk ‘{print $1 “:” $2}’ 输出结果时对第一列和第二列使用特殊符号拼接

|| 符号 执行多条命令时,前面的命令执行成功后则后面的指令不会执行,前面的指令中执行失败后在后面的指令继续验证执行是否成功,存在成功的指令后 后面的指令都不会执行

&&逻辑与,当用此连接符连接多个命令时,前面的命令执行成功,才会执行后面的命令,前面的命令执行失败,后面的命令不会执行

awk指令
ps -ef | awk '{print $1}' # 返回第一列
ps -ef | awk -v n=2 '{print $1,$(n+1)}' # 返回第一列和第x列
ps -ef | awk '/abc/{print $1}' #返回带abc关键字的第一列
ps -ef | awk '{print $NF}' # 返回最后一列
ps -ef | awk 'END{print $NF}' # 返回有多少列(以最后一列为基准)
wc -l # 返回有多少行
sed指令
ps -ef | sed -n 2p # 返回第一行,1p是表头
ps -ef | sed -n 1,10p # 返回第一行到第十行(带表头)
ps -ef | sed -n 2p | awk '{print $2}' # awk+sed返回某行某列
管道指令符 |

| 管道符,作用是将前面的指令结果作为后面指令结果的输入进行指令操作

在通过使用管道执行多个命令时,管道左右两边的指令将会被linux直接解释执行,并且在执行对应的指令时会同事开启一个子进程执行各自的Linux命令

在这里插入图片描述

在这里插入图片描述

其他基础命令
ls -l 等价于 ll      列出目录及文件名

cd 切换目录

pwd 显示当前文件的全路径

mkdir 创建目录 `mkdir -p 多级文件层级`

rmdir 创建一个空目录  rmdir -p 强制删除目录

cp 复制而文件目录  cp file  path/newfileName `直接使用cp命令进行赋值时源文件的文件权限等信息将不会赋值给新文件`#将一个文件夹下的所有内容复制到另一个文件夹下
cp -r /home/packageA/* /home/cp/packageB/

sudo cp -arv file path/newfileName `执行cp命令时添加上-arv属性后复制后的目标文件将会包含所有源文件的权限及其他信息`

rm 删除文件或目录  rm -f 强制删除

mv /path/* /etc # 将path文件夹下的所有资源移动到/etc
mv 移动文件(重命名文件) mv file path/newfileName     mv fileName newFileName

cat 由第一行开始显示文件内容

tac 从最后一行开始显示,由cat倒着写

ni 显示是输出行号

more 一页一页显示文件内容

less 和more相同,但是可以往前翻页

hand 只看头几行 -n number_count显示的数量

tail 只看尾部几行 -f -n number_count 持续检测并输出 nubmer_count行数的数据
如:tail -f -100 filename  持续输出该文件的内容,每次输出末尾100行

useradd -d /home/sam -m sam 表示创建一个sam用户同时在home下为该用户生成sam用户文件

passwd修改密码

df -h显示文件系统

uname -r 显示当前Linux内核版本

histoty | grep nginx 查询历史的有关于nginx的指令

# 将数据输入到指定文件夹中如果文件中存在内容将会被重新覆盖, 写入的数据会进行换行 -e \n
 echo -e "172.1.0.71:8848\n172.1.0.72:8848" > cluster1.conf
cat实现内容写入

1、cat > hk.html <<EOF,hk.html命令是希望使用cat写入的目标文件, << 后面指定的EOF是指定的交互式输入终止符

2、接下来就可以把文本通过复制粘贴的方式添加到>提示符后面,最后通过EOF终止cat的输入

该方式使用时新内容将会覆盖原文件中的内容

find
#默认情况下使用find查询某个目录时将会查询该目录下及其子目录中的所需的数据


sudo find / -type f -size +100M # 查找大小大于100M的数据再/路径下

find /home/sungrid/sungrid -type d -name nginx # 指定路径下查询文件夹名称为nginx的文件夹是否存在

`查询/usr/local路径下的指定文件是否存在,文件名称忽略大小写`
eg: find /usr/local -name swagger_zipkin_test-1.0-SNAPSHOT.jar

`查询指定文件夹下及其该文件夹下的子文件中的所有以.java结尾的文件,作为管道参数传递给rm指令作为该指令的执行入参删除所有查询的.java结尾的文件`
find /home/zcy/ -name *.java | xargs rm -rf

find . -maxdepth 1 -name *.conf #查询当前目录下所有以.conf结尾的目录信息
find . ! -name "." -type d -prune -o -name '*.tar' # 查询当前目录下排除类型为目录的情况下查询所有.tar结尾的文件
Linux中的字符截取

引用-(5条消息) linux中字符串截取的八种方法_涤生大数据的博客-CSDN博客_linux 字符串截取

Linux中变量创建及命令行传入变量
  • shell脚本中定义变量

    • 直接使用变量名称=变量指定方式进行定义 变量在使用时通过 $变量名的方式进行引用。
  • 命令行的方式传入参数到shell脚本中。可执行的sh指标名 value1 value2

    • 以上方式进行数据的传递,在shell中通过 $1 $2 $3的方式进行获取,$0获取的时执行的sh脚本名

    • #!/bin/sh
      var1=$1
      echo var1
      if[ $1 ]  # $1的值可以直接,作用于当前shell的所有范围
      
df

df -Th 查看磁盘空间使用情况

Mouted on状态表示 当前/boot下的目录被挂载到/dev/sda1下,/dev/sda1中的数据进行操作时将会直接映射到/boot中。

挂载命令 : mount /dev/sda1 /boot /dev/sdaq表示分区路径 /boot表示挂载到那边目录

umount /boot 将已经完成挂载的映射目录取消挂载,取消挂载后,/dev/sda1中之前操作的数据将不会在/boot目录中显示

在这里插入图片描述

history

获取指令历史 history 10 表示获取历史指令的前10条

history | grep 指令名 ####过滤出所有关于具体指令执行过的历史指令

Linux用户操作命令
cat /etc/passwd|grep -v nologin|grep -v halt|grep -v shutdown|awk -F":" '{ print $1"|"$3"|"$4 }'|more # 查看当前服务器中的用户列表

who  # 显示当前登录系统的用户列表
who am i # 显示当前登录系统的用户
userdel -rf 账号名  #彻底删除账号信息
useradd 账号名 # 添加密码
passwd 账号名 # 修改账号密码 填入两次修改的密码
su 用户名 # 切换登录用户
useradd -g 组名 用户名 #创建用户并之间添加到某一个用户组中
cat /etc/group # 查看所有用户组
usermod -g 组名 用户名 # 修改用户所在用户组
######
groupadd group_name # 添加用户组
groupdel group_name # 删除用户组
groupmod -n new_group_name old_group_name #用户组重命名
nc 客户端连接建立命令

nc ip/域名 指定端口port // 该命令的作用就是当前客户端服务器与指定的ip:port建立连接

//nc建立连接完成之后与指定对端通信时通过指定的调用规则通信

请求方式 url htpp/1.0(http版本)

netstat -natp // 该命令可以查看当前客户端与哪些服务器建立tcp连接

在这里插入图片描述

0.0.0.0: 表示任意主机ip、端口号 访问指定的LocalAddress的指定端口时都会将请求转给指定的进程处理。* 客户端之间建立连接时只要对应的 (源端:port 目标端:port)构成的数据具有唯一性时客户端之间就能建立连接

在这里插入图片描述

tcpdump 指令 dump三次握手 四次挥手

在这里插入图片描述

export

在环境变量中设置 export关键字导出环境配置的原由

  • 在Linux中存在父子进程的概念,如果在进程中定义一个变量时,此时启动子进程/bin/bash 使用 echo数据变量时将不能输出,linux中父子进行了隔离。
  • 通过export打通父子进行中的隔离问题
page caceh调优参数
vm.dirty_background_ratio=80 #可用内存使用率到达80%时触发page cacahe中的数据写入到磁盘中
vm.dirty_background_bytes=1048567

vm.dirty_ratio=90 # 程序写入数据时,分配的page cache到达可用内存的90%时阻塞程序同时将数据写入到磁盘,程序如果继续写入时将会触发LRU
vm.dirty_bytes=1048567
vm.dirty_writeback_centisecs=5000(毫秒为单位) #
vm.dirty_expire_centisecs=30000(毫秒为单位) #

java中使用ByteBuffer写数据与直接通过file.write()写数据快慢比较

在Java中直接同File对象的wirte()方法写入数据时,每次调用write()方法时都要执行一次系统调用并转内核态/用户态。使用ByteBuffer时在JVM中将会通过一个8kb的数组,当程序将该数据内容写满时才会进行系统调用将数据写入到缓存页(如果程序不主动调用flush()刷入内存时)

在这里插入图片描述

在这里插入图片描述

BIO下参数部分参数调节

在这里插入图片描述

  • CLI_OOB:嗅探配置是否开启,默认false表示开启
  • BACK_LOG:表示服务端中指定的socket连接中服务端未accept()的个数,体现在Linux中netstat -natp指令执行时pid的值为-
  • CLI_NO_DELAY:客户端发送数据时如果发送的数据小于指定给发送缓存区时当前数据可以被缓存在缓冲区中等数据到达一定值时(大于客户端设置的缓存区)在发送给客户端,默认为false表示开启
  • CLI_KEEPALIVE:客户端与服务端建立连接后,确定双方是否还存活,默认为false表示开启
tcp
  • tcp连接建立时,当客户端与服务端建立好三次握手后,客户端与服务端之间就可以进行通信,在建立完成时计算机内核会为客户端与服务端分配资源,服务端在未执行accept()方法接收客户端连接时,Linux内核在其完成对应的三次握手后也会为其分配对应的资源并可用进行数据的交换,但是此时内核还未将该数据交给指定的进程处理(分配文件描述符交给指定进程处理),数据会一直存在对应的接收缓冲区中

在这里插入图片描述

tcp的滑动窗口拥塞控制

在客户端与服务端进行通信时,通信中数据包中会传递当前端的可使用的滑动窗口大小,从而使得发送端每次发送的数据大小在接收端的可控制范围内,而不是客户端无脑发送数据到接收到从而导致接收端无法接收数据导致拥塞,无法接收的数据接收端将会将其抛弃,从而会导致当前数据的的ack无法返回给客户端导致数据会重发。

route 临时添加路由信息
`使用route 命令添加的路由,机器重启或者网卡重启后路由就失效了`

#添加到主机的路由
route add –host 192.168.1.11 dev eth0
route add –host 192.168.1.12 gw 192.168.1.1
#添加到网络的路由
route add –net 192.168.1.11 netmask 255.255.255.0 eth0
route add –net 192.168.1.11 netmask 255.255.255.0 gw 192.168.1.1
route add –net 192.168.1.0/24 eth1
#添加默认网关
route add default gw 192.168.2.1
#删除路由
route del –host 192.168.1.11 dev eth0
#删除默认路由
route del default gw 192.168.2.1
socket使用状态
cat /proc/net/sockstat # socket使用情况
说明:
1、sockets: used:已使用的所有协议套接字总量
2、TCP: inuse:正在使用(正在侦听)的TCP套接字数量。其值≤ netstat –lnt | grep ^tcp | wc –l
3、TCP: orphan:无主(不属于任何进程)的TCP连接数(无用、待销毁的TCP socket数)
4、TCP: tw:等待关闭的TCP连接数。其值等于netstat –ant | grep TIME_WAIT | wc –l
5、TCP:alloc(allocated):已分配(已建立、已申请到sk_buff)的TCP套接字数量。其值等于netstat –ant | grep ^tcp | wc –l
6、TCP:mem:套接字缓冲区使用量(单位不详。用scp实测,速度在4803.9kB/s时:其值=11,netstat –ant 中相应的22端口的Recv-Q=0,Send-Q≈400)
7、UDP:inuse:正在使用的UDP套接字数量
8、RAW:
9、FRAG:使用的IP段数量

ss -s # 显示系统的socket汇总信息

ss -pl # 显示运行的进程及其使用的端口

ss -t/-u -a # 显示所有TCP/UDP信息

ss -o state established '( dport = :http or sport = :http )' # 显示所有状态为established的http连接


http请求中的keepalive作用
`普通模式
HTTP协议采用“请求-应答”模式,当使用普通模式,即非KeepAlive模式时,每个请求/应答客户和服务器都要新建一个连接,完成
之后立即断开连接(HTTP协议为无连接的协议);
`Keep-Alive模式
当使用Keep-Alive模式(又称持久连接、连接重用)时,Keep-Alive功能使客户端到服
务器端的连接持续有效,当出现对服务器的后继请求时,Keep-Alive功能避免了建立或者重新建立连接。
   `作用
   通过使用keep-alive机制,可以减少tcp连接建立次数,也意味着可以减少TIME_WAIT状态连接,以此提高性能和提高httpd服务器的吞吐率(更少的tcp连接意味着更少的系统内核调用,socket的accept()和close()调用)。

防火墙firewall命令

systemctl status firewalld		 			#查看firewall防火墙状态
firewall-cmd --list-ports					#查看firewall防火墙开放端口
systemctl start firewalld.service			#打开firewall防火墙
systemctl stop firewalld.service			#关闭firewall防火墙
firewall -cmd --reload						#重启firewal防火墙
systemctl disable firewalld.service			#禁止firewall开机启动  

#开放firewall防火墙端口,需重启防火墙生效
firewall-cmd --zone=public --add-port=80/tcp --permanent 	

命令含义:
–zone #作用域
–add-port=80/tcp #添加端口,格式为:端口/通讯协议
–permanent #永久生效,没有此参数重启后失效

文件权限解读

文件颜色
  • 蓝色:目录
  • 绿色:可执行文件
  • 红色:压缩文件
  • 浅蓝色:链接文件
  • 白色:普通文件
  • 黄色:设备文件
常见文件类型

-: 普通文件 (可执行、图片、文本) REG

d: 目录 DIR

l: 链接

b: 块设备 (网卡)

c: 字符设备 CHR

s: socket

p: pipeline

[eventpoll]: epoll

在这里插入图片描述

文件硬链接

在Linux文件系统时,不同的文件路径指定同一个物理位置

ln /root/msb.txt /root/xxoo.txt 该指令将会创建一个/root/xxoo.txt文件并且该文件的物理位置指向/root/msb.txt。同该文件内容进行修改时两个文件的内容都是相同的

在这里插入图片描述

stat /root/msb.txt 查看当前文件的物理信息

在这里插入图片描述

文件软链接

ln -s /root/xxoo.txt /root/msb.txt 将msb.txt软连接到xxoo.txt

当删除xxoo.txt文件时msb.txt文件也会被删除

在这里插入图片描述

文件权限w r x
  • 读取–用数字 4 表示;
  • 写入–用数字 2 表示;
  • 执行–用数字 1 表示;
文件权限操作
chmod +x 文件名称 #添加文件的可执行权限(当前拥有者)
chmod ugo +r 文件 # 为当前文件的所有者 所属组 其他的用户身份添加执行权限
chmod -R 文件所需权限 文件目录 # -R表示为当前文件夹中的所有文件文件对应的文件权限

#####使用 + - 为指定用户添加对应文件的权限的添加或消除
chmod u +r 文件名 # 为当前用户增加读取权限
chmod g -w 文件名 # 为群组用户消除写入权限

eg: chmod 777 /root/文件名


chown 用户名:所属组 文件/文件目录  # 修改某个文件或者文件目录的拥有者及所属组
chown -R 用户名:所属组 文件/文件目录 # 修改某个文件或者文件目录的拥有者及所属组
nohup

语法:nohup command &

如果使用nohup命令提交作业,那么在缺省情况下该作业的所有输出都被重定向到一个名为nohup.out的文件中,除非另外指定了输出文件如 nohup command > myout.file &

open files打开数量查询

lsof -p pid |wc -l 查询进程打开的open file数量

ulimit -a 查看单个进程允许的最大open file句柄打开数

cat /proc/sys/fs/file-max Linux内核根据内存评估的可以创建的最大文件句柄数量

ulimit -SHn 句柄数量 临时修改进程开启的句柄数据,机器重启后还原

默认情况下普通用户单个进程可开启的最大句柄数量为1024,root用户开启的句柄数据为指定修改的句柄数量(默认不进行修改该参数时该数据也为1024)

cd /proc/pid号 查看当前指定pid的进程打开的io socket等信息数量,该文件夹下的fd文件夹可以查看对应的io socket打开信息。task可以查看当前进行打开的线程数据及其数据

netstat -natp 查看当前服务器中所有网络监听 连接建立状态 只有服务端的state状态可以为Listen(父线程),当客户端与服务端建立连接后将会出现一条establish状态的数据
在这里插入图片描述

内核指令文档
yum install man man-pages  # 安装帮助文档

指令使用
在这里插入图片描述

route

route -n 显示当前路由表信息

服务器访问指定 ip/域名(解析成为ip后)时 访问ip/域名(解析成为ip后)与当前路由表信息的每条数据的子网掩码进行 按位与(同1则1,其余为0) 运算 获取到除主机位的前三位与目标地址进行匹配是否成功。从而找到当前请求发送的下一跳的ip地址,通过该ip(网关/路由)转发到其他局域网。

在这里插入图片描述

路由信息表中的网关为 0.0.0.0时表示当前网络在同一局域网中

arp -a 数据链层

解析网卡硬件地址(mac地址)和ip的映射关系

cpu占用过高

引用-(71条消息) Linux系统中CPU占用率过高问题原因分析_飞奔的蜗牛丶的博客-CSDN博客_linuxcpu占用率过高

  1. top指令获取cpu占用过高的进行pid(然后键入"M"命令根据内存的占用情况降序排列("P"是CPU占用情况降序排列)
  2. ps H -eo pid,tid,%cpu | grep 14288(pid)获取进程中cpu占比高的线程信息
  3. 将线程pid转为16(printf “%x\n” 线程号)进后使用抓取进程 jstack 14288 > 14288.txt 后查看通过转换后的16进制值查看对应的线程信息
# 查看进程占用线程数量,如java
ps -eLf|grep java|wc -l

1、top 获取cpu占用过高的进程pid(然后键入"M"命令根据内存的占用情况降序排列("P"是CPU占用情况降序排列)

2、top -Hp pid 查看该进程中占用cpu最高的线程

3、该进程中占用cpu高的线程的线程pid转为16进制,printf “%x\n” 线程号

3、jstack 进程pid > 进程Pid.log 将线程栈信息导入文本中

4、grep thread_stack.log | 74b -A 100 从文件中获取指定线程的16进制值对应的线程信息,查看问题原因

5、jmap -dump:live,format=b,file=./pid.hprof pid 获取进程的堆内存信息用于分析

grep -A k 可以显示匹配内容以及后面的k行内容
grep -B k 可以显示匹配内容以及前面的k行内容
grep -C k 可以显示匹配内容以及前后面的k行内容

GC信息查看
额外输出上次GC原因
jstat -gccause
# 指定进程pid(21245)每隔1秒打印一次 总共20次 gc信息  
jstat -gcutil 21245 1000 20
#字段含义
s0 : Heap上的 Survivor space 0 区已使用空间的百分比
s1 : Heap上的 Survivor space 1 区已使用空间的百分比
E : Heap上的 Eden space 区已使用空间的百分比
O : Heap上的 Old space 区已使用空间的百分比
P : Perm space 区已使用空间的百分比
M:元数据区使用比例
CCS:压缩使用比例
YGC : 从应用程序启动到采样时发生 Young GC 的次数
YGCT : 从应用程序启动到采样时 Young GC 所用的时间(单位秒) 
FGC: 从应用程序启动到采样时发生 Full GC 的次数
FGCT: 从应用程序启动到采样时 Full GC 所用的时间(单位秒)
GCT: 从应用程序启动到采样时用于垃圾回收的总时间(单位秒)

#JVM会先触发gc,然后再统计信息
jmap -histo:live 21245 | more
# 查看堆内存histogram中的对象数量大小
jmap -histo pid
#查看进程内对使用情况,包括使用的GC算法、堆配置信息和各代中的堆内存使用情况
jmap -heap pid

#查看线程情况
jstack pid 
#正常输出不被响应
jstack -F pid
#除堆栈外,显示关于锁的附件信息
jstack -l pid >> 文件名称.文件后缀



curl指令用法
2 发送一个 POST 请求
命令的形式如下:
curl -H "Content-Type: application/json" -X POST [options] [URL]
X 选项,指定与远程服务器通信时将使用哪种 HTTP 请求方法。POST GET 
H选项,指定需要传输的请求头信息
请求正文的类型由 Content-Type 设定。

一般来说,POST 请求是通过 HTML 表单发送的。发送到表单的数据通常以 multipart/form-data 或 application/x-www-form-urlencode 类型进行编码。

3 一个简单的 POST 请求
我们从一个简单的例子开始,指定 URL 发出 POST 请求。

curl -X POST http://example.com

注意:如果没有 -X POST,则默认使用 HTTP 协议的 GET 方法。

4 使用 POST 请求发送其他字段
可以使用 POST 请求将数据发送到能处理POST 请求的远程 URL。可以在命令行使用 -d 选项传递数据。

curl -d "firstname=John&lastname=Andrew" -X POST http://example.com

所提供的数据以 & 符号分隔,通常结构为 name = value。使用 -d 选项还会添加一些隐式的 HTTP 头,比如 Content-Type 等。

可以使用 -H a 标志来发送 JSON 数据。下面的命令发送一个带有请求的 JSON 对象。

方式1

curl -d '{json}' -H 'Content-Type: application/json' https://example.com

方式2

curl localhost:3000/api/json -X POST -d '{"hello": "world"}' --header "Content-Type: application/json"


5 使用 POST 请求指定 Cookie
一些 Web 应用程序依赖 Cookie 进行身份验证和授权。Curl 命令可以与 cookie 一起使用,验证身份后,访问受限制的资源。可以使用-b 或-cookie 选项来指定 Cookie 数据。

curl --cookie "sadad1321saweqe" -X POST http://example.com

6 使用 curl 发送文件
要使用 curl 发布文件,只需在文件位置前添加@符号。

curl -X POST -F 'image=@/home/user/Downloads/profile.jpg' http://example.com/upload

7 发送 JOSN 数据
Curl 命令最流行的用例之一是使用 JSON 格式进行数据通信。在下面的示例中,我们将 JSON 数据发送到服务器。

curl -d '{"key1":"value1", "key2":"value2"}' -H "Content-Type: application/json" -X POST "http://example.com/data"

或者,将 JSON 数据存在文件中。
DMA数据传输优化-零拷贝

引用-(83条消息) 零拷贝(Zero-copy)和mmap_mmap与零拷贝_zh_39446980的博客-CSDN博客

ethtool -k eht0 | grep scatter-gather # 查看网卡是否支持scatter-gather 特性
# 作用-实现对零拷贝的DMA优化,减少cpu数据拷贝到socket的过程
第一步,通过 DMA 将磁盘上的数据拷贝到内核缓冲区里;
第二步,缓冲区描述符和数据长度传到 socket 缓冲区,这样网卡的 SG-DMA 控制器就可以直接将内核缓存中的数据拷贝到网卡的缓冲区里,此过程不需要将数据从操作系统内核缓冲区拷贝到 socket 缓冲区中,这样就减少了一次数据拷贝
cpu核实查看
grep -c processor /proc/cpuinfo 
cat /proc/cpuinfo | grep “physical id” | sort | uniq | wc -l #物理CPU个数
cat /proc/cpuinfo | grep “processor” | wc -l #逻辑CPU个数:(核数)
cat /proc/cpuinfo | grep “cpu cores” | wc -l #每个物理CPU中Core的个数
cat /proc/cpuinfo | grep ‘model name’ |uniq #查看CPU型号

Windows

根据端口号杀死进程

  1. 根据端口号查询对应的进程号
    1. netstat -ano | findstr 5000 //列出进程和占用的端口,且包含 5000
  2. 根据进程pid强制关闭进程
    1. taskkill -PID <进程号> -F //根据进程号强制关闭某个进程
    2. taskkill /f /p pid 杀死进程
  3. 查看所有对用pid的服务名
    1. tasklist /fi “PID eq 80”
关闭 防火墙
service iptables stop // 关闭防火墙

win docs窗口打开服务

  1. services.msc 打开服务管理
  2. osk 打开电脑键盘
  3. systeminfo 查看电脑详细信息 cpu数 内核数等
  4. 先在doc窗口输入 winc ---->之后输入 cup get * 显示的数据中 可以看到 核心线程数 cpu线程数等信息
  5. 先在doc窗口输入 winc ——————》在输入 cpu get NumberOfCores 可以获取核心线程数 cpu get NumberOfLogincalProcessors 可以获取cpu线程数

vim 使用技巧

  1. shift + g 直接跳转到文件末尾
  2. gg直接跳转到文件头开始部位
  3. /关键字 全文收索关键字,支持正则表达式
  4. vim 进入后直接输入 set nu 将会为每行设置行号,之后直接盲输入行号将会直接跳转到指定行

yum方式安装Java

引用-Centos7.5安装java8 - 简书 (jianshu.com)

修改静态网络

使用静态网络iP时不会自动解析域名,需要修改resolv.conf文件添加域名解析服务器地址

vim /etc/resolv.conf

nameserver 114.114.114.114

nameserver 8.8.8.8

nameserver 1.1.1.1

vi /etc/sysconfig/network-scripts/ifcfg-ens33 # 网络ipi地址修改路径

shell脚本执行

1.touch hello.sh

2.vim hello.sh 
 键入i 
 插入#!/bin/sh
     echo hello world;
 键入: 
    esc 
    :
    wq
3.chmod 700 hello.sh

4. 执行 ./hello.sh
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值