Java笔记-----(12)Linux常用命令

系统路径

/ :表示根目录
~ :表示/root
etc :存放系统配置目录
home :除了root以外,所有用户默认在home下新建一个用户,用户 xxx/home/xxx 具有完全操作权限
root :用户 root 单独文件夹
usr :所有用户安装的软件都放入到这个文件夹中

常用命令

  • pwd :打印工作目录,当前所有文件夹全路径
  • cd 进入到文件夹;cd .. 向上跳一级文件夹;cd 路径 进入指定文件夹
  • mkdir 新建空文件夹
  • ls 平铺 ll 详细列表
  • vivim 都是编辑文件;如果文件不存在,带有创建文件功能; vi 普通编辑, vim高级编辑(带有颜色);进入到编辑器后非可编辑状态,点击”i””insert”启用编辑状态;编辑后点击”esc”退出编辑状态,输入:wq 保存并退出;:q 不保存退出(适用于没有编辑时);:q! 强制退出
  • touch 创建空文件.
  • cat 查看文件全部内容
  • head [-n] 文件名 查看文件前 n 行,默认前 10 行
  • tail [-n] 文件名 查看文件后 n 行,默认后 10 行;tailf 动态显示文件后 n 行内容.常用在显示tomcat日志文件功能.
  • echo ‘内容’ >> 文件名 向文件中添加一些内容.
  • ifconfig 打印网卡信息.
  • reboot 重启.
  • tar zxvf 文件名 解压文件
  • cp [-r] 原文件 新文件路径 : 复制文件;-r 复制文件夹
  • ctrl+C 中断
  • mv 原文件 新文件 : 剪切(具备重命名功能
  • rm [-rf] 文件名 : 删除; -r 删除目录; -f 强制删除,不需要确认.
  • clear 清屏

df / du 命令

参考文章:
Linux下查看磁盘与目录的容量——df、du
Linux 查看当前目录占用总空间大小

df:列出文件系统的整体磁盘使用量;
du(disk usage):评估文件系统的磁盘使用量(常用于评估目录所占容量)

grep 命令

grep(Global Regular Expression Print)可以使用正则表达式搜索文本 , 并把匹配的行打印出来

使用案例:

查找文件file.log中“passport”字段:
grep “passport” file.log
查找文件file.log中“passport”字段,并且统计出出现次数:
grep “passport” file.log |wc –l 或者 grep “passport” file.log –c

管道操作符“|”的作用

管道命令操作符仅能处理经由前面一个指令传出的正确输出信息,也就是 standard output 的信息,对于 stdandard error 信息没有直接处理能力。然后传递给下一个命令,作为标准的输入 standard input。然后wc(word count)可以统计指定文件中的字节数 , 字数 , 行数 , 并将统计结果显示输出。当然-c也可以起到统计次数的作用。

awk 命令

参考文章:
Linux awk命令详解

awk命令主要是将一行分为多个字段做处理,格式如下所示:

awk [-F field-separator] 'commands' input-file(s)

其中,commands 是真正awk命令,[-F域分隔符]是可选的。 input-file(s) 是待处理的文件。

在awk中,文件的每一行中,由域分隔符分开的每一项称为一个域。

通常,在不指名-F域分隔符的情况下,默认的域分隔符空格

使用案例:
假设我们现在有一个文件,里边内容有三行,如下所示,几个简单的awk统计:

  • 去掉第一列
  • 对第一列求和
  • 去掉 列数不为3 的行

在这里插入图片描述

NF 是每行的字段数
NR 是总共读取了多少行
awk $(NF-3) 就是倒数第四个字段, 所以恰好是IP地址
另注, 空格是字段识别时的分隔符

top和ps命令:探测进程

ps命令,默认只会显示运行在当前控制台下的属于当前用户的进程
ps –Aps –e可以显示所有进程
ps -ef 显示完整格式的所有进程
指定进程名,ps -ef | grep“java”找出进程名中包括java的所有进程

ps命令参数:
	-A :所有的进程均显示出来,与 -e 具有同样的效用;
	-a : 显示现行终端机下的所有进程,包括其他用户的进程;
	-u :以用户为主的进程状态 ;
	-x :通常与 a 这个参数一起使用,可列出较完整信息。
输出格式规划:
	-l :较长、较详细的将该PID 的的信息列出;
	-j :工作的格式 (jobs format)-f :做一个更为完整的输出。

top命令,可以实时监测进程,输出的第一部分是显示系统的概括。如下所示:
在这里插入图片描述

第一行显示了当前时间、系统的运行时间、登录的用户数和系统的平均负载(平均负载有3个值:最近1min 5min 15min)。
第二行显示了进程的概要信息,有多少进程处于运行、休眠、停止或者僵化状态。
第三行是CPU的概要信息。
第四行是系统内存的状态。

ps和top命令的区别:

  • ps看到的是命令执行瞬间的进程信息,而top可以持续的监视
  • ps只是查看进程,而top还可以监视系统性能,如平均负载,cpu和内存的消耗
  • top可以操作进程,如改变优先级(命令r)关闭进程(命令k)
  • ps主要是查看进程的,关注点在于查看需要查看的进程
  • top主要看cpu,内存使用情况,及占用资源最多的进程由高到低排序,关注点在于资源占用情况

sed 命令

sed 命令是利用脚本来处理文本文件。sed 可依照脚本的指令来处理、编辑文本文件。sed 主要用来自动编辑一个或多个文件、简化对文件的反复操作、编写转换程序等

可以将文件的第二行和第三行裁剪出来

sed –n ‘2,3p’ test.txt

在这里插入图片描述

sort 命令

sort命令可以实现对文件进行排序。
正序排序:sort -n test.txt
反序排序:sort –nr test.txt

在这里插入图片描述

tail和head命令

  • tail –n 2 file.log 可以查看文件的最后2行。
  • tail –f file.log可以实时查看文件的后边追加的部分。
  • head –n 2 file.log可以查看文件的开始2行。

在这里插入图片描述

netstat命令

参考文章:
Linux用netstat查看服务及监听端口详解

在Linux使用过程中,需要了解当前系统开放了哪些端口,并且要查看开放这些端口的具体进程和用户,可以通过netstat命令进行简单查询

netstat命令各个参数说明如下:

-a 或 -all            显示所有连线中的Socket。
-A                    <网络类型>或–<网络类型> 列出该网络类型连线中的相关地址。
-c 或 -continuous     持续列出网络状态。
-C 或 -cache          显示路由器配置的快取信息。
-e 或 -extend         显示网络其他相关信息。
-F 或 -fib            显示FIB。
-g 或 -groups         显示多重广播功能群组组员名单。
-h 或 -help           在线帮助。
-i 或 -interfaces     显示网络界面信息表单。
-l 或 -listening      显示监控中的服务器的Socket。
-M 或 -masquerade     显示伪装的网络连线。
-n 或 -numeric        直接使用IP地址,而不通过域名服务器。
-N 或 -netlink 或 -symbolic  显示网络硬件外围设备的符号连接名称。
-o 或 -timers         显示计时器。
-p 或 -programs       显示正在使用Socket的程序识别码和程序名称。
-r 或 -route          显示 Routing Table。
-s 或 -statistice 	  显示网络工作信息统计表。
-t 或 -tcp            显示 TCP 传输协议的连线状况。
-u 或 -udp            显示 UDP 传输协议的连线状况。
-v 或 -verbose        显示指令执行过程。
-V 或 -version        显示版本信息。
-w 或 -raw            显示RAW传输协议的连线状况。
-x 或 -unix           此参数的效果和指定”-A unix”参数相同。
–ip 或 -inet          此参数的效果和指定”-A inet”参数相同。

查看当前所有tcp端口使用情况:

[root@localhost ~]# netstat -ntlp   //查看当前所有tcp端口·
[root@localhost ~]# netstat -ntulp |grep 80   //查看所有80端口使用情况·
[root@localhost ~]# netstat -an | grep 3306   //查看所有3306端口使用情况· 
[root@localhost ~]# netstat -nlp |grep LISTEN   //查看当前所有监听端口·

查看当前所有tcp端口使用情况:
在这里插入图片描述

这里解释一下:
1、0.0.0.0代表本机上可用的任意地址。 比如0.0.0.0:135 表示本机上所有地址的135端口,这样多ip计算机就不用重复显示了。
2、TCP 0.0.0.0:80表示在所有的可用接口上监听TCP80端口
3、0.0.0.0为默认路由,即要到达不再路由表里面的网段的包都走0.0.0.0这条规则
4、127.0.0.1就是表示你本机ip地址的意思了。
5、[::]:21表示ipv6的21号端口的意思。
6、还有UDP的外部链接怎么都是呢?是网址的通配符,就是192.168.15.12,这个类型的整体描述。

解释一下状态(state):

LISTEN:
	(Listening for a connection.)
	侦听来自远方的TCP端口的连接请求
SYN-SENT:
	(Active; sent SYN. Waiting for a matching connection request after having sent a connection request.)
	再发送连接请求后等待匹配的连接请求
SYN-RECEIVED:
	(Sent and received SYN. Waiting for a confirming connection request acknowledgment after having both received and sent connection requests.)
	再收到和发送一个连接请求后等待对方对连接请求的确认
ESTABLISHED:
	(Connection established.)
	代表一个打开的连接
FIN-WAIT-1(Closed; sent FIN.)
	等待远程TCP连接中断请求,或先前的连接中断请求的确认
FIN-WAIT-2(Closed; FIN is acknowledged; awaiting FIN.)
	从远程TCP等待连接中断请求
CLOSE-WAIT:
	(Received FIN; waiting to receive CLOSE.)
	等待从本地用户发来的连接中断请求
CLOSING:
	(Closed; exchanged FIN; waiting for FIN.)
	等待远程TCP对连接中断的确认
LAST-ACK:
	(Received FIN and CLOSE; waiting for FIN ACK.)
	等待原来的发向远程TCP的连接中断请求的确认
TIME-WAIT:
	(In 2 MSL (twice the maximum segment length) quiet wait after close. )
	等待足够的时间以确保远程TCP接收到连接中断请求的确认
CLOSED:
	(Connection is closed.)
	没有任何连接状态

例如要查看当前Mysql默认端口80是否启动可以做如下操作:
在这里插入图片描述

netstat -ntlp【-p:显示正在使用Socket的程序识别码和程序名称】
netstat -ano来显示协议统计信息和TCP/IP网络连接
netstat -t/-u/-l/-r/-n【显示网络相关信息,-t:TCP协议,-u:UDP协议,-l:监听,-r:路由,-n:显示IP地址和端口号】
netstat -tlun【查看本机监听的端口】
netstat -an【查看本机所有的网络】
netstat -rn【查看本机路由表】
列出所有端口:netstat -a 
列出所有的TCP端口:netstat -at 
列出所有的UDP端口:netstat -au 
列出所有处于监听状态的socket:netstat -l 
列出所有监听TCP端口的socket:netstat -lt 
列出所有监听UDP端口的socket:netstat -lu 
找出程序运行的端口:netstat -ap | grep ssh 
找出运行在指定端口的进程:netstat -an | grep ‘:80

几个有用查找:

1.查找请求数前20个IP(常用于查找攻来源):
netstat -anlp|grep 80|grep tcp|awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -nr|head -n20 netstat -ant |awk '/:80/{split($5,ip,”:”);++A[ip[1]]}END{for(i in A) print A[i],i}' |sort -rn|head -n20 

2.用tcpdump嗅探80端口的访问看看谁最高
tcpdump -i eth0 -tnn dst port 80 -c 1000 | awk -F”.'{print $1″.”$2″.”$3″.”$4}' | sort | uniq -c | sort -nr |head -20 

3.查找较多time_wait连接
netstat -n|grep TIME_WAIT|awk '{print $5}'|sort|uniq -c|sort -rn|head -n20 

4.找查较多的SYN连接
netstat -an | grep SYN | awk '{print $5}' | awk -F: '{print $1}' | sort | uniq -c | sort -nr | more 

5.根据端口列进程
netstat -ntlp | grep 80 | awk '{print $7}' | cut -d/ -f1

一些练习

1、统计文本的行数

cat test1.txt | wc -l
wc -l test1.txt
wc -l test1.txt | awk '{print $1}'

2、查看所有TCP正在监听的端口

netstat -ntlp

	-n 或 -numeric          直接使用IP地址,而不通过域名服务器。    		
	-n:显示IP地址和端口号
	
	-t 或 -tcp 			    显示 TCP 传输协议的连线状况。					
	-t:TCP协议
	
	-l 或 -listening        显示监控中的服务器的Socket。     				
	-l:监听
	
	-p 或 -programs         显示正在使用Socket的程序识别码和程序名称

3、根据进程名查进程ID

ps -ef | grep“java” 找出进程名中包括java的所有进程

ps命令参数:
	-A :所有的进程均显示出来,与 -e 具有同样的效用;
	-a : 显示现行终端机下的所有进程,包括其他用户的进程;
	-u :以用户为主的进程状态 ;
	-x :通常与 a 这个参数一起使用,可列出较完整信息。
输出格式规划:
	-l :较长、较详细的将该PID 的的信息列出;
	-j :工作的格式 (jobs format)-f :做一个更为完整的输出。

jps -l 显示当前所有java进程pid。
主要用来输出JVM中运行的进程状态信息,一般使用jps命令来查看进程的状态信息,包括JVM启动参数等。

jps 用于显示当前所有java进程pid,jps经常使用的参数如下:
	-q:仅输出VM标识符,不包括class name,jar name,arguments in main method 
	-m:输出main method的参数 
	-l:输出完全的包名,应用主类名,jar的完全路径名 
	-v:输出jvm参数

4、查看电脑有几个CPU核数 /proc/cpuinfo

# cat /proc/cpuinfo | grep name | sort | uniq
# cat /proc/cpuinfo | grep "physical id"   
# cat /proc/cpuinfo | grep "physical id" | sort | uniq | wc -l
# cat /proc/cpuinfo | grep "core id" | sort | uniq | wc -l
# cat /proc/cpuinfo | grep "processor" | sort | uniq | wc -l

参考文章:
linux下怎么查看cpu核数

cpu信息记录在/proc/cpuinfo中,但信息比较多,怎么查出型号,物理cpu个数,逻辑cpu个数呢?

① 查看CPU型号

# cat /proc/cpuinfo | grep name | sort | uniq
	model name : Intel(R) Core(TM) i3-3240 CPU @ 3.40GHz

② 查看物理CPU数目

# cat /proc/cpuinfo | grep "physical id"   

在这里插入图片描述
所有physical id都是0,可知有1个物理CPU

也用管道排序去重后直接输出物理cpu的个数:

# cat /proc/cpuinfo | grep "physical id" | sort | uniq | wc -l

③ 查看核数和逻辑CPU数目

CPU核数和线程数可以用类似方法
在这里插入图片描述
由图可知:1颗物理CPU,双核4线程;

④ 如果不想自己算,也可以直接lscpu
在这里插入图片描述
只有1个cpu,2核,支持超线程,所有有4个逻辑CPU

5、查看物理内存大小 /proc/meminfo

想看到全部物理内存可以用dmidecode命令
dmidecode -t memory | grep Size: | grep -v "No Module Installed"
通过这个命令,不但能得到服务器总的内存大小,还可以知道服务器上具体插了几个内存条以及每条内存的大小,很好用
cat /proc/meminfo
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值