Linux常用的一些命令

156 阅读11分钟

1. 查看系统信息

1.1 系统信息显示

命令:uname -a  

[root@host-192-168-119-157 ~]# uname -a
Linux host-192-168-119-157 4.19.90-17.ky10.aarch64 #1 SMP Sun Jun 28 14:27:40 CST 2020 aarch64 aarch64 aarch64 GNU/Linux

打印出来的信息说明:

字段对应打印的值说明
操作系统类型 - Operating System TypeLinux显示操作系统类型,如Linux、Unix等。
主机名 - Hostnamehost-192-168-119-157显示当前主机的名称
内核版本 - Kernel Version4.19.90-17.ky10.aarch64显示当前系统正在使用的内核版本号
操作系统发行版版本号 - OS Distribution Version#1显示操作系统发行版的版本号。
操作系统发行版 - OS DistributionSMP显示操作系统的发行版信息,如Ubuntu、CentOS等。
操作系统架构 - Architectureaarch64显示操作系统的架构,如x86_64、i386等

1.2 显示操作系统发行版信息

命令:cat /etc/*release*

[root@host-192-168-119-157 ~]# cat /etc/*release*
Kylin Linux Advanced Server release V10 (Tercel)
NAME="Kylin Linux Advanced Server"
VERSION="V10 (Tercel)"
ID="kylin"
VERSION_ID="V10"
PRETTY_NAME="Kylin Linux Advanced Server V10 (Tercel)"
ANSI_COLOR="0;31"

Kylin Linux Advanced Server release V10 (Tercel)
cpe:/o:kylin:kylin:10:ga:server

1.4 通过hostnamectl来查询Linux系统信息

hostnamectl是一个用于管理系统主机名(hostname)的命令行工具,它通常在Linux系统中提供。它可以用来查询、设置和管理系统的主机名及其相关的信息。

[root@host-192-168-119-157 ~]# hostnamectl
   Static hostname: localhost.localdomain
Transient hostname: host-192-168-119-157
         Icon name: computer
        Machine ID: babb670e925f43c3bb3690df5c00a728
           Boot ID: d9d9db95973d49c9a87849a723b1a8ea
  Operating System: Kylin Linux Advanced Server V10 (Tercel)
            Kernel: Linux 4.19.90-17.ky10.aarch64
      Architecture: arm64

2.资源利用情况

2.1 实时查看系统资源使用情况

命令:top

image.png

打印出来的信息说明:

字段对应打印的值说明
第一行: 总体信息 top当前时间top - 16:26:08显示当前系统时间。
系统运行时间up 64 days显示系统自上次启动以来的运行时间。通常以天、小时、分钟的格式显示。up 64 days表示运行了64天。
当前登录用户数2 users当前登录系统的用户个数,2user表示2人
平均负载load average: 0.21, 0.06, 0.02显示系统在过去1分钟、5分钟、15分钟内的平均负载。负载值反映了系统在单位时间内处于可运行状态的平均进程数。
第二行: 任务统计 Tasks系统中各类任务数量的统计信息Tasks: 185 total, 2 running, 183 sleeping, 0 stopped, 0 zombie该系统总共有185个任务,其中有2个运行中的任务,183个睡眠中的任务,0个已停止的任务,0个僵尸进程。
第三行: CPU使用情况 %Cpu(s)us2.1 us用户空间占用CPU的百分比
sy1.7 sy内核空间占用CPU的百分比
ni0.0 ni优先级较低的进程用户态占用CPU的百分比
id96.1 idCPU空闲的百分比
wa0.0 waCPU等待I/O完成的百分比
hi0.1 hi硬中断占用CPU的百分比
si0.1 si软中断占用CPU的百分比
st0.0 st被虚拟机偷取的时间的百分比
第四行: 内存使用情况 KiB Mem总内存15764.8 total系统总可用的物理内存量
空闲内存13572.2 free当前已经被使用的内存量
已用内存730.6 used当前可用但未被使用的内存量
缓存/缓冲区1461.9 buff/cache被系统用作文件缓存和缓冲区的内存量
第五行: 系统交换空间使用情况 KiB Swap总交换空间4095.9 total系统总可用的交换空间大小
空闲交换空间4095.9 free当前可用但未被使用的交换空间大小
已用交换空间0 used当前已经被使用的交换空间大小
列表字段说明PID668进程ID
USERroot用户
PR20优先级(Priority),表示进程的静态优先级。Linux进程的优先级范围是-20到19,数值越小,优先级越高。
NI0优先级值(Nice Value),表示进程的动态优先级。通过renice命令可以调整进程的优先级值,数值越小,优先级越高。
VIRT273192虚拟内存(Virtual Memory),表示进程当前使用的虚拟内存大小,以千字节(KB)为单位。虚拟内存包括进程使用的物理内存(RES)和交换空间。
RES4868物理内存(Resident Memory),表示进程当前使用的物理内存大小,以千字节(KB)为单位。物理内存是指进程实际占用的内存空间。
SHR3736共享内存(Shared Memory),表示进程使用的共享内存的大小,以千字节(KB)为单位。共享内存是多个进程之间共享的内存区域,通常用于进程之间的通信。
SS当前进程状态(State),常见的状态包括:R(运行)、S(睡眠)、D(不可中断睡眠)、Z(僵尸)、T(停止)、<(高优先级)、N(低优先级)、+(位于前台)、L(锁住页)、s(会话领导者)、l(多线程)。
%CPU0.3CPU使用率
%MEM0.5内存使用率
TIME+0:06.98运行时间
COMMANDvmtoolsd进程名称

具体查看参数:

  • 第一行load average(CPU负载):三个参数分别指前1分钟、前5分钟、前15分钟的负载,数值越高负载越高,对比数值在增加的话则表明CPU负载越来越高。
  • 第三行%Cpu(s):看id的数值>20%则表示CPU运行流畅,<20%则表示CPU负载过重。还有us过高就是用户进出优化,sy过高则需要提高服务器性能,wa过高就要关注磁盘io了。
  • 按shift+p或者大写的P可以将cpu占用情况由大到小排列出来,找到占用cpu最大的那个线程,即可造成CPU过大的线程。

2.2 查看运行内存使用情况

命令:

free -g(单位GB)

free -m(单位MB)

free -m (以适合人类可读方式显示内存信息)

image.png

打印出来的信息说明:

字段说明
total内存总大小
used使用的内存
free除了 buff/cache 剩余的内存
Shared共享内存
Buff/cact缓冲、缓存区内存数
available真实剩余的可用内存数

2.3 查看磁盘空间使用情况

命令:df -h

image.png

查看发现根挂载点使用率100%,明明清理了大文件,但还是使用率100%,这就有可能是大量进程在占用内存使用率。

解决办法:

通过执行命令 lsof -n |grep deleted ,查看已经删除的文件,空间没有释放,kill掉pid。

扩展:

检查当前目录下,目录层级深度为1,空间占用情况:

du -h -x --max-depth=1

2.4显示当前系统网络连接和网络监听情况

命令:netstat -tulnp

image.png

打印出来的信息说明:

字段说明
Proto显示协议类型,如TCP或UDP
Recv-Q表示接收队列中的未读取字节数
Send-Q表示发送队列中的未发送字节数。
Local Address表示本地地址和端口号,即服务器正在监听的地址和端口。
Foreign Address表示远程地址和端口号,即与本地地址建立的连接的远程主机地址和端口。
State表示连接状态,如ESTABLISHED(已建立)、LISTEN(监听)、TIME_WAIT(等待关闭)等。
PID/Program name表示与连接或监听端口相关联的进程的PID和程序名称

由上面信息可知:

  • 是否建立连接 :通过State可知服务器是否与客户端建立了连接;
  • 监听端口 :通过Local Address列中,可以找到正在监听的端口号以及关联的IP地址,这些是服务器正在监听的端口
  • 进程关联 :通过PID/Program name列,可以查看与网络连接或监听端口相关联的进程的PID和程序名称,从而找到哪些进程在使用这些网络资源。

2.6 显示当前系统上运行的进程

命令:ps aux

图片

打印出来的信息说明:

字段说明
USER进程的用户名,表示该进程是由哪个用户启动的
PID进程ID,唯一标识系统中的每个进程
%CPUCPU使用率,表示进程占用CPU的百分比
%MEM内存使用率,表示进程占用内存的百分比
VSZ虚拟内存大小(Virtual Size),表示进程虚拟内存的大小,以KB为单位
RSS常驻内存集(Resident Set Size),表示进程实际使用的物理内存大小,以KB为单位
TTY控制终端,表示进程关联的控制终端
STAT进程状态,包括运行状态(R)、睡眠状态(S)、僵尸状态(Z)等
START进程启动时间,表示进程启动的时间点
TIMECPU时间,表示进程累计占用CPU的时间
COMMAND进程的命令行,表示启动进程时使用的命令和参数

扩展:

1)只显示包含指定进程名的行:ps aux | grep <进程名>

2)ps -ef 和 ps aux 两者都可用于列出系统的所有进程信息,但ps aux更适合快速查看当前系统中的进程情况。

3)获取占用内存前五的进程 ps -aux|sort -k4nr|head -n 5

image.png

3. 查看日志

3.1 通过journalctl命令查看系统日志

命令:journalctl

图片

3.2 通过tail查看系统日志

查看日志文件多少行代码:tail -n [行数] [日志文件]

4. 服务状态

4.1 查看指定服务的状态

命令:systemctl status <service>

比如查看防火墙的状态:

图片

4.2 查看已启用的服务

命令:systemctl list-unit-files --state=enabled

5. 网络状态

5.1 显示网络接口信息

命令:ifconfig 或 ip addr

图片

图片

5.2 测试网络连通性

命令格式:ping <IP地址或域名>

图片如果有类似以上的输出,则网络通畅了。

字段说明
icmp_seq数据包的序列号,每个数据包都有一个唯一的序列号,以便于识别
ttl数据包的生存时间(Time to Live),也称为跳数。它指示了数据包在网络中可以传递的最大路由器跳数。如果ttl值超过0而数据包还未到达目标,那么数据包会被丢弃
time往返时间(Round-Trip Time,RTT),表示从发送数据包到收到回应数据包所花费的时间,单位是毫秒(ms)

5.3 跟踪数据包的路由路径

命令格式:traceroute <IP地址或域名>

图片上面示例中,显示了从本地主机到目标主机(192.168.243.102)经过的1个路由器或中间节点的信息,包括它们的IP地址(192.168.243.102)、主机名(linux102)、以及数据包往返时间RTT(0.161 ms  0.132 ms  0.097 ms)。

5.4 查看网络IO

命令:nload

图片

nload 默认分为上下两块:

上半部分:Incoming,是进入网卡的流量;

下半部分:Outgoing,是从这块网卡出去的流量。

参数详情表:

参数描述
Curr当前流量
Avg平均流量
Min最小流量
Max最大流量
Ttl总和流量

Curr当前网速 ,MAX 最大网速。当 curr 接近Max 时为负荷比较高的状态

6. 检查安全性

6.1  查看当前开放的网络连接,检查是否有异常连接

命令:ss -tulwn

图片打印出来的信息说明:

字段说明
Netid显示网络标识符,表示套接字类型。常见的Netid值有:*  tcp :表示TCP协议,用于传输可靠的、面向连接的数据流。*  udp :表示UDP协议,用于传输不可靠的、面向数据报的数据。*  raw :表示原始套接字(Raw Socket),允许应用程序直接访问网络层的数据包。*  icmp :表示ICMP协议,用于在IP网络上发送控制消息。*  udplite :表示UDP Lite协议,类似于UDP,但提供了部分数据包校验和的功能。
State显示套接字的状态。常见的状态包括 LISTEN(正在监听传入连接)、 ESTAB(套接字已建立连接)、 CLOSED(套接字已关闭)、 TIME-WAIT(等待关闭的连接的套接字)等
Recv-Q接收队列中的字节数
Send-Q发送队列中的字节数
Local Address:Port本地地址和端口号
Peer Address远程地址和端口号