Linux常用命令整理
为何要了解Linux命令
作为一个后台开发人员,必须拥有处理生产问题以及部署生产环境各种应用的能力,那么Linux命令是我们绕不过去坎。懂得常用的linux命令对于我们的日常开发工作大有裨益,同时也提升了我们处理异常问题的能力与效率,下面就一些常用的Linux命令做一个总结。
linux系统信息命令
首先我们对linux系统信息相关的指令做一个基本了解
-
查看CPU信息
cat /proc/cpuinfo
通过上面的指令我们看可以看到当前主机所有CPU的信息列表(针对多核) processor : 1 vendor_id : GenuineIntel cpu family : 6 model : 85 model name : Intel(R) Xeon(R) Platinum 8163 CPU @ 2.50GHz stepping : 4 microcode : 0x1 cpu MHz : 2500.018 cache size : 33792 KB physical id : 0 siblings : 2 core id : 0 cpu cores : 1 apicid : 1 initial apicid : 1 fpu : yes fpu_exception : yes cpuid level : 13 wp : yes flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc rep_good nopl eagerfpu pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch ibrs ibpb stibp fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm mpx avx512f avx512dq rdseed adx smap avx512cd avx512bw avx512vl xsaveopt xsavec xgetbv1 spec_ctrl intel_stibp bogomips : 5000.03 clflush size : 64 cache_alignment : 64 address sizes : 46 bits physical, 48 bits virtual power management:
ps:另外我们也可以通过 cat /proc/cpuinfo |grep “physical id” 等相关指令查看CPU某一个参数的具体信息。
-
查看内存信息
cat /proc/meminfo
通过上面的指令我们看可以看到当前主机内存使用情况 MemTotal: 3880924 kB MemFree: 1023564 kB MemAvailable: 2381112 kB Buffers: 160044 kB Cached: 1372664 kB SwapCached: 0 kB Active: 1927336 kB Inactive: 778128 kB Active(anon): 1177820 kB Inactive(anon): 276 kB Active(file): 749516 kB Inactive(file): 777852 kB Unevictable: 4796 kB Mlocked: 0 kB SwapTotal: 0 kB SwapFree: 0 kB Dirty: 12 kB Writeback: 0 kB AnonPages: 1177568 kB Mapped: 67892 kB Shmem: 544 kB Slab: 89580 kB SReclaimable: 69844 kB SUnreclaim: 19736 kB KernelStack: 4848 kB PageTables: 8988 kB NFS_Unstable: 0 kB Bounce: 0 kB WritebackTmp: 0 kB CommitLimit: 1940460 kB Committed_AS: 1648128 kB VmallocTotal: 34359738367 kB VmallocUsed: 14276 kB VmallocChunk: 34359715580 kB HardwareCorrupted: 0 kB AnonHugePages: 997376 kB CmaTotal: 0 kB CmaFree: 0 kB HugePages_Total: 0 HugePages_Free: 0 HugePages_Rsvd: 0 HugePages_Surp: 0 Hugepagesize: 2048 kB DirectMap4k: 73600 kB DirectMap2M: 4120576 kB DirectMap1G: 2097152 kB PS:针对以上内存信息,做一些简要的说明 MemTotal:可用的总内存--总物理内存减去kernel 代码/数据段占用再减去保留的内存区; MemFree:完全未用到的物理内存 LowFree+HighFree; MemAvailable:MemFree+Active(file)+Inactive(file)-(watermark+min(watermark,Active(file)+Inactive(file)/2)) 有些应用程序会根据系统的可用内存大小自动调整内存申请的多少,所以需要一个记录当前可用内存数量的统计值,MemFree并不适用,因为MemFree不能代表全部可用的内存,系统中有些内存虽然已被使用但是可以回收的,比如cache/buffer、slab都有一部分可以回收,所以这部分可回收的内存加上MemFree才是系统可用的内存,即MemAvailable。/proc/meminfo中的MemAvailable是内核使用特定的算法估算出来的,要注意这是一个估计值,并不精确。 Buffers:block device 文件读写用到的page; Cached:普通文件占用的缓冲; SwapCached:内存足够的情况下,这个值一般为0; swap分区参数:Swap分区在系统的物理内存不够用的时候,把硬盘空间中的一部分空间释放出来,以供当前运行的程序使用 SwapTotal:可用的swap空间的总的大小 SwapFree:剩余swap空间的大小 kswapd()-->balance_pgdat()-->shrink_zone()-->shrink_inactive_list()-->shrink_page_list()(核心函数)-_swap()-->get_swap_page() 内存换出到swap的过程 Dirty:需要写入磁盘的内存区大小 Writeback:正在被写回磁盘的大小 AnonPages:未映射页的内存大小 Mapped: 设备和文件等映射的大小。 Slab: 内核数据结构slab的大小,可以减少申请和释放内存带来的消耗。 SReclaimable:可收回Slab的大小 SUnreclaim:不可收回Slab的大小(SUnreclaim+SReclaimable=Slab) PageTables:管理内存分页页面的索引表的大小。 NFS_Unstable:不稳定页表的大小 VmallocTotal: vmalloc内存区大小 VmallocUsed: 已用的vmalloc区大小
-
查看磁盘信息
fdisk -l
磁盘 /dev/vda:42.9 GB, 42949672960 字节,83886080 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节 磁盘标签类型:dos 磁盘标识符:0x0008d73a 设备 Boot Start End Blocks Id System /dev/vda1 * 2048 83884031 41940992 83 Linux
-
查看系统、CPU等信息
uname -a
Linux iz2ze06kmfgcyg4afunsqaz 3.10.0-862.11.6.el7.x86_64 #1 SMP Tue Aug 14 21:49:04 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
-
加载的内核模块
lsmod
Module Size Used by tcp_diag 12591 0 inet_diag 18949 1 tcp_diag ipt_MASQUERADE 12678 1 nf_nat_masquerade_ipv4 13412 1 ipt_MASQUERADE iptable_nat 12875 1 nf_conntrack_ipv4 15053 2 nf_defrag_ipv4 12729 1 nf_conntrack_ipv4 nf_nat_ipv4 14115 1 iptable_nat xt_addrtype 12676 2 iptable_filter 12810 1 xt_conntrack 12760 1 nf_nat 26787 2 nf_nat_ipv4,nf_nat_masquerade_ipv4 nf_conntrack 133053 5 nf_nat,nf_nat_ipv4,xt_conntrack,nf_nat_masquerade_ipv4,nf_conntrack_ipv4 libcrc32c 12644 2 nf_nat,nf_conntrack br_netfilter 22256 0 bridge 146976 1 br_netfilter stp 12976 1 bridge llc 14552 2 stp,bridge overlay 71964 0 cfg80211 623433 0 rfkill 22391 1 cfg80211 iosf_mbi 14990 0 crc32_pclmul 13133 0 ghash_clmulni_intel 13273 0 aesni_intel 189415 0 lrw 13286 1 aesni_intel gf128mul 15139 1 lrw ppdev 17671 0 glue_helper 13990 1 aesni_intel ablk_helper 13597 1 aesni_intel parport_pc 28205 0 parport 46395 2 ppdev,parport_pc i2c_piix4 22401 0 cryptd 20511 3 ghash_clmulni_intel,aesni_intel,ablk_helper pcspkr 12718 0 joydev 17389 0 virtio_balloon 18015 0 ip_tables 27126 2 iptable_filter,iptable_nat ext4 571716 1 mbcache 14958 1 ext4 jbd2 103046 1 ext4 ata_generic 12923 0 pata_acpi 13053 0 virtio_console 28075 1 virtio_net 28063 0 virtio_blk 18166 2 cirrus 24383 1 drm_kms_helper 177166 1 cirrus syscopyarea 12529 1 drm_kms_helper sysfillrect 12701 1 drm_kms_helper sysimgblt 12640 1 drm_kms_helper fb_sys_fops 12703 1 drm_kms_helper ttm 99555 1 cirrus drm 397988 4 ttm,drm_kms_helper,cirrus ata_piix 35052 0 libata 243070 3 pata_acpi,ata_generic,ata_piix crct10dif_pclmul 14307 0 crct10dif_common 12595 1 crct10dif_pclmul crc32c_intel 22094 1 serio_raw 13434 0 i2c_core 63151 3 drm,i2c_piix4,drm_kms_helper virtio_pci 22934 0 virtio_ring 22746 5 virtio_blk,virtio_net,virtio_pci,virtio_balloon,virtio_console virtio 14959 5 virtio_blk,virtio_net,virtio_pci,virtio_balloon,virtio_console floppy 69432 0
-
查看环境变量配置
env
XDG_SESSION_ID=21605 HOSTNAME=iz2ze06kmfgcyg4afunsqaz TERM=xterm-256color SHELL=/bin/bash HISTSIZE=1000 SSH_CLIENT=112.97.181.32 10059 22 SSH_TTY=/dev/pts/2 JRE_HOME=/usr/local/java/jdk1.8.0_181/jre USER=root MAIL=/var/spool/mail/root PATH=/usr/local/java/jdk1.8.0_181/bin:/usr/local/java/jdk1.8.0_181/jre/bin: PWD=/root JAVA_HOME=/usr/local/java/jdk1.8.0_181 LANG=zh_CN.UTF-8 HISTCONTROL=ignoredups M2_HOME=/usr/local/maven3/apache-maven-3.5.4 SHLVL=1 HOME=/root LOGNAME=root CLASSPATH=.:/usr/local/java/jdk1.8.0_181/lib:/usr/local/java/jdk1.8.0_181/jre/lib: SSH_CONNECTION=112.97.181.32 10059 172.17.190.200 22 LESSOPEN=||/usr/bin/lesspipe.sh %s XDG_RUNTIME_DIR=/run/user/0 NODE_HOME=/usr/local/node/8.11.4 _=/usr/bin/env
-
查看内存使用量和交换区使用量
free -m
total used free shared buff/cache available Mem: 3789 1208 995 0 1585 2322 Swap: 0 0 0
-
查看指定目录下文件大小
du -sh *
4.0K bin 24K lib64 84M libexec 5.6M share
-
查看系统运行时间、用户数、负载情况
uptime #
14:16:21 up 126 days, 22:51, 1 user, load average: 0.00, 0.01, 0.05
-
查看磁盘分区以及负载信息
cat proc/loadavg
0.00 0.01 0.05 1/296 27774 0.00(1分钟平均负载) 0.01(5分钟平均负载) 0.05(15分钟平均负载) 1/296(分子是当前正在运行的进程数,分母是总的进程数) 27774(最近运行进程的ID)
-
查看所有网络接口的属性
ifconfig #
docker0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500 inet 172.18.0.1 netmask 255.255.0.0 broadcast 0.0.0.0 ether 02:42:2e:43:1a:df txqueuelen 0 (Ethernet) RX packets 0 bytes 0 (0.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 0 bytes 0 (0.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 172.17.190.200 netmask 255.255.240.0 broadcast 172.17.191.255 ether 00:16:3e:0e:55:ce txqueuelen 1000 (Ethernet) RX packets 8359753 bytes 2727021055 (2.5 GiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 8301402 bytes 2424845168 (2.2 GiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 loop txqueuelen 1000 (Local Loopback) RX packets 63564123 bytes 54423994155 (50.6 GiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 63564123 bytes 54423994155 (50.6 GiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 第一行: eth0:以太网卡的名字 UP:代表此网络接口为启用状态(down为关闭状态) RUNNING:代表网卡设备已连接 MULTICAST:表示支持组播 MTU:为数据包最大传输单元 第二行:网卡的IP地址、子网掩码、广播地址 第三行:IP v6地址 第四行:Ethernet(以太网)表示连接类型; ether:表示为网卡的MAC地址 第五行:接受数据包个数、大小统计信息 第六行:异常接受包的个数、如丢包量、错误等 第七行:发送数据包个数、大小统计信息 第八行:发送包的个数、如丢包量、错误等
-
查看防火墙设置
iptables -L #
Chain FORWARD (policy DROP) target prot opt source destination DOCKER-ISOLATION all -- anywhere anywhere DOCKER all -- anywhere anywhere ACCEPT all -- anywhere anywhere ctstate RELATED,ESTABLISHED ACCEPT all -- anywhere anywhere ACCEPT all -- anywhere anywhere Chain OUTPUT (policy ACCEPT) target prot opt source destination Chain DOCKER (1 references) target prot opt source destination Chain DOCKER-ISOLATION (1 references) target prot opt source destination RETURN all -- anywhere anywhere
-
查看所有监听端口
netstat -lntp #
Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN 1529/master tcp 0 0 0.0.0.0:6379 0.0.0.0:* LISTEN 1008/redis-server * tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 17267/nginx: master tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 2472/sshd tcp 0 0 0.0.0.0:8088 0.0.0.0:* LISTEN 5600/java tcp6 0 0 :::33060 :::* LISTEN 15767/mysqld tcp6 0 0 :::3306 :::* LISTEN 15767/mysqld tcp6 0 0 :::6379 :::* LISTEN 1008/redis-server * tcp6 0 0 :::80 :::* LISTEN 17267/nginx: master
-
查看所有已经建立的连接
netstat -antp #
Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN 1529/master tcp 0 0 0.0.0.0:6379 0.0.0.0:* LISTEN 1008/redis-server * tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 17267/nginx: master tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 2472/sshd tcp 0 0 0.0.0.0:8088 0.0.0.0:* LISTEN 5600/java
-
查看所有进程
ps -ef # ps -ef|grep nginx
root 18542 2 0 2月23 ? 00:00:06 [kworker/1:1] root 24408 2606 0 1月06 ? 01:00:03 /usr/bin/docker-containerd-current -l unix:///var/run/docker/li root 26764 2 0 06:10 ? 00:00:00 [kworker/1:0] root 27624 2 0 13:10 ? 00:00:00 [kworker/0:0] root 27730 2472 0 14:11 ? 00:00:00 sshd: root@pts/1 root 27732 27730 0 14:11 pts/1 00:00:00 -bash
root 511 489 0 2018 ? 00:00:00 runsv nginx root 534 511 0 2018 ? 00:00:00 svlogd -tt /var/log/gitlab/nginx root 17267 1 0 2018 ? 00:00:00 nginx: master process /usr/sbin/nginx nginx 17268 17267 0 2018 ? 00:00:02 nginx: worker process nginx 17269 17267 0 2018 ? 00:00:03 nginx: worker process root 27862 27732 0 14:59 pts/1 00:00:00 grep --color=auto nginx
-
实时显示进程状态用户
top #
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 15767 mysql 20 0 1899192 595856 8564 S 0.7 15.4 371:57.37 mysqld 1008 root 20 0 147360 9432 928 S 0.3 0.2 178:29.64 redis-server 2606 root 20 0 788500 19704 3712 S 0.3 0.5 221:58.45 dockerd-current 8657 root 0 -20 127380 12060 9400 S 0.3 0.3 212:33.21 AliYunDun 1 root 20 0 43520 2780 1492 S 0.0 0.1 30:15.11 systemd
-
查看活动用户
w #
15:03:16 up 126 days, 23:37, 1 user, load average: 0.00, 0.01, 0.05 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT root pts/1 112.97.181.32 14:11 4.00s 0.06s 0.00s w
-
查看指定用户信息
id #
uid=0(root) gid=0(root) 组=0(root),1001(xaut)
id tomcat
uid=1000(tomcat) gid=1000(tomcat) 组=1000(tomcat),1001(xaut)
-
查看用户登录日志
last #
root pts/1 112.97.181.32 Wed Feb 27 14:11 still logged in root pts/2 112.97.181.32 Wed Feb 27 11:23 - 14:07 (02:43) root pts/1 112.97.181.32 Wed Feb 27 10:28 - 13:10 (02:42) root pts/1 183.39.158.114 Tue Feb 19 15:55 - 18:07 (02:12) root pts/1 14.27.34.173 Tue Feb 5 22:49 - 23:24 (00:34) root pts/1 14.27.58.109 Mon Feb 4 21:22 - 23:40 (02:17) root pts/1 14.27.58.109 Mon Feb 4 19:52 - 20:29 (00:36) root pts/1 14.25.55.11 Sun Feb 3 10:16 - 10:41 (00:25) root pts/1 183.39.46.235 Sat Feb 2 21:12 - 00:25 (03:13) root pts/1 14.25.171.77 Sat Feb 2 18:09 - 18:52 (00:42) root pts/1 14.25.171.77 Sat Feb 2 11:40 - 14:15 (02:34) root pts/1 14.28.152.226 Sat Feb 2 00:49 - 03:01 (02:11) root pts/3 113.200.106.211 Fri Feb 1 22:18 - 00:30 (02:11) root pts/2 14.28.152.226 Fri Feb 1 22:04 - 02:06 (04:02) root pts/1 1.87.228.212 Fri Feb 1 20:10 - 22:28 (02:18) root pts/2 113.200.106.211 Fri Feb 1 15:25 - 15:49 (00:23) root pts/1 113.200.106.211 Fri Feb 1 14:44 - 16:59 (02:15) root pts/2 1.87.224.146 Fri Feb 1 14:03 - 14:31 (00:27) root pts/1 1.87.226.92 Fri Feb 1 13:48 - 14:16 (00:27) root pts/1 1.87.226.92 Fri Feb 1 13:47 - 13:47 (00:00) root pts/2 1.85.245.214 Thu Jan 31 22:27 - 00:39 (02:11) root pts/2 1.85.245.214 Thu Jan 31 21:08 - 22:00 (00:51) root pts/1 14.28.9.82 Thu Jan 31 19:14 - 00:11 (04:57) root pts/4 1.85.245.214 Thu Jan 31 14:44 - 15:11 (00:26) root pts/3 1.85.245.214 Thu Jan 31 13:40 - 15:56 (02:15) root pts/2 1.85.245.214 Thu Jan 31 13:24 - 15:42 (02:17) root pts/1 14.28.9.82 Thu Jan 31 12:25 - 19:03 (06:38) root pts/1 14.27.51.41 Wed Jan 30 21:07 - 22:17 (01:09) root pts/2 183.39.151.225 Tue Jan 29 16:59 - 18:17 (01:17) root pts/1 183.39.146.121 Tue Jan 29 15:36 - 17:16 (01:39) root pts/1 113.242.187.93 Tue Jan 29 09:14 - 09:38 (00:23) root pts/1 113.242.187.93 Tue Jan 29 08:25 - 09:05 (00:39) root pts/1 14.30.34.125 Mon Jan 28 19:44 - 20:12 (00:28) root pts/1 14.24.77.228 Mon Jan 28 15:37 - 15:59 (00:22) root pts/2 112.97.59.102 Fri Jan 25 16:28 - 16:46 (00:18) root pts/1 183.42.40.14 Fri Jan 25 15:16 - 17:29 (02:13) root pts/3 114.251.159.69 Thu Jan 24 17:09 - 17:09 (00:00) root pts/2 114.251.159.69 Thu Jan 24 16:47 - 05:56 (13:09) root pts/1 183.37.129.46 Thu Jan 24 16:43 - 19:07 (02:24) root pts/1 183.40.20.160 Sat Jan 19 14:37 - 16:50 (02:12) root pts/1 112.97.59.150 Tue Jan 15 19:13 - 20:10 (00:56) root pts/1 114.251.159.69 Tue Jan 15 14:38 - 14:38 (00:00) root pts/1 112.97.57.208 Sat Jan 12 14:56 - 15:48 (00:51) root pts/1 112.97.57.208 Sat Jan 12 10:02 - 11:09 (01:07
以上命令会在我们日常开发中,经常用到。为了提高开发以及解决问题的能力,这些日常命令需要去熟练运用。
下一篇,我会对常用的文件以及文件夹命令做一个总结。
ps:参考文章
[1]: https://www.cnblogs.com/yjd_hycf_space/p/7730690.html
[2]: https://my.oschina.net/guiguketang/blog/1809293