七、Linux命令
1.查看Linux硬盘空间

2.查看Linux CPU内存和系统版本

cat /proc/cpuinfo:查看当前CPU的软硬件信息

top: 查看CPU动态信息 顶部展线当前CPU的整体使用情况

dstat :查看CPU的动态运行信息

free:查看当前内存的使用情况

uname -r: 查看Linux系统内核版本号

uanme -a :查看主机名 内核版本 CPU架构

cat /etc/redhat-release :查看centos版本

3.Linux常见命令
# 显示所有进程
ps -ef
# 查看指定进程
ps -ef|grep 进程ID
# 查看cpu占用率
top
# 查找包含指定名称的文件
find / -name *名称*
# 查看用过的命令列表
history
# 查看ip地址及接口信息
ifconfig
# 查看环境变量
env #查看所有
env $HOME #查看指定
netstat -anp 查看当前网络所有相关的连接信息
a–表示显示所有选项
n–表示拒绝显示别名 尽可能的把一些别名转换成一个数字
p–表示建立相关连接的程序也显示出来

proto表示连接方式 ;Local Adress表示远端地址 Foreign Address表示远端地址;
State:表示当前连接的一个状态
PID/Program name:表示当前进程锁定的进程ID和进程名
查看8080端口是否被占用:netstat -anp | grep 8080
| 相当于管道,将netstat-anp的输出作为grep的输入
查看指定进程的名字都有哪些连接 netstat -anp | grep python
top:查看一台主机上的进程相关信息
top:之后按下shift+m 可以按照RES降序排序 查看当前主机上哪些进程占用内存比较多
top: 之后按下shfit+p 可以按照CPU的情况降序排序 查看CPU占用情况最多的前n个进程

分成统计信息和进程列表两大块
统计信息:
第一二行描述主机当前的运行复杂情况
load average :load表示系统负载,数字越大说明当前系统越繁忙;负载的含义表示当前系统的任务队列中队列的长度是多长
第三行表示当前当前CPU的使用情况
第四行第五行表示内存的使用情况:
total表示当前主机总共有多少物理内存;
free表示有哪些内存没有被使用;
used表示已经用了的内存;
buffer/cache表示当前哪些内存被缓存使用了
进程列表
PID:进程ID
USER:进程所属的用户
PR/NI:进程优先级
VIRI:进程所占的虚存
RES:进程所占的物理内存 (注意这个列,如果主机进程所占用的物理内存较多,再次申请内存可能会失败)
SHR:表示共享内存
查看IP地址 ifconfig 一台主机可能有多个网络接口 就有多个IP地址

4.文件访问权限
umask:查看以及设置文件的默认创建权限引码 它决定一个文件默认创建出来是一个什么样的权限
umask -S 可以查看到具体对应的权限信息
注意:如果一个文件已经创建成功,这个文件的权限不能通过默认权限掩码来进行影响了
此时修改文件权限的命令应该是Chmod



022取反之后:755 恰好是u=rwx,g=rx,o=rx
chmod:给文件添加一些权限
可以给指定用户添加指定的权限
1.chmod [augo] a-所有用户 u-文件所有者 g-文件所属组 o-其他用户 以+和-表示增加或者去除某个权限
chmod g+w test.txt 给test.txt的文件所属组增加可写的权限
chmod o-r test.txt 删除调其他用户的可读权限
2.chomod 777 以八进制数字的形式来修改文件的权限
3.修改文件的所有者 chown 或者文件的所属组chgrp
chown san text.txt 将文件的所有者改为san
chgrp san text.txt 将文件的所属组改成san
5.Linux操作系统权限的理解

sudo :可以临时对用户进行提权操作,提升到管理员的权限,可以完成我们当前不能完成的操作
例如:不需要切换到root用户,使用sudo命令可以临时使用管理员权限查看根目录下的内容
但是必须有前提条件,这个用户需要在sudo的配置文件中进行配置,让它可以临时获得管理员权限。
添加普通用户2018217912可以临时获得管理员权限


6.Linux的find命令

find命令:在linux系统中快速查找到某一个文件

7.grep命令
grep:在文件中过滤出想要的内容
grep ‘love’ test.txt (过滤出带love的行)
grep -i ‘love’ test.txt (过滤出带love的行 不区分大小写)
grep -n ‘love’ test.txt (-n显示对应的行号)
grep ‘lov.*’ test.txt (标准正则 grep支持标准正则 可以找到以lov开头所在的行)
grep -E “love|LOVE” test.txt(筛选出love和LOVE所在的行,此时使用到“|”符号,因此必须使用扩展正则)
grep -c ‘love’ test.txt (统计匹配的行数,而不显示具体的内容)
grep -o ‘love’ test.txt (只希望显示匹配的内容而不是显示整行内容)
使用实例:etc/password 这个文件里面 有哪些行有root信息
cat etc/password | grep "root"
cat etc/password 获得内容
“|”将信息放入管道
grep “root” 从管道中过滤出root信息
使用实例:在一个C的工程里面,在.h文件中找到某个结构体到底在哪一个文件里面定义的
find和grep相结合
系统头文件放在usr/src/kernels目录下
xargs 在每一个文件中过滤出我们想要的文件
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LohLNSKa-1622787579163)(C:\Users\gcc\AppData\Roaming\Typora\typora-user-images\image-20210503173931865.png)]
8.Linux如何查看java进程/线程的内存使用情况
使用top命令查看系统资源的使用情况,命令:top

如图可以看到java的进程内存使用率较高,java进程的内存使用率达到了70%+
2.定位线程问题(通过命令查看9718进程的线程情况),命令:
ps p 9718 -L -o pcpu,pmem,pid,tid,time,tname,cmd

由此可以看到这PID:9718的进程产生了很多线程。接下来就可以通过jstack查看内存使用的堆栈。
-
查看内存使用的堆栈:在这里我们挑选了TID=9731的线程进行分析,首先需要将9731这个id转换为16进制。需输入如下命令
printf "%x\n" 9731
接下需要使用16进制的2603
-
将PID为9718的堆栈信息打印到jstack.log中,命令:jstack -l 9718 > jstack.log

- 查看堆栈信息文件,命令:vim jstack.log
在进行搜索TID为2603的相关信息。如图:

可以看到这个线程状态为:WAITING。通过查看文件分析 看到大量 Java Thread State。
网络字节序和主机字节序的差异
字节序分为大端字节序和小端字节序
大端字节序是指一个整数的低位字节(32-31bit)存储在内存的高地址处,低位字节(0-7bit)存储在内存的高地址处。
小端字节序是指一个整数的低位字节(32-31bit)存储在内存的低地址处,低位字节(0-7bit)存储在内存的低地址处。
现代PC大多采用小端字节序,所以小端字节序又被称为主机字节序。
大端字节序也称为网络字节序。