服务器常用命令
查看系统硬件设备信息
运行
sudo dmidecode | more
查看服务器硬件设备信息,包括BIOS信息(BIOS Information)、服务器信息(System Information)、CPU信息(Processor Information)、缓存信息(Cache Information)、内存信息(Physical Memory Array)、电源信息(System Power Supply)、内存设备(Memory Device)等。
查看系统CPU
查看CPU的统计信息
lscpu
输出
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 6
On-line CPU(s) list: 0-5
Thread(s) per core: 1
Core(s) per socket: 6
座: 1
NUMA 节点: 1
厂商 ID: GenuineIntel
CPU 系列: 6
型号: 79
型号名称: Intel(R) Xeon(R) CPU E5-2603 v4 @ 1.70GHz
步进: 1
CPU MHz: 1200.085
CPU max MHz: 1700.0000
CPU min MHz: 1200.0000
BogoMIPS: 3400.03
虚拟化: VT-x
L1d 缓存: 32K
L1i 缓存: 32K
L2 缓存: 256K
L3 缓存: 15360K
NUMA 节点0 CPU: 0-5
Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid dca sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch epb cat_l3 cdp_l3 intel_pt tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm cqm rdt_a rdseed adx smap xsaveopt cqm_llc cqm_occup_llc cqm_mbm_total cqm_mbm_local dtherm arat pln pts
查看每个CPU信息,如每个CPU的型号,主频等。
cat /proc/cpuinfo
运行命令查看CPU型号,为Intel(R) Xeon(R) CPU E5-2603 v4 @ 1.70GHz。
查看内存
查看内存使用量和交换区使用量
free -m
查看内存详细情况
cat /proc/meminfo // 或者vmstat -s
输出
MemTotal: 40779120 kB
MemFree: 323944 kB
MemAvailable: 38162436 kB
Buffers: 1284976 kB
Cached: 36028884 kB
SwapCached: 0 kB
Active: 19560888 kB
Inactive: 18538364 kB
Active(anon): 1214532 kB
Inactive(anon): 270932 kB
Active(file): 18346356 kB
Inactive(file): 18267432 kB
Unevictable: 0 kB
Mlocked: 0 kB
SwapTotal: 0 kB
SwapFree: 0 kB
Dirty: 0 kB
Writeback: 0 kB
AnonPages: 785432 kB
Mapped: 139012 kB
Shmem: 700072 kB
Slab: 1861424 kB
SReclaimable: 1663764 kB
SUnreclaim: 197660 kB
KernelStack: 9504 kB
PageTables: 17908 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 20389560 kB
Committed_AS: 3160860 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 443080 kB
VmallocChunk: 34358900732 kB
HardwareCorrupted: 0 kB
AnonHugePages: 36864 kB
CmaTotal: 0 kB
CmaFree: 0 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
DirectMap4k: 38408912 kB
DirectMap2M: 3305472 kB
DirectMap1G: 2097152 kB
原机内存大小为8G,在2018年7月,扩展到40G,实际上不到40G,为38.8G左右。
磁盘信息
查看硬盘和分区分布
lsblk
输出
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 5.5T 0 disk
├─sda1 8:1 0 476M 0 part /boot
├─sda2 8:2 0 61M 0 part
├─sda3 8:3 0 64M 0 part /boot/efi
├─sda4 8:4 0 1.4T 0 part /home
├─sda5 8:5 0 3.6T 0 part
│ ├─VolGroup0-datavol0 253:2 0 1T 0 lvm /mnt/vdisk0
│ ├─VolGroup0-datavol1 253:3 0 1T 0 lvm /mnt/vdisk1
│ ├─VolGroup0-datavol2 253:4 0 1T 0 lvm /mnt/vdisk2
│ └─VolGroup0-datavol3 253:5 0 540G 0 lvm /mnt/vdisk3
└─sda6 8:6 0 474.5G 0 part
├─centos-root 253:0 0 400G 0 lvm /
└─centos-swap 253:1 0 74.5G 0 lvm
sr0 11:0 1 1024M 0 rom
loop0 7:0 0 14.4G 0 loop /mnt/iso
可以看到目前服务器上的磁盘结构。如果重装系统,/home(sda4)可以保留,新系统在安装时,不必要再分/home区。直接将旧系统的/home挂载到新系统上即可。
目前磁盘已采用LVM技术。
LVM是(Logical Volume Manager) 逻辑卷管理的简写,它是Linux环境下对磁盘分区进行管理的一种机制。LVM是建立在硬盘和分区之上的一个逻辑层,屏蔽了底层磁盘布局,便于动态调整磁盘容量来提高磁盘分区管理的灵活性。它可以将一个或多个底层块设备组织成一个逻辑设备的卷组,管理员可以在卷组上随意创建逻辑卷组(logical volumes),并进一步在逻辑卷组上创建文件系统,管理员通过LVM可以方便的调整存储卷组的大小,并且可以对磁盘存储按照组的方式进行命名、管理和分配 。
查看更详细的信息
sudo fdisk -l
查看各分区使用情况
df -h
查看服务器系统信息
cat /etc/*release
输出
CentOS Linux release 7.7.1908 (Core)
NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"
CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"
CentOS Linux release 7.7.1908 (Core)
CentOS Linux release 7.7.1908 (Core)
系统为CentOS 7.7。
查看系统主机名
hostname
查看网卡
查看网卡硬件信息
lspci | grep -i 'eth'
输出
01:00.0 Ethernet controller: Broadcom Inc. and subsidiaries NetXtreme BCM5720 2-port Gigabit Ethernet PCIe
01:00.1 Ethernet controller: Broadcom Inc. and subsidiaries NetXtreme BCM5720 2-port Gigabit Ethernet PCIe
02:00.0 Ethernet controller: Broadcom Inc. and subsidiaries NetXtreme BCM5720 2-port Gigabit Ethernet PCIe
02:00.1 Ethernet controller: Broadcom Inc. and subsidiaries NetXtreme BCM5720 2-port Gigabit Ethernet PCIe
查看系统的所有网络接口
ifconfig -a
可以看到连接网络的那个端口,假设是em2,可以查看该端口的IPV4、IPV6、子网掩码等信息。如果要详细查看如果某个网络接口的详细信息,比如em2的详细参数和指标
ethtool em2
输出
Settings for em2:
Supported ports: [ TP MII ]
Supported link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Half 1000baseT/Full # 支持千兆半双工,全双工模式
Supported pause frame use: No
Supports auto-negotiation: Yes # 支持自适应模式,一般都支持
Advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Half 1000baseT/Full
Advertised pause frame use: Symmetric
Advertised auto-negotiation: Yes # 默认使用自适应模式
Advertised FEC modes: Not reported
Link partner advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
Link partner advertised pause frame use: No
Link partner advertised auto-negotiation: Yes
Link partner advertised FEC modes: Not reported
Speed: 1000Mb/s # 现在网卡的速度是1000Mb
Duplex: Full # 全双工
.....
Link detected: yes # 表示有网线连接,和路由是通的
查看显示去往192.168.1.102的所有HTTP会话信息
sudo tcpdump -ni em1 'dst 192.168.1.102 and tcp and port 8080'
显示来源IP或者目的IP为192.168.1.102的网络通信
sudo tcpdump -i eth0 host 192.168.1.102
查看路由器列表
route -n
查看所有监听端口
netstat -lntp
查看所有已经建立的连接。
netstat -antp
查看网络统计信息
netstat -s
进程
查看系统所有进程
ps -ef
显示所有进程的详细信息
ps aux
显示某一用户的进程列表
ps -f -u username
实时显示进程状态
top
按q退出
列出当前的进程,以及它们的树状结构
pstree
结束进程,PID为Process ID
kill PID
查看系统信号变量
kill -l
事实上,还有一个比较酷炫的命令是htop,安装方法是sudo yum install htop,在终端输入:
htop
遇到顽固的进程,使出必杀技
kill -9 PID
资源统计
查看当前目录大小
du -sh
查看系统运行时间、用户数、负载
uptime
系统常用指令集合
cpu.sh — CPU统计信息指令
#/bin/bash
# 限制某个线程的cpu使用率
sudo cpulimit -p pid -l 50
ps -eo %cpu,args | grep -m1 PROCESS | awk '{print $1}'
# 将当前进程按照memory和cpu排序
ps aux --sort=%mem,%cpu
# 按照cpu使用率排序
ps -e -o pcpu,cpu,nice,state,cputime,args --sort pcpu | sed "/^ 0.0 /d"
# 查看当前系统的物理cpu个数
grep "processor" /proc/cpuinfo | wc -l
grep -c -e '^cpu[0-9]\+' /proc/stat
# 查看当前cpu型号
grep "model name" /proc/cpuinfo
# 查看当前cpu信息
cat /proc/cpuinfo
# 查看当前系统的位数
grep -q '\
' /proc/cpuinfo && echo 64 bits || echo 32 bits
getconf LONG_BIT | grep '64'
java -version
# 查看当前系统的cpu频率
awk -F": " '/cpu MHz\ */ { print "Processor (or core) running speed is: " $2 }' /proc/cpuinfo ; dmidecode | awk -F": " '/Current Speed/ { print "Processor real speed is: " $2 }'
# 查看每个cpu每个进程的cpu使用率
ps ax -L -o pid,tid,psr,pcpu,args | sort -nr -k4| head -15 | cut -c 1-90
# 查看当前中断
cat /proc/interrupts
# 查看多个处理器的使用率相关信息
mpstat –P ALL 1
# 每个物理CPU中Core的个数:
cat /proc/cpuinfo | grep "cpu cores" | uniq | awk -F: '{print $2}'
# 是否为超线程?
# 如果有两个逻辑CPU具有相同的”core id”,那么超线程是打开的。
# 每个物理CPU中逻辑CPU(可能是core, threads或both)的个数:
cat /proc/cpuinfo | grep "siblings"
# /proc/stat 文件中有一行记录的机器从启动依赖,各个中断序号发生中断的次数。
# 这一行以intr开头,接下来的第一个数字是总的中断数目,之后就是分别的中断数目,从0开始。
cat /proc/stat | grep intr
disk.sh — 磁盘相关统计指令
#/bin/bash
# 按照目录大小排序战士最前面15个目录或者文件
du -xB M --max-depth=2 /var | sort -rn | head -n 15
# 列出当前所有子目录的文件大小
du -h --max-depth=1
# 列出当前文件或者目录最大的10个
du -s * | sort -n | tail
# 按照目录大小从大到小排序
du -b --max-depth 1 | sort -nr | perl -pe 's{([0-9]+)}{sprintf "%.1f%s", 1>=2∗∗30?(1/230, "G"): 1>=2∗∗20?(1/220, "M"): 1>=2∗∗10?(1/210, "K"): ($1, "")}e'
# 列出path这个目录的文件树
du -h /path | sort -h
# 每隔60s监控对应目录的文件大小变化
watch -n60 du /var/log/messages
# 递归删除当前目录下所有子目录中的.svn目录
find . -type d -name '.svn' -print0 | xargs -0 rm -rdf
# 列出当前磁盘的使用情况
df -P | column -t
# 监控磁盘的使用情况
watch -d -n 5 df
# 列出当前inode的使用情况
df -i
# 按照每个磁盘使用量从高到低排序
df -h | grep -v ^none | ( read header ; echo "$header" ; sort -rn -k 5)
# 查看物理磁盘的使用情况
df -x tmpfs | grep -vE "(gvfs|procbususb|rootfs)"
# 查看当前所有磁盘的大小和使用量
df -H
# 查看所有分区使用情况
fdisk -l /dev/sda
# 显示系统所有的分区或给定的分区
fdisk -l
# 显示时,显示的是扇区数不是柱面数
fdisk -u
# 显示指定partition的block数
fdisk -s partition
# 查看磁盘的读写容量
iostat -m -d /dev/sda1
# 测试磁盘的读写速度
hdparm -t /dev/sda
# 查看某个文件的所有链接
find -L / -samefile /path/to/file -exec ls -ld {} +
# 查看最大的5个文件
find . -type f -exec ls -s {} \; | sort -n -r | head -5
# 查看365天前的文件并删除
find ./ -type f -mtime +365 -exec rm -f {} \;
# 查看大于100M的文件
find . -type f -size +100M
net.sh — 网络信息统计指令
#/bin/bash
# 查看http请求的header
tcpdump -s 1024 -l -A -n host 192.168.9.56
tcpdump -s 1024 -l -A src 192.168.9.56 or dst 192.168.9.56
sudo tcpdump -A -s 1492 dst port 80
# 本地网络中IP地址为192.168.0.5的主机现在与外界通信的情况
sudo tcpdump -i eth0 src host 192.168.0.5
# 查看网卡eth0的http请求的tcp包
tcpdump -i eth0 port http
tcpdump -i eth0 port http or port smtp or port imap or port pop3 -l -A | egrep -i 'pass=|pwd=|log=|login=|user=|username=|pw=|passw=|passwd=|password=|pass:|user:|userna me:|password:|login:|pass |user '
# 查看tcp,upd,icmp非ssh的包
tcpdump -n -v tcp or udp or icmp and not port 22
# 查看http请求的request 包
sudo tcpdump -i eth0 port 80 -w -
# 过滤http响应的get host头信息
sudo tcpdump -i en1 -n -s 0 -w - | grep -a -o -E "GET \/.*|Host\: .*"
# DNS查询请求响应包
sudo tcpdump -i en0 'udp port 53'
# nmap -sP指定使用Ping echo 进行扫描 /24查看目的网络有多少主机处于运行状态
nmap -sP 192.168.0.1
nmap -sP 192.168.0.0/24
nmap -O www.baidu.com
# Netstat主要用于Linux/Unix主机察看自身的网络状况,如开启的端口、在为哪些用户服务以及服务的状态
netstat -a
netstat -nlp
# netcat扫描机器开放的端口
nc -z -v -n 172.31.100.7 21-25
# netcat 命令会连接开放端口21并且打印运行在这个端口上服务的banner信息。
nc -v 172.31.100.7 21
# 输出网络的路由表
route -n
# 显示结果包括服务器已经运行了多长时间,有多少登陆用户和对服务器性能的总体评估(load average)。
uptime
# 监控 eth1 的网卡的流量
iftop -i eth1
# 以位元组(bytes 即字节)为单位显示流量(预设是位元 bits):
iftop -B
# 直接显示 IP, 不进行DNS 反解:
iftop -n
# 直接显示连接埠编号, 不显示服务名称:
iftop -N
# 显示某个网段进出封包流量
iftop -F 192.168.1.0/24 or 192.168.1.0/255.255.255.0
# 网络流量实时监控工具之nload,查看网卡eth0的流量
nload -n eth0
# 查看各个网卡的流量
nload -h
# IPTraf是一个网络监控工具,功能比nload更强大,可以监控所有的流量,IP流量,按协议分的流量,还可以设置过滤器
iptraf
# 查看网络接口当前配置与接口命名:
ifconfig
# 打开(up)或关闭(down)适配器
ifconfig <网络名>
# 为适配器分配IP地址:
ifconfig <网络名>
# 为适配器分配第二个IP地址:
ifconfig <网络名:实例数>
# 显示某个网络适配器的驱动信息,适用于查询软件兼容性的情况:
ethtool -i eth0
# 显示网络数据:
ethtool -S
# 设置适配器连接速度(Mbps)
ethtool speed <10|100|1000>
# wget
wget -S --spider http://osswin.sourceforge.net/ 2>&1 | grep Mod
# 查看mac地址
cat /sys/class/net/*/address
# 查看eth0的ip
ifconfig eth0 | awk '/inet addr/ {split ($2,A,":"); print A[2]}'
# curl 查看页面对应的domail name
curl -s http://en.m.wikipedia.org/wiki/List_of_Internet_top-level_domains | sed -n '//{s/<[^>]*>//g;p}'
# talnet
telnet localhost 6666
# 查看所有的网络接口
awk '{print $1}' /proc/net/dev|grep :|sed "s/:.*//g"
# 查看DNS server版本好
nslookup -q=txt -class=CHAOS version.bind NS.PHX5.NEARLYFREESPEECH.NET
system.sh — 系统信息相关指令
#/bin/bash
# 查看当前系统load
uptime
# 查看系统状态和每个进程的系统资源使用状况
top
# 可视化显示CPU的使用状况
htop
# 查看每个CPU的负载信息
mpstat -P ALL 1
# 每隔1秒查看磁盘IO的统计信息
iostat -xkdz 1
# 每隔一秒查看虚拟内存的使用信息
vmstat 1
# 查看内存使用统计信息
free
# 查看网络使用信息
nicstat -z 1
# 类似vmstat的显示优化的工具
dstat 1
# 查看系统活动状态,比如系统分页统计,块设备IO统计等
sar
# 网络连接状态查看
netstat -s
# 进程资源使用信息查看
pidstat 1
pidstat -d 1
# 查看某个进程的系统调用信息 -p后面是进程id,-tttT 进程系统后的系统调用时间
strace -tttT -p 12670
# 统计IO设备输入输出的系统调用信息
strace -c dd if=/dev/zero of=/dev/null bs=512 count=1024k
# tcpdump 查看网络数据包
tcpdump -nr /tmp/out.tcpdump
# 块设备的读写事件信息统计
btrace /dev/sdb
# iotop查看某个进程的IO操作统计信息
iotop -bod5
# slabtop 查看内核 slab内存分配器的使用信息
slabtop -sc
# 系统参数设置
sysctl -a
# 系统性能指标统计信息
perf stat gzip file1
# 系统cpu活动状态查看
perf record -a -g -F 997 sleep 10
process.sh — 进程统计相关指令
ps查看当前系统执行的线程列表,进行瞬间状态,不是连续状态,连续状态需要使用top名称查看 更多常用参数请使用 man ps查看
ps
显示所有进程详细信息
ps aux
-u 显示某个用户的进程列表
ps -f -u www-data
-C 通过名字或者命令搜索进程
ps -C apache2
--sort 根据进程cpu使用率降序排列,查看前5个进程 -pcpu表示降序 pcpu升序
ps aux --sort=-pcpu | head -5
-f 用树结构显示进程的层次关系,父子进程情况下
ps -f --forest -C apache2
显示一个父进程的所有子进程
ps -o pid,uname,comm -C apache2
ps --ppid 2359
显示一个进程的所有线程 -L 参数
ps -p 3150 -L
显示进程的执行时间 -o参数
ps -e -o pid,comm,etime
查看系统的线程数
nproc
watch命令可以用来实时捕捉ps显示进程
watch -n 1 'ps -e -o pid,uname,cmd,pmem,pcpu --sort=-pmem,-pcpu | head -15'
jobs 查看后台运行的进程 jobs命令执行的结果,+表示是一个当前的作业,减号表是是一个当前作业之后的一个作业,jobs -l选项可显示所有任务的PID,jobs的状态可以是running, stopped, Terminated,但是如果任务被终止了(kill),shell 从当前的shell环境已知的列表中删除任务的进程标识;也就是说,jobs命令显示的是当前shell环境中所起的后台正在运行或者被挂起的任务信息
jobs
查看后台运营的进程号
jobs -p
查看现在被终止或者退出的进程号
jobs -n
kill命令 终止一个前台进程可以使用Ctrl+C键 kill 通过top或者ps获取进程id号 kill [-s 信号 | -p ] [ -a ] 进程号 ...
发送指定的信号到相应进程。不指定型号将发送SIGTERM(15)终止指定进程。 关闭进程号12的进程
kill 12
等同于在前台运行PID为123的进程时按下Ctrl+C键
kill -2 123
如果任无法终止该程序可用“-KILL” 参数,其发送的信号为SIGKILL(9) ,将强制结束进程
kill -9 123
列出所有信号名称
HUP 1 终端断线
INT 2 中断(同 Ctrl + C)
QUIT 3 退出(同 Ctrl + \)
TERM 15 终止
KILL 9 强制终止
CONT 18 继续(与STOP相反, fg/bg命令)
STOP 19 暂停(同 Ctrl + Z)
kill -l
得到指定信号的数值
kill -l KILL
杀死指定用户所有进程
kill -u peidalinux
kill -9 $(ps -ef | grep peidalinux)
将后台中的命令调至前台继续运行 将进程123调至前台执行
fg 123
将一个在后台暂停的命令,变成继续执行
bg 123
该命令可以在你退出帐户/关闭终端之后继续运行相应的进程。nohup就是不挂起的意思 下面输出被重定向到myout.file文件中
nohup command > myout.file 2>&1 &
at:计划任务,在特定的时间执行某项工作,在特定的时间执行一次。
格式:at HH:MM YYYY-MM-DD //HH(小时):MM(分钟) YYYY(年)-MM(月份)-DD(日)
HH[am pm]+D(天) days //HH(小时)[am(上午)pm(下午)]+days(天)
at 12:00(时间) //at命令设定12:00执行一项操作
# at>useradd aaa //在at命令里设定添加用户aaa
# ctrl+d //退出at命令
# tail -f /etc/passwd //查看/etc/passwd文件后十行是否增加了一个用户aaa
计划任务设定后,在没有执行之前我们可以用atq命令来查看系统没有执行工作任务。
atq
启动计划任务后,如果不想启动设定好的计划任务可以使用atrm命令删除。
atrm 1 //删除计划任务1
pstree命令:列出当前的进程,以及它们的树状结构 格式:pstree [选项] [pid|user]
pstree
nice命令:改变程序执行的优先权等级 应用程序优先权值的范围从-20~19,数字越小,优先权就越高。一般情况下,普通应用程序的优先权值(CPU使用权值)都是0,如果让常用程序拥有较高的优先权等级,自然启动和运行速度都会快些。需要注意的是普通用户只能在0~19之间调整应用程序的优先权值,只有超级用户有权调整更高的优先权值(从-20~19)。
nice [-n <优先等级>][--help][--version][命令]
nice -n 5 ls
sleep命令:使进程暂停执行一段时间
date;sleep 1m;date
renice命令 renice命令允许用户修改一个正在运行进程的优先权。 利用renice命令可以在命令执行时调整其优先权。
其中,参数number与nice命令的number意义相同。(1) 用户只能对自己所有的进程使用renice命令。(2) root用户可以在任何进程上使用renice命令。(3) 只有root用户才能提高进程的优先权
renice -5 -p 5200 #PID为5200的进程nice设为-5
pmap命令用于显示一个或多个进程的内存状态。其报告进程的地址空间和内存状态信息 #pmap PID
pmap 20367
top 动态查看进程的变化。
top
-
7*24H在线售后
-
高可用资源,安全稳定
-
1v1专属客服对接
-
无忧退款试用保障