02:linux常用命令
1.1 linux查看系统基本参数常用命令
1、查看磁盘
[root@linux-node1 ~]# df -hl Filesystem Size Used Avail Use% Mounted on /dev/mapper/cl-root 37G 2.9G 35G 8% / devtmpfs 898M 0 898M 0% /dev tmpfs 910M 16K 910M 1% /dev/shm tmpfs 910M 34M 877M 4% /run tmpfs 910M 0 910M 0% /sys/fs/cgroup /dev/sda1 1014M 179M 836M 18% /boot tmpfs 182M 0 182M 0% /run/user/0
[root@linux-node1 ~]# df -h /home Filesystem Size Used Avail Use% Mounted on /dev/mapper/cl-root 37G 2.9G 35G 8% /
[root@linux-node1 /]# du -sh ./*|grep G 2.2G ./usr 1.2G ./home
[root@linux-node1 /]# find / -type f -size +10M -a -size -100M -print0 | xargs -0 du -h | sort -nr 85M /usr/bin/docker 80M /var/lib/rpm/Packages 48M /usr/bin/containerd 47M /boot/initramfs-0-rescue-8b956f09fe0549c4b6182589acceab30.img find / -type f -size +10M -a -size -100M # 查找根文件夹下大于 10M小于 100M
2、查看CPU
[root@linux-node1 aaa]# killcpu.sh # 编写一个shell脚本耗尽cpu #!/bin/bash i=1 while true do i=i+100; i=100 done [root@linux-node1 aaa]# nohup ./killcpu.sh & # 后台运行脚本测试
[root@linux-node1 /]# top top - 03:24:29 # 表示当前时间 up 4 days, 22:56, # 系统已经运行时间 2 users, # 当前登录用户数 load average: 0.01, 0.03, 0.05 # 系统负载,即任务队列的平均长度。 三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值 Tasks: 123 total(进程总数), 2 running(正在运行进程数), 121 sleeping, 0 stopped, 0 zombie %Cpu(s): 0.0 us, 0.0 # 用户空间占用CPU百分比 sy, 0.0 # 内核空间占用CPU百分比 ni,100.0 # 用户进程空间内改变过优先级的进程占用CPU百分比 id, 0.0 # 空闲CPU百分比 wa, 0.0 # 等待输入输出的CPU时间百分比 hi, 0.0 # 硬中断(Hardware IRQ)占用CPU的百分比 si, 0.0 # 软中断(Software Interrupts)占用CPU的百分比 st KiB Mem : 1863224 total(物理内存总量), 219592 free, 498732 used, 1144900 buff/cache # KiB Swap: 2097148 total(交换区总量), 2094580 free, 2568 used. 1043628 avail Mem # 进程id 进程所有者 优先级 PID USER PR RES SHR S %CPU %MEM TIME+ COMMAND 6583 root 20 5156 3796 S 0.3 0.3 10:54.90 vmtoolsd 7284 root 20 2252 1580 R 0.3 0.1 0:00.03 top 1 root 20 3844 2436 S 0.0 0.2 2:04.28 systemd
[root@linux-node1 /]# yum install sysstat # 安装sar工具 [root@linux-node1 /]# sar -u 1 5 # 每1秒采集一次CPU使用率,共采集5次 03:58:40 AM CPU %user %nice %system %iowait %steal %idle 03:58:41 AM all 0.00 0.00 3.61 0.00 0.00 96.39 03:58:42 AM all 0.00 0.00 0.00 0.00 0.00 100.00 03:58:43 AM all 0.00 0.00 0.00 0.00 0.00 100.00 Average: all 0.00 0.00 0.62 0.00 0.00 99.38
[root@linux-node1 ~]# cat /proc/cpuinfo processor : 0 # 系统中逻辑处理核的编号 vendor_id : GenuineIntel # CPU制造商 cpu family : 6 # CPU产品系列代号 model : 142 # CPU属于其系列中的哪一代的代号 model name : Intel(R) Core(TM) i7-7500U CPU @ 2.70GHz # CPU属于的名字及其编号、标称主频 stepping : 9 # CPU属于制作更新版本 cache size : 4096 KB # CPU二级缓存大小 physical id : 0 # 单个CPU的标号 siblings : 1 # 单个CPU逻辑物理核数 cpu cores : 1 # cpu个数
[root@linux-node1 ~]# cat /proc/cpuinfo processor : 0 # 系统中逻辑处理核的编号 vendor_id : GenuineIntel # CPU制造商 cpu family : 6 # CPU产品系列代号 model : 142 # CPU属于其系列中的哪一代的代号 model name : Intel(R) Core(TM) i7-7500U CPU @ 2.70GHz # CPU属于的名字及其编号、标称主频 stepping : 9 # CPU属于制作更新版本 cache size : 4096 KB # CPU二级缓存大小 physical id : 0 # 单个CPU的标号 siblings : 1 # 单个CPU逻辑物理核数 cpu cores : 1 # cpu个数
3、查看内存
#!/bin/bash mkdir /tmp/memory mount -t tmpfs -o size=1024M tmpfs /tmp/memory dd if=/dev/zero of=/tmp/memory/block sleep 3600 rm /tmp/memory/block umount /tmp/memory rmdir /tmp/memory # 1. 挂载tmpfs文件系统最大1024M到 /tmp/memory 文件夹中 # mount -t tmpfs -o size=1024M tmpfs /tmp/memory # 2. dd if=/dev/zero of=/tmp/memory/block # dd:用指定大小的块拷贝一个文件 # if=/dev/zero (指定拷贝的源文件为/dev/zero) # of=/tmp/memory/block (将文件拷贝到 /tmp/memory/block 文件夹)
[root@linux-node1 ~]# free -m total used free shared buff/cache available Mem: 1819 486 190 32 1142 1020 Swap: 2047 2 2045 总内存 已使用 可用空间 多进程共享内存 磁盘缓存大小
[root@linux-node1 ~]# cat /proc/meminfo MemTotal: 1863224 kB MemFree: 195568 kB MemAvailable: 1044924 kB Buffers: 0 kB
[root@linux-node1 ~]# vmstat -s 1863224 K total memory 497780 K used memory 599272 K active memory 620812 K inactive memory 188652 K free memory 0 K buffer memory 1176792 K swap cache 2097148 K total swap 2568 K used swap 2094580 K free swap 608294 non-nice user cpu ticks 625 nice user cpu ticks 539067 system cpu ticks 63631049 idle cpu ticks 15051 IO-wait cpu ticks 0 IRQ cpu ticks 10324 softirq cpu ticks 0 stolen cpu ticks 420669 pages paged in 3118282 pages paged out 7 pages swapped in 627 pages swapped out 73440819 interrupts 111933117 CPU context switches 1574604468 boot time 1097163 forks
[root@linux-node1 shdir]# vmstat procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 1 0 2568 181696 0 1057272 0 0 9 52 107 155 2 1 97 0 0 r # 表示运行队列(就是说多少个进程真的分配到CPU),当这个值超过了CPU数目,就会出现CPU瓶颈了。 b # 表示阻塞的进程,这个不多说,进程阻塞,大家懂的。 swpd # 虚拟内存已使用的大小,如果大于0,表示你的机器物理内存不足了 free #空闲的物理内存的大小,我的机器内存总共8G,剩余3415M。 buff # 用来存储目录里面有什么内容,权限等的缓存,我本机大概占用300多M cache # cache直接用来记忆我们打开的文件,给文件做缓冲 si # 每秒从磁盘读入虚拟内存的大小,如果这个值大于0,表示物理内存不够用或者内存泄露了,要查找耗内存进程解决掉。 so # 每秒虚拟内存写入磁盘的大小,如果这个值大于0,表示物理内存不够用或者内存泄露了,要查找耗内存进程解决掉。 bi # 块设备每秒接收的块数量,当处理拷贝大量数据(2-3T)的机器上看过可以达到140000/s,磁盘写入速度差不多140M每秒 bo # 块设备每秒发送的块数量,例如我们读取文件,bo就要大于0。bi和bo一般都要接近0,不然就是IO过于频繁,需要调整。 in # 每秒CPU的中断次数,包括时间中断 cs # 每秒上下文切换次数,例如我们调用系统函数,就要进行上下文切换,线程的切换,也要进程上下文切换,这个值要越小越好 us # 用户CPU使用百分比 sy # 系统CPU使用百分比 id # idle(空闲CPU百分比),一般来说,id + us + sy = 100,一般我认为id是空闲CPU使用率,us是用户CPU使用率,sy是系统CPU使用率。 wt # 等待IO CPU时间(大于0代表系统资源不足)
4、查看负载
'''那么什么是系统平均负载呢?''' # 1. 系统平均负载是指在特定时间间隔内运行队列中的平均进程数。 # 2. 如果每个CPU内核的当前活动进程数不大于3的话,那么系统的性能是良好的。 # 3. 如果每个CPU内核的任务数大于5,那么这台机器的性能有严重问题。 # 4. 如果你的linux主机是1个双核CPU的话,当Load Average 为6的时候说明机器已经被充分使用了。 # 5. 1可以被认为是最优的负载值。负载是会随着系统不同改变得。 # 6. 单CPU系统1-3和SMP系统6-10都是可能接受的。
[root@linux-node1 ~]# uptime 21:03:50 up 5 days, 5:14, 2 users, load average: 0.02, 0.04, 0.05 '''显示内容说明:''' 10:19:04 # 系统当前时间 up 257 days, 18:56 # 主机已运行时间,时间越大,说明你的机器越稳定。 12 user # 用户连接数,是总连接数而不是用户数 load average # 系统平均负载,统计最近1,5,15分钟的系统平均负载
[root@linux-node1 ~]# cat /proc/loadavg 0.00 0.01 0.05 2/384 4482 # 0.00 0.01 0.05 表示最近1分钟,5分钟,15分钟 系统的平均负载; 系统负载越高,代表CPU越繁忙; # 2/384 2代表此时运行队列中的进程个数;384 代表系统中进程的总数 # 4482 代表到此为止创建的最后一个进程的ID.
5、进程基础命令
[root@linux-node1 ~]# ps -ef|grep python root 6852 1 0 Nov23 ? 00:01:23 /usr/bin/python2 -Es /usr/sbin/tuned -l -P root 37276 1 0 Nov24 ? 00:00:25 /usr/bin/python /usr/bin/salt-master root 37285 37276 0 Nov24 ? 00:00:00 /usr/bin/python /usr/bin/salt-master
[root@linux-node1 ~]# ps -aux | grep python root 6852 0.0 0.8 573820 16424 ? Ssl Nov23 1:23 /usr/bin/python2 -Es /usr/sbin/tuned -l -P root 37276 0.0 2.1 389128 40640 ? Ss Nov24 0:25 /usr/bin/python /usr/bin/salt-master root 37285 0.0 1.0 306196 20276 ? S Nov24 0:00 /usr/bin/python /usr/bin/salt-master
[root@linux-node1 /]# top top - 03:24:29 # 表示当前时间 up 4 days, 22:56, # 系统已经运行时间 2 users, # 当前登录用户数 load average: 0.01, 0.03, 0.05 # 系统负载,即任务队列的平均长度。 三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值 Tasks: 123 total(进程总数), 2 running(正在运行进程数), 121 sleeping, 0 stopped, 0 zombie %Cpu(s): 0.0 us, 0.0 # 用户空间占用CPU百分比 sy, 0.0 # 内核空间占用CPU百分比 ni,100.0 # 用户进程空间内改变过优先级的进程占用CPU百分比 id, 0.0 # 空闲CPU百分比 wa, 0.0 # 等待输入输出的CPU时间百分比 hi, 0.0 # 硬中断(Hardware IRQ)占用CPU的百分比 si, 0.0 # 软中断(Software Interrupts)占用CPU的百分比 st KiB Mem : 1863224 total(物理内存总量), 219592 free, 498732 used, 1144900 buff/cache # KiB Swap: 2097148 total(交换区总量), 2094580 free, 2568 used. 1043628 avail Mem # 进程id 进程所有者 优先级 PID USER PR RES SHR S %CPU %MEM TIME+ COMMAND 6583 root 20 5156 3796 S 0.3 0.3 10:54.90 vmtoolsd 7284 root 20 2252 1580 R 0.3 0.1 0:00.03 top 1 root 20 3844 2436 S 0.0 0.2 2:04.28 systemd
[root@linux-node1 ~]# pgrep -ln sshd 32946 sshd
[root@linux-node1 ~]# pstree -apnh|grep sshd |-sshd,6851 -D | `-sshd,32946 | `-grep,39535 --color=auto sshd
[root@linux-node1 ~]# pidof sshd 32946 6851
[root@linux-node1 ~]# kill -9 2233 # 杀死进程2233 [root@linux-node1 ~]# pkill zabbix # 杀死zabbix进程
[root@linux-node1 ~]# netstat -anptu|grep 22 tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 6851/sshd tcp 0 0 192.168.56.11:22 192.168.56.1:62530 ESTABLISHED 32946/sshd: root@pt tcp6 0 0 :::22 :::* LISTEN 6851/sshd
1.2 linux文件操作常用指令
1、系统命令
runlevel # 查看当前的运行级别 systemctl status firewalld # 开启网络服务功能 stop # 关闭 restart # 重启 reload # 重载 reboot # 重启 halt # 关机 poweroff # 关机
2、查看文件常用指令
cat # 在命令提示符下查看文件内容
more # 在命令提示符中分页查看文件内容
less # 命令行中查看文件可以上下翻页反复浏览
head # 命令行中查看文件头几行
tail # 命令行中查看文件尾几行
wc # 统计文件的单词数 行数等信息
3、目录管理常用指令
pwd # 查看你当前所在的目录
cd # 切换目录
ls # 查看显示目录的内容
du # 统计目录和文件空间的占用情况
mkdir # 创建新目录
rmdir # 删除空目录
touch # 创建文件
rm # 删除文件
ln # 创建硬链接
ln -s # 创建软链接
cp # 复制文件或目录
mv # 移动文件或目录
which # 查看linux命令所在的目录
4、账号与权限
'''1.组管理'''
groupadd group_name # 创建一个新用户组
groupdel group_name # 删除一个用户组
groupmod -n new_group_name old_group_name # 重命名一个用户组
'''2.用户管理'''
useradd zhangsan # 创建账户张三
passwd zhangsan # 给用户设置密码
userdel -r zhangsan # 删除张三及他的宿主目录
'''3.用户组管理'''
gpasswd -a zhangsan root # 将张三用户加入root组
groups zhangsan # 确认zhangsan用户在root组
gpasswd -d lisi root # 将李zhangsan户从root组中删除
'''4.权限管理'''
chown -R zhangsan /aaa # 将文件夹/aaa的多有者修改为zhangsan
chown root:root /aaa # 将/aaa文件夹的属主和属组都改成root
chmod 777 /aaa # 给文件夹文件/aaa设置权限为777
1.3 linux网络故障排查
1、链路是否连通
目的:检查网卡与网络是否物理连通,网线是否插好且连接可用,很多时候不能立刻到机房确定物理连接
# 检查网卡与网络是否物理连通,网线是否插好且连接可用,很多时候不能立刻到机房确定物理连接 [root@linux-node1 django-docker]# ethtool eth0 Settings for eth0: Supported ports: [ TP ] Supported link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full 1000baseT/Full Supported pause frame use: No Supports auto-negotiation: Yes Supported FEC modes: Not reported Advertised link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full 1000baseT/Full Advertised pause frame use: No Advertised auto-negotiation: Yes Advertised FEC modes: Not reported Speed: 1000Mb/s # 当前网卡的速度,这是一个千兆网卡; Duplex: Full # 当前网络支持全双工 Port: Twisted Pair PHYAD: 0 Transceiver: internal Auto-negotiation: on MDI-X: off (auto) Supports Wake-on: d Wake-on: d Current message level: 0x00000007 (7) drv probe link Link detected: yes # 前网卡和网络的物理连接正常
2、网卡和ip是否正常
[root@linux-node1 django-docker]# ifconfig eth0 # 查看网卡配置信息是否正确 eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.56.11 netmask 255.255.255.0 broadcast 192.168.56.255 inet6 fe80::20c:29ff:fe45:f27a prefixlen 64 scopeid 0x20<link> ether 00:0c:29:45:f2:7a txqueuelen 1000 (Ethernet) RX packets 696302 bytes 931683697 (888.5 MiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 191690 bytes 21641720 (20.6 MiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 [root@linux-node1 django-docker]# systemctl restart network # 重启网卡,如果报错可能是网卡配置有问题
[root@linux-node1 django-docker]# vim /etc/sysconfig/network-scripts/ifcfg-eth0 # 查看网卡配置是否正确 TYPE=Ethernet BOOTPROTO=static DEFROUTE=yes PEERDNS=no PEERROUTES=yes IPV4_FAILURE_FATAL=no NAME=eth0 # UUID=3dacb9a3-62a4-41cc-b9ab-44a20ee9157e DEVICE=eth0 ONBOOT=yes IPADDR=192.168.56.11 NETMASK=255.255.255.0 GATEWAY=192.168.56.2
3、是否正确配置了网关
1) 如果网卡已经正常启动,需要确认目标网络接口是否正确配置网关
2)同时主机和网关之间的连接没有问题,通过route命令和ping命令结合完成这一阶段的排查
[root@linux-node1 django-docker]# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 192.168.56.2 0.0.0.0 UG 0 0 0 eth0 169.254.0.0 0.0.0.0 255.255.0.0 U 1002 0 0 eth0 172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0 172.22.0.0 0.0.0.0 255.255.0.0 U 0 0 0 br-d744c4d28e2f 192.168.56.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
4、测试DNS是否可用
注:通常很多网络问题是DNS故障或配置不当造成的,nslookup和dig命令能够用来排查DNS问题
[root@linux-node1 django-docker]# nslookup www.baidu.com # yum install bind-utils [root@linux-node1 django-docker]# cat /etc/resolv.conf # 查看dns配置是否正常 nameserver 192.168.56.2
5、远程主机是否开放端口
telnet 192.168.56.11 80
6、使用nmap工具检测端口开放情况
[root@linux-node1 django-docker]# nmap -p 22 192.168.56.11 Starting Nmap 6.40 ( http://nmap.org ) at 2020-02-29 07:52 EST Nmap scan report for linux-node1 (192.168.56.11) Host is up (0.000089s latency). PORT STATE SERVICE 22/tcp open ssh # open 代表开发了22端口,并且没有被防火墙拦截 # filtered 代表虽然开发端口,但是被防火墙拦截 # closed 代表本机没有监听这个端口
7、网络慢排查: iftop
[root@linux-node1 django-docker]# iftop -n interface: eth0 IP address is: 192.168.56.11 MAC address is: 00:0c:29:45:f2:7a 391Kb 781Kb 977Kb └───────────────────────┴───────────────────────┴───────────────────────── 源IP 传输方向 目的IP 192.168.56.11 => 192.168.56.1 752b 816b 1.10Kb <= 184b 184b 771b 255.255.255.255 => 192.168.56.1 0b 0b 0b ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── TX(发送): cum: 2.44MB peak: 2.81Kb rates: 752b 816b 1.10Kb RX(介绍): 2.43MB 3.17Kb 184b 405b 881b TOTAL: 4.87MB 5.98Kb 936b 1.19Kb 1.96Kb # 最上方的一行刻度是整个网络的带宽比例, # 下面第1列是源IP,第2列是目标IP,箭头表示了二者之间是否在传输数据,以及传输的方向。 # 最后三列分别是2s、10s、40s时两个主机之间的数据传输速率。 # 最下方的TX、RX分别代表发送、接收数据的统计,TOTAL则是数据传输总量
作者:学无止境
出处:https://www.cnblogs.com/xiaonq
生活不只是眼前的苟且,还有诗和远方。