5个Linux命令
findmnt
该findmnt命令是基本软件包util-linux的一部分,因此几乎在所有Linux系统上都可用。它可以树状格式打印所有已挂载的文件系统。我发现findmnt命令的输出比更流行的mount命令提供的输出更具可读性。这是文件系统如何在Ceph节点上挂载的示例:
$ findmnt
TARGET SOURCE FSTYPE OPTIONS
/ /dev/sda2 xfs rw,relatime,seclabel,attr2,inode64,noquota
├─/sys sysfs sysfs rw,nosuid,nodev,noexec,relatime,seclabel
│ ├─/sys/kernel/security securityfs securityfs rw,nosuid,nodev,noexec,relatime
│ ├─/sys/fs/cgroup tmpfs tmpfs ro,nosuid,nodev,noexec,seclabel,mode=755
│ │ ├─/sys/fs/cgroup/systemd cgroup cgroup rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/usr/lib/systemd/systemd-cgroups-agent,name=systemd
│ │ ├─/sys/fs/cgroup/cpu,cpuacct cgroup cgroup rw,nosuid,nodev,noexec,relatime,cpuacct,cpu
│ │ ├─/sys/fs/cgroup/perf_event cgroup cgroup rw,nosuid,nodev,noexec,relatime,perf_event
│ │ ├─/sys/fs/cgroup/devices cgroup cgroup rw,nosuid,nodev,noexec,relatime,devices
│ │ ├─/sys/fs/cgroup/blkio cgroup cgroup rw,nosuid,nodev,noexec,relatime,blkio
│ │ ├─/sys/fs/cgroup/cpuset cgroup cgroup rw,nosuid,nodev,noexec,relatime,cpuset
│ │ ├─/sys/fs/cgroup/hugetlb cgroup cgroup rw,nosuid,nodev,noexec,relatime,hugetlb
│ │ ├─/sys/fs/cgroup/net_cls cgroup cgroup rw,nosuid,nodev,noexec,relatime,net_cls
│ │ ├─/sys/fs/cgroup/memory cgroup cgroup rw,nosuid,nodev,noexec,relatime,memory
│ │ └─/sys/fs/cgroup/freezer cgroup cgroup rw,nosuid,nodev,noexec,relatime,freezer
│ ├─/sys/fs/pstore pstore pstore rw,nosuid,nodev,noexec,relatime
│ ├─/sys/fs/selinux selinuxfs selinuxfs rw,relatime
│ ├─/sys/kernel/debug debugfs debugfs rw,relatime
│ └─/sys/kernel/config configfs configfs rw,relatime
├─/proc proc proc rw,nosuid,nodev,noexec,relatime
│ ├─/proc/sys/fs/binfmt_misc systemd-1 autofs rw,relatime,fd=26,pgrp=1,timeout=300,minproto=5,maxproto=5,direct
│ └─/proc/fs/nfsd nfsd nfsd rw,relatime
├─/dev devtmpfs devtmpfs rw,nosuid,seclabel,size=16307108k,nr_inodes=4076777,mode=755
│ ├─/dev/shm tmpfs tmpfs rw,nosuid,nodev,seclabel
│ ├─/dev/pts devpts devpts rw,nosuid,noexec,relatime,seclabel,gid=5,mode=620,ptmxmode=000
│ ├─/dev/mqueue mqueue mqueue rw,relatime,seclabel
│ └─/dev/hugepages hugetlbfs hugetlbfs rw,relatime,seclabel
├─/run tmpfs tmpfs rw,nosuid,nodev,seclabel,mode=755
│ └─/run/user/1002 tmpfs tmpfs rw,nosuid,nodev,relatime,seclabel,size=3265340k,mode=700,uid=1002,gid=1002
├─/var/lib/nfs/rpc_pipefs rpc_pipefs rpc_pipefs rw,relatime
├─/var/lib/ceph/osd/ceph-1 /dev/sdb1 xfs rw,noatime,seclabel,attr2,inode64,logbsize=256k,sunit=512,swidth=512,noquota
├─/var/lib/ceph/osd/ceph-3 /dev/sdc1 xfs rw,noatime,seclabel,attr2,inode64,logbsize=256k,sunit=512,swidth=512,noquota
├─/var/lib/ceph/osd/ceph-10 /dev/sdg1 xfs rw,noatime,seclabel,attr2,inode64,logbsize=256k,sunit=512,swidth=512,noquota
├─/var/lib/ceph/osd/ceph-9 /dev/sdf1 xfs rw,noatime,seclabel,attr2,inode64,logbsize=256k,sunit=512,swidth=512,noquota
├─/var/lib/ceph/osd/ceph-4 /dev/sdd1 xfs rw,noatime,seclabel,attr2,inode64,logbsize=256k,sunit=512,swidth=512,noquota
└─/var/lib/ceph/osd/ceph-7 /dev/sde1 xfs rw,noatime,seclabel,attr2,inode64,logbsize=256k,sunit=512,swidth=512,noquota
ss
该ss(soscket统计)命令是好老替换netstat命令。它包含在iproute软件包中,该软件包是所有现代Linux发行版中必不可少的部分。我发现ss命令在netstat缺少命令的系统上可用。这是ss在我的Linux桌面上运行的命令的示例输出:
$ sudo ss -tlnp | cat
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 100 *:15929 *:* users:(("skype",pid=25943,fd=49))
LISTEN 0 50 *:39964 *:* users:(("java",pid=6015,fd=146))
LISTEN 0 5 192.168.122.1:53 *:* users:(("dnsmasq",pid=1625,fd=6))
LISTEN 0 128 *:22 *:* users:(("sshd",pid=1442,fd=3))
LISTEN 0 128 :::22 :::* users:(("sshd",pid=1442,fd=4))
ip
经过多年使用该ifconfig实用程序后,我花了一些力气才转向其现代替代产品-ip命令。最近,我发现了该ip实用程序的两个有用功能。
要获取有关各个网络接口传输的数据包的详细信息,请使用-s(统计)参数。例如:
$ ip -s link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
RX: bytes packets errors dropped overrun mcast
1416492 20158 0 0 0 0
TX: bytes packets errors dropped carrier collsns
1416492 20158 0 0 0 0
2: enp0s31f6: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
link/ether 18:66:da:21:33:87 brd ff:ff:ff:ff:ff:ff
RX: bytes packets errors dropped overrun mcast
13776256661 26486602 0 0 0 1661059
TX: bytes packets errors dropped carrier collsns
2313484427 9811792 0 0 0 0
要弄清楚将使用哪个网络接口将数据包发送到指定的IP地址,请执行以下操作:
$ ip route get 192.168.0.1
192.168.0.1 via 10.5.0.1 dev enp0s31f6 src 10.5.0.225
cache
当将数据包发送到目标位置时192.168.0.1,内核将通过enp0s31f6接口路由数据包。IP10.5.0.1是我的默认路由。
lscpu
在现代机器上,的输出cat /proc/cpuinfo可能非常长。为了找出机器随附的CPU配置,我更喜欢使用该lscpu命令。这是lscpu在OpenStack计算节点上运行的命令的示例输出:
$ lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 32
On-line CPU(s) list: 0-31
Thread(s) per core: 2
Core(s) per socket: 8
Socket(s): 2
NUMA node(s): 2
Vendor ID: GenuineIntel
CPU family: 6
Model: 63
Model name: Intel(R) Xeon(R) CPU E5-2640 v3 @ 2.60GHz
Stepping: 2
CPU MHz: 1200.062
BogoMIPS: 5198.45
Virtualization: VT-x
L1d cache: 32K
L1i cache: 32K
L2 cache: 256K
L3 cache: 20480K
NUMA node0 CPU(s): 0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30
NUMA node1 CPU(s): 1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31
在上面的输出,有趣的线是Socket(s),Core(s) per socket,Thread(s) per core和CPU(s)。在我们的案例中,我们正在考虑一台具有2个物理CPU(插槽)的机器,每个CPU具有8个物理核心(每个插槽的核心)。由于超线程技术,每个物理内核都有2个处理线程(每个内核线程)又称为逻辑CPU。总计,Linux调度程序可使用32个逻辑CPU来调度任务。
lspci
我们概述中的最后一个命令是lspci命令。如果您想知道哪个内核驱动程序正在控制您的硬件设备,可以通过以下方法找出:
$ lspci -k
...
01:05.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] RS880 [Radeon HD 4250]
Subsystem: ASUSTeK Computer Inc. M5A88-V EVO
Kernel driver in use: radeon
01:05.1 Audio device: Advanced Micro Devices, Inc. [AMD/ATI] RS880 HDMI Audio [Radeon HD 4200 Series]
Subsystem: ASUSTeK Computer Inc. M5A88-V EVO
Kernel driver in use: snd_hda_intel
02:00.0 FireWire (IEEE 1394): VIA Technologies, Inc. VT6315 Series Firewire Controller
Subsystem: ASUSTeK Computer Inc. M5A88-V EVO
Kernel driver in use: firewire_ohci
02:00.1 IDE interface: VIA Technologies, Inc. VT6415 PATA IDE Host Controller (rev a0)
Subsystem: ASUSTeK Computer Inc. Motherboard
Kernel driver in use: pata_via
03:00.0 USB controller: ASMedia Technology Inc. ASM1042 SuperSpeed USB Host Controller
Subsystem: ASUSTeK Computer Inc. P8B WS Motherboard
Kernel driver in use: xhci_hcd
05:00.0 Network controller: Realtek Semiconductor Co., Ltd. RTL8192CE PCIe Wireless Network Adapter (rev 01)
Subsystem: Realtek Semiconductor Co., Ltd. RTL8192CE PCIe Wireless Network Adapter
Kernel driver in use: rtl8192ce
06:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 06)
Subsystem: ASUSTeK Computer Inc. P8P67 and other motherboards
Kernel driver in use: r8169