Shell | 实用命令不完全总结

12 篇文章 0 订阅

本文不完全总结实用的 shell 命令 1

Updated: 2023 / 02 / 26


Shell | 实用命令不完全总结


uname

概念

uname 命令 2,主要用于输出和系统本身相关的内容,包含内核的版本、硬件架构是32位还是64位即可。

用法

在这里插入图片描述

示例

以以下系统为例,

ios

% uname -help
uname: illegal option -- h
usage: uname [-amnprsv]

% uname -a
Darwin X-MacBook-Pro.local 20.5.0 Darwin Kernel Version 20.5.0: Sat May  8 05:10:31 PDT 2021; root:xnu-7195.121.3~9/RELEASE_ARM64_T8101 arm64

% uname -s	 				 		 //输出内核名称
Darwin

% uname -n						     //输出网络节点上的主机名
X-MacBook-Pro.local

% uname -r							 //输出内核发行号
20.5.0

% uname -v							 //输出内核版本
Darwin Kernel Version 20.5.0: Sat May  8 05:10:31 PDT 2021; root:xnu-7195.121.3~9/RELEASE_ARM64_T8101

% uname -m							 //输出主机的硬件架构名称
arm64

% uname -p							 //输出处理器类型
arm

Ubuntu

参考这里 3


$ uname -a
Linux itsfoss 4.4.0-97-generic '#'120-Ubuntu SMP Tue Sep 19 17:28:18 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
# Linux            							   – 内核名称。如果在BSD或macOS上运行相同的命令,结果会有所不同。
# itsfoss            						   – 主机名
# 4.4.0-97-generic                             – 内核版本(使用 -r 选项时所输出的内部版本号)
# #120-Ubuntu SMP Tue Sep 19 17:28:18 UTC 2017 – 这意味着Ubuntu已经编译了4.4.0-97-generic 120次。上次编译的时间戳为Tue Sep 19 17:28:18 UTC 2017。
# x86_64	 								   – 机器架构
# x86_64 									   – 处理器架构
# x86_64 									   – 操作系统架构(您可以在64位处理器上运行32位操作系统)
# GNU/Linux 								   – 操作系统。

$ uname -r							 //输出内核发行号
4.4.0-97-generic					
# 意味着您正在运行Linux内核4.4.0-97,或者更笼统地说,您正在运行 Linux 内核版本4.4。
# 但是这里的其他数字是什么意思?
# 4  – 内核版本
# 4  – 重大修订
# 0  – 小修订
# 97 – 错误修复
# generic – 特定于发行版的字符串。对于Ubuntu,这意味着使用的是桌面版本。对于Ubuntu服务器版本,它将是server。

dmesg

概念

kernel 会将开机信息存储在 ring buffer 中。
dmesg 命令检查或控制内核环缓冲区,显示 Linux 系统启动信息。

您若是开机时来不及查看信息,可利用 dmesg 来查看。开机信息保存在 /var/log/dmesg 文件里。

dmesg 命令的默认操作是从内核环缓冲区读取所有消息。
内核环缓冲区是一种数据结构,它记录与内核操作相关的消息。
环形缓冲区是一种特殊类型的缓冲区,总是一个恒定的大小,在新消息进入时删除最旧的消息。

用法

使用 dmesg --help 看到,如下:

$ demsg --help

Usage:
 dmesg [options]

Display or control the kernel ring buffer.

Options:
 -C, --clear                 clear the kernel ring buffer
 -c, --read-clear            read and clear all messages
 -D, --console-off           disable printing messages to console
 -E, --console-on            enable printing messages to console
 -F, --file <file>           use the file instead of the kernel log buffer
 -f, --facility <list>       restrict output to defined facilities
 -H, --human                 human readable output
 -k, --kernel                display kernel messages
 -L, --color[=<when>]        colorize messages (auto, always or never)
                               colors are enabled by default
 -l, --level <list>          restrict output to defined levels
 -n, --console-level <level> set level of messages printed to console
 -P, --nopager               do not pipe output into a pager
 -r, --raw                   print the raw message buffer
 -S, --syslog                force to use syslog(2) rather than /dev/kmsg
 -s, --buffer-size <size>    buffer size to query the kernel ring buffer
 -u, --userspace             display userspace messages
 -w, --follow                wait for new messages
 -x, --decode                decode facility and level to readable string
 -d, --show-delta            show time delta between printed messages
 -e, --reltime               show local time and time delta in readable format
 -T, --ctime                 show human readable timestamp (may be inaccurate!)
 -t, --notime                don't print messages timestamp
     --time-format <format>  show time stamp using format:
                               [delta|reltime|ctime|notime|iso]
Suspending/resume will make ctime and iso timestamps inaccurate.

 -h, --help     display this help and exit

对应⬆️的中文版本为,

-c:显示信息后,清除ring buffer中的内容;
-s<缓冲区大小>:预设置为8196,刚好等于ring buffer的大小;
-n:设置记录信息的层级。
-C, --清楚 ring buffer.
-D, --console-off 禁用打印到控制台的消息。
-d, --show-delta 显示消息之间花费的时间戳和时间增量。 如果与--notime一起使用,则仅打印没有时间戳的时间增量。
-E, --console-on 启用打印消息到控制台。
-f, --facility list 将输出限制为已定义(逗号分隔)的设施列表。 对于所有支持的设施,请参阅--help输出。
-h, --help 打印帮助文本并退出。
-k, --kernel 打印内核消息。
-l, --level list 将输出限制为已定义(逗号分隔)的级别列表。 对于所有支持的级别,请参阅--help输出。
-n, --console-level level 设置将消息记录到控制台的级别。 级别是级别名称的级别编号或缩写。 
      例如,-n 1或-n警报可防止除紧急(恐慌)消息之外的所有消息出现在控制台上。 
      所有级别的消息仍然写入/ proc / kmsg,因此syslogd(8)仍可用于精确控制内核消息的显示位置。 
      使用-n选项时,dmesg不会打印或清除内核环缓冲区。 对于所有支持的级别,请参阅--help输出。
-r, --raw 打印原始消息缓冲区,即不剥离日志级别前缀。
-s, --buffer-size size 使用大小的缓冲区来查询内核环缓冲区。 默认情况下为16392。 如果已将内核缓冲区设置为大于默认值,则可以使用此选项查看整个缓冲区。
-T, --ctime 打印人类可读时间戳。 时间戳可能不准确; 在系统SUSPEND / RESUME之后,不会更新用于日志的时间源。
-t, --notime 不要打印内核的时间戳。
-u, --userspace 打印用户空间消息。
-V, --version 输出版本信息并退出。
-x, --decode 将设施和级别(优先级)编号解码为人类可读的前缀。

示例

参考 45

  • dmesg | head
    仅显示头部信息
$ dmesg | head

[    0.000000] Initializing cgroup subsys cpuset
[    0.000000] Initializing cgroup subsys cpu
[    0.000000] Initializing cgroup subsys cpuacct
[    0.000000] Linux version 3.10.0-957.10.1.el7.x86_64 (mockbuild@kbuilder.bsys.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC) ) #1 SMP Mon Mar 18 15:06:45 UTC 2019
[    0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-3.10.0-957.10.1.el7.x86_64 root=UUID=312381f6-4571-4cfa-b93b-7add4cbb8059 ro crashkernel=auto rhgb LANG=en_US.UTF-8 console=tty0 console=ttyS0,115200n8
[    0.000000] e820: BIOS-provided physical RAM map:
[    0.000000] BIOS-e820: [mem 0x0000000000000000-0x000000000009fbff] usable
[    0.000000] BIOS-e820: [mem 0x000000000009fc00-0x000000000009ffff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000000f0000-0x00000000000fffff] reserved
[    0.000000] BIOS-e820: [mem 0x0000000000100000-0x00000000bffd9fff] usable

  • dmesg | grep -i memory
    仅显示与内存使用相关的内核消息
$ dmesg | grep -i memory

[    0.000000] Base memory trampoline at [ffff8f9340099000] 99000 size 24576
[    0.000000] Reserving 161MB of memory at 688MB for crashkernel (System RAM: 8191MB)
[    0.000000] Early memory node ranges
[    0.000000] PM: Registered nosave memory: [mem 0x0009f000-0x0009ffff]
[    0.000000] PM: Registered nosave memory: [mem 0x000a0000-0x000effff]
[    0.000000] PM: Registered nosave memory: [mem 0x000f0000-0x000fffff]
[    0.000000] PM: Registered nosave memory: [mem 0xbffda000-0xbfffffff]
[    0.000000] PM: Registered nosave memory: [mem 0xc0000000-0xfeffbfff]
[    0.000000] PM: Registered nosave memory: [mem 0xfeffc000-0xfeffffff]
[    0.000000] PM: Registered nosave memory: [mem 0xff000000-0xfffbffff]
[    0.000000] PM: Registered nosave memory: [mem 0xfffc0000-0xffffffff]
[    0.000000] Memory: 4991300k/9437184k available (7668k kernel code, 1049120k absent, 400700k reserved, 6051k data, 1876k init)
[    0.000000] please try 'cgroup_disable=memory' option if you don't want memory cgroups
[    0.357447] Initializing cgroup subsys memory
[    1.004073] Freeing initrd memory: 18472k freed
[    1.128259] Non-volatile memory driver v1.3
[    1.130740] crash memory driver: version 1.1
[    1.243076] Freeing unused kernel memory: 1876k freed
[    1.248183] Freeing unused kernel memory: 512k freed
[    1.250888] Freeing unused kernel memory: 600k freed
[    1.700781] [TTM] Zone  kernel: Available graphics memory: 4004426 kiB
[    1.702519] [TTM] Zone   dma32: Available graphics memory: 2097152 kiB

  • dmesg | grep sda
    查看硬盘基础信息
$ dmesg | grep sda
 
[    2.442555] sd 0:0:0:0: [sda] 488281250 512-byte logical blocks: (250 GB/232 GiB)
[    2.442590] sd 0:0:0:0: [sda] Write Protect is off
[    2.442592] sd 0:0:0:0: [sda] Mode Sense: 00 3a 00 00
[    2.442607] sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[    2.447533]  sda: sda1
[    2.448503] sd 0:0:0:0: [sda] Attached SCSI disk

  • dmesg -L
    彩色输出(在内核3.5.0及更高版本中可用)
$ dmesg -L

[    0.000000] MTRR variable ranges enabled:
[    0.000000]   0 base 0000C0000000 mask 3FFFC0000000 uncachable
[    0.000000]   1 disabled
[    0.000000]   2 disabled
[    0.000000]   3 disabled
......
  • dmesg -T
    将时间戳转换为人类可读形式

dmesg 设置时间戳的方式,可参考 6

[95721.670363] device is closed
[95721.693207] device is closed

$ dmesg -T


[Fri Aug 31 17:55:32 2018] device is closed
[Fri Aug 31 17:55:32 2018] device is closed

dmidecode

概念

dmidecode 命令可以让你在 Linux 系统下获取有关硬件方面的信息。dmidecode 的作用是将 DMI 数据库中的信息解码,以可读的文本方式显示。由于 DMI 信息可以人为修改,因此里面的信息不一定是系统准确的信息。

dmidecode 遵循 SMBIOS/DMI 标准,其输出的信息包括 BIOS、系统、主板、处理器、内存、缓存等等。

DMI(Desktop Management Interface,DMI) 就是帮助收集电脑系统信息的管理系统,DMI 信息的收集必须在严格遵照 SMBIOS 规范的前提下进行。SMBIOS(System Management BIOS) 是主板或系统制造者以标准格式显示产品管理信息所需遵循的统一规范。SMBIOSDMI 是由行业指导机构 Desktop Management Task Force(DMTF) 起草的开放性的技术标准,其中 DMI 设计适用于任何的平台和操作系统。

DMI 充当了管理工具和系统层之间接口的角色。它建立了标准的可管理系统更加方便了电脑厂商和用户对系统的了解。DMI 的主要组成部分是 Management Information Format(MIF) 数据库。这个数据库包括了所有有关电脑系统和配件的信息。通过 `DMI``,用户可以获取序列号、电脑厂商、串口信息以及其它系统配件信息。


用法

root@baremetal-3-77 ~]# dmidecode [选项]
 -d :  (default:/dev/mem)从设备文件读取信息,输出内容与不加参数标准输出相同。
 -h : 显示帮助信息。
 -s : 只显示指定DMI字符串的信息。(string)
 -t :  只显示指定条目的信息。(type)
 -u : 显示未解码的原始条目内容。
 --dump-binfile : 将DMI数据转储到一个二进制文件中。
 --from-dumpFILE : 从一个二进制文件读取DMI数据。
 -V : 显示版本信息。

-t

-t 指令参数参考如下,

[root@baremetal-3-77 ~]# dmidecode -t [选项]
 Type   Information
 ────────────────────────────────────────────
 0  BIOS  # 查看BIOS相关的硬件信息
 1  System  # 查看系统相关的硬件信息
 2  Baseboard  # 查看主板相关的硬件信息
 3  Chassis  # 查看机箱相关的硬件信息
 4  Processor  # 查看处理器相关的硬件信息
 5  Memory Controller  # 查看内存控制的相关信息
 6  Memory Module  # 查看内存模块的相关信息
 7  Cache  # 查看缓存的相关信息
 8  Port Connector  # 查看端口连接器的相关信息
 9  System Slots  # 查看系统槽的相关信息
 10  Onboard Devices  # 查看系统机载装置的相关信息
 11  OEM Strings  # 查看系统OEM配置选项的相关信息
 12  System Configuration Options  # 查看系统获取的SMBIOS数据的相关信息
 13  BIOS Language  # 查看BIOS语言的相关信息
 14  Group Associations  # 查看系统组织协会的相关信息
 15  System Event Log  # 查看系统事件日志的相关信息
 16  Physical Memory Array  # 查看系统物理内存数组的相关信息
 17  Memory Device  # 查看系统存储设备的相关信息
 18 32-bitMemory Error  # 查看系统32位内存错误的相关信息
 19  Memory Array Mapped Address  # 查看系统存储阵列映射地址的相关信息
 20  Memory Device Mapped Address  # 查看系统存储设备映射地址的相关信息
 21  Built-in Pointing Device  # 查看系统内置定位设备的相关信息
 22  Portable Battery  # 查看系统便携式电池的相关信息
 23  System Reset  # 查看系统复位的相关信息
 24  Hardware Security  # 查看硬件安全的相关信息
 25  System Power Controls  # 查看系统功率控制的相关信息
 26  Voltage Probe  # 查看电压探针的相关信息
 27  Cooling Device  # 查看系统冷却装置的相关信息
 28  Temperature Probe  # 查看系统温度探测器的相关信息
 29  Electrical Current Probe  # 查看系统电流探头的相关信息
 30  Out-of-band Remote Access  # 查看系统远程访问的相关信息
 31  Boot Integrity Services  # 查看系统引导诚信服务的相关信息
 32  System Boot  # 查看系统启动的相关信息
 33 64-bitMemory Error  # 查看系统64位内存错误的相关信息
 34  Management Device  # 查看系统管理设备的相关信息
 35  Management Device Component  # 查看系统管理设备组件的相关信息
 36  Management Device Threshold Data  # 管理设备阈值数据的相关信息
 37  Memory Channel  # 查看系统内存通道的相关信息
 38  IPMI Device  # 查看系统IPMI设备的相关信息
 39  Power Supply  # 查看系统电力供应的相关信息
 40  Additional Information  # 查看系统额外的信息的相关信息
 41  Onboard Devices Extended Information  # 查看系统机载设备扩展信息的相关信息
 42  Management Controller Host Interface  # 查看系统管理控制器主机接口的相关信息

-s

-s 指令参数参考如下,

 bios-vendor  # 查看bios供应商的相关信息
 bios-version  # 查看bios版本的相关信息
 bios-release-date  # 查看bios发布日期的相关信息 
 system-manufacturer  # 查看系统制造商的相关信息 
 system-product-name  # 查看系统产品名称的相关信息 
 system-version  # 查看系统版本的相关信息
 system-serial-number  # 查看系统串行数量的相关信息
 system-uuid  # 查看系统uuid的相关信息
 baseboard-manufacturer  # 查看系统护板制造商的相关信息
 baseboard-product-name  # 查看系统护板产品名称的相关信息
 baseboard-version  # 查看系统护板版本的相关信息
 baseboard-serial-number  # 查看系统护板串行数量的相关信息
 baseboard-asset-tag  # 查看系统护板资产标签的相关信息
 chassis-manufacturer  # 查看系统底盘制造商的相关信息
 chassis-type  # 查看系统底盘类型的相关信息
 chassis-version  # 查看系统底盘版本的相关信息
 chassis-serial-number  # 查看系统底盘串行数量的相关信息
 chassis-asset-tag  # 查看系统底盘资产标签的相关信息
 processor-family  # 查看系统处理器的相关信息
 processor-manufacturer  # 查看系统处理器制造商的相关信息
 processor-version  # 查看系统处理器版本的相关信息
 processor-frequency  # 查看系统处理器频率的相关信息

示例

-t

系统信息
[root@baremetal-3-77 ~]# dmidecode -t 1
 # dmidecode 3.2
 Getting SMBIOS data from sysfs.
 SMBIOS 2.8 present.
 
 Handle 0x0100, DMI type 1, 27bytes
 System Information
 Manufacturer: Dell Inc.
 Product Name: PowerEdge R630
 Version: Not Specified
 Serial Number: 316RG82
 UUID: 4c4c4544-0031-3610-8052-b3c04f473832
 Wake-up Type: Power Switch
 SKU Number: SKU=NotProvided;ModelName=PowerEdge R630
 Family: Not Specified

主板信息
 [root@baremetal-3-77 ~]# dmidecode -t 2
 # dmidecode 3.2
 Getting SMBIOS data from sysfs.
 SMBIOS 2.8 present.
 
 Handle 0x0200, DMI type 2, 8bytes
 Base Board Information
 Manufacturer: Dell Inc.
 Product Name: 0CNCJW
 Version: A08
 Serial Number: .316RG82.CN747515921090.

CPU信息
 [root@baremetal-3-77 ~]# dmidecode -t processor
 # CPU相关信息

 [root@baremetal-3-77 ~]# dmidecode -t 4 | grep ID
 ID: F2 060300FF FB EB BF
 ID: F2 060300FF FB EB BF
 # CPU ID

内存总量
[root@baremetal-3-77 ~]# dmidecode -t 16
 # dmidecode 3.2
 Getting SMBIOS data from sysfs.
 SMBIOS 2.8 present.
 
 Handle 0x1000, DMI type 16, 23bytes
 Physical Memory Array
 Location: System Board Or Motherboard
 Use: System Memory
 Error Correction Type: Multi-bit ECC
 Maximum Capacity: 3TB
 Error Information Handle: Not Provided
 Number Of Devices: 24
# 这里可以查看到当前服务器允许扩容的最大内存大小,从以上输出可知,该机器理论上支持的最大内存为3TB
# 然后使用以下命令查询机器可用的内存:

[root@baremetal-3-77 ~]# grep MemTotal /proc/meminfo
MemTotal:       263743724kB
# 可以看到机器可用的内存为263G,也即我们可以再扩3072G-263G内存。

BIOS 信息
%  dmidecode --type bios

# dmidecode 3.1
Getting SMBIOS data from sysfs.
SMBIOS 3.0.0 present.
 
Handle 0x0000, DMI type 0, 24 bytes
BIOS Information
	Vendor: American Megatrends Inc.
	Version: GL702ZC.305
	Release Date: 05/10/2018
	Address: 0xF0000
	Runtime Size: 64 kB
	ROM Size: 16 MB
	Characteristics:
		PCI is supported
		BIOS is upgradeable
		BIOS shadowing is allowed
		Boot from CD is supported
		Selectable boot is supported
		BIOS ROM is socketed
		EDD is supported
		5.25"/1.2 MB floppy services are supported (int 13h)
		3.5"/720 kB floppy services are supported (int 13h)
		3.5"/2.88 MB floppy services are supported (int 13h)
		Print screen service is supported (int 5h)
		Serial services are supported (int 14h)
		Printer services are supported (int 17h)
		ACPI is supported
		USB legacy is supported
		Smart battery is supported
		BIOS boot specification is supported
		Targeted content distribution is supported
		UEFI is supported
	BIOS Revision: 5.12


rmdir

概念

rmdir 命令是 remove directory 的缩写,主要作用是删除文件夹。但是,该命令只能用于删除空文件夹,而如果文件夹非空的话则会报错 7

$ rmdir folder
rmdir: failed to remove ‘folder': Directory not empty. 

如果需要使用 rmdir 命令来删除一个文件夹的话,需要先将目标文件夹清空再进行删除。


rm

概念

rm(英文全拼:remove)命令用于删除一个文件或者目录 78

其语法如下:

rm [options] name...

用法

参数含义
-i删除前逐一询问确认;
-f即使原档案属性设为唯读,亦直接删除,无需逐一确认;
-r将目录及以下之档案亦逐一删除。

示例

删除文件可以直接使用 rm 命令,若删除目录则必须配合选项 -r,例如:

$ rm  test.txt 
$ rm:是否删除 一般文件 "test.txt"? y  
$ rm  homework  
$ rm: 无法删除目录"homework": 是一个目录  
$ rm  -r  homework  
$ rm:是否删除 目录 "homework"? y 

删除当前目录下的所有文件及目录,并且是直接删除,无需逐一确认命令行为:

$ rm  -rf  要删除的文件名或目录

比如,

$ rm  -rf   test.txt
# 删除文件名 test.txt:
$ rm  -rf   test/
#删除目录 test,不管该目录下是否有子目录或文件,都直接删除:

systemctl

示例

  • sysmctl list-unit-files
    查看诸如 centos 上的服务开机启动列表 9

ls

参考 10


概念

ls 命令是 linux 下最常用的命令。ls 命令就是 list 的缩写。缺省下 ls 用来打印出当前目录的清单。

如果 ls 指定其他目录,那么就会显示指定目录里的文件及文件夹清单。

通过 ls 命令不仅可以查看 linux 文件夹包含的文件,而且可以查看文件权限(包括目录、文件夹、文件权限),查看目录信息等等。


用法

命令格式:

ls [选项] [目录名]
参数含义
-a, –all列出目录下的所有文件,包括以 . 开头的隐含文件
-A-a,但不列出 . (表示当前目录)和 .. (表示当前目录的父目录)
-c配合 -lt:根据 ctime 排序及显示 ctime (文件状态最后更改的时间) 配合 -l:显示 ctime 但根据名称排序,否则:根据 ctime 排序
-C每栏由上至下列出项目
–color[=WHEN]控制是否使用色彩分辨文件。WHEN 可以是 neveralwaysauto 其中之一
-d, –directory将目录象文件一样显示,而不是显示其下的文件。
-D, –dired产生适合 Emacsdired 模式使用的结果
-f对输出的文件不进行排序,-aU 选项生效,-lst 选项失效
-g类似 -l, 但不列出所有者
-G, –no-group不列出任何有关组的信息
-h, –human-readable以容易理解的格式列出文件大小 (例如 1K 234M 2G)
–si类似 -h,但文件大小取 1000 的次方而不是 1024
-H, –dereference-command-line使用命令列中的符号链接指示的真正目的地 –indicator-style =方式 指定在每个项目名称后加上指示符号<方式>:none (默认),classify (-F),file-type (-p)
-i, –inode印出每个文件的 inode
-I, –ignore=样式不印出任何符合 shell 万用字符<样式>的项目
-k–block-size=1K ,以 k 字节的形式表示文件的大小。
-l除了文件名之外,还将文件的权限、所有者、文件大小等信息详细列出来。
-L, –dereference当显示符号链接的文件信息时,显示符号链接所指示的对象而并非符号链接本身的信息
-m所有项目以逗号分隔,并填满整行行宽
-o类似 -l,显示文件的除组信息外的详细信息。
-r, –reverse依相反次序排列
-R, –recursive同时列出所有子目录层
-s, –size以块大小为单位列出所有文件的大小
-S根据文件大小排序 –sort=WORD 以下是可选用的 WORD 和它们代表的相应选项:extension -X status -c
none -U time -t
size -S atime -u
time -t access -u
version -v use -u
-t以文件修改时间排序
-u配合 -lt,显示访问时间而且依访问时间排序;
配合 -l,显示访问时间但根据名称排序;
否则,根据访问时间排序
-U不进行排序;依文件系统原有的次序列出项目
-v根据版本进行排序
-w, –width=COLS自行指定屏幕宽度而不使用目前的数值
-x逐行列出项目而不是逐栏列出
-X根据扩展名排序
-1每行只列出一个文件
–help显示此帮助信息并离开
–version显示版本信息并离开

示例

按修改时间排序

顺序
  1. -altlist all by modified time
Documents % ls -alt
total 1376
drwxr-xr-x   25   staff     800 Feb 26 13:34 Documents_2021-2023
-rw-r--r--@   1   staff   14340 Feb 26 13:15 .DS_Store
drwxr-xr-x+ 929   staff   29728 Feb 25 11:07 ..
drwx------@  16   staff     512 Feb 25 11:02 .
drwxr-xr-x   20   staff     640 Feb 25 11:02 Job Seeking
drwxr-xr-x    5   staff     160 Feb 25 11:00 CV
drwxr-xr-x   17   staff     544 Feb  9 21:35 CL
-rw-r--r--@   1   staff  210945 Nov 11 12:17 历史.docx
-rw-r--r--@   1   staff     165 Oct 10 19:34 .~geo.xlsx
  1. --sort=time –lasort order, list all


倒序
  1. -alrtlist all by reverse modified time
-rw-r--r--@   1   staff     165 Oct 10 19:34 .~geo.xlsx
-rw-r--r--@   1   staff  210945 Nov 11 12:17 历史.docx
drwxr-xr-x   17   staff     544 Feb  9 21:35 CL
drwxr-xr-x    5   staff     160 Feb 25 11:00 CV
drwxr-xr-x   20   staff     640 Feb 25 11:02 Job Seeking
drwx------@  16   staff     512 Feb 25 11:02 .
drwxr-xr-x+ 929   staff   29728 Feb 25 11:07 ..
-rw-r--r--@   1   staff   14340 Feb 26 13:15 .DS_Store
drwxr-xr-x   25   staff     800 Feb 26 13:34 Documents_2021-2023

按创建时间排序

顺序
  1. -alclist all by created time
xueshanzhang@XUESHANs-MacBook-Pro Documents % ls -alc
total 1376
drwx------@  16   staff     512 Feb 25 11:02 .
drwxr-xr-x+ 929   staff   29728 Feb 26 14:43 ..
-rw-r--r--@   1   staff   14340 Feb 26 13:15 .DS_Store
-rw-r--r--@   1   staff     165 Oct 10 19:34 .~geo.xlsx
drwxr-xr-x   17   staff     544 Feb  9 21:35 CL
drwxr-xr-x    5   staff     160 Feb 25 11:00 CV
drwxr-xr-x   25   staff     800 Feb 26 13:34 Documents_2021-2023
drwxr-xr-x   20   staff     640 Feb 25 11:02 Job Seeking
drwxr-xr-x   10   staff     320 Mar 14  2022 Personal Document
-rw-r--r--@   1   staff  210945 Feb 25 11:01 历史.docx

倒序
  1. -alrclist all by reverse created time
xueshanzhang@XUESHANs-MacBook-Pro Documents % ls -alrc
total 1376
-rw-r--r--@   1   staff  210945 Feb 25 11:01 历史.docx
drwxr-xr-x   10   staff     320 Mar 14  2022 Personal Document
drwxr-xr-x   20   staff     640 Feb 25 11:02 Job Seeking
drwxr-xr-x   25   staff     800 Feb 26 13:34 Documents_2021-2023
drwxr-xr-x    5   staff     160 Feb 25 11:00 CV
drwxr-xr-x   17   staff     544 Feb  9 21:35 CL
-rw-r--r--@   1   staff     165 Oct 10 19:34 .~geo.xlsx
-rw-r--r--@   1   staff   14340 Feb 26 13:15 .DS_Store
drwxr-xr-x+ 929   staff   29728 Feb 26 14:43 ..
drwx------@  16   staff     512 Feb 25 11:02 .

按用户访问时间排序

顺序
  1. -alulist all by user access time
Documents % ls -alu
total 1376
drwx------@  16   staff     512 Feb 25 11:02 .
drwxr-xr-x+ 929   staff   29728 Feb 26 14:43 ..
-rw-r--r--@   1   staff   14340 Feb 25 11:06 .DS_Store
-rw-r--r--    1   staff       0 Nov 15  2021 .localized
-rw-r--r--@   1   staff     165 Oct 10 19:34 .~geo.xlsx
drwxr-xr-x   17   staff     544 Feb  9 21:35 CL
drwxr-xr-x    5   staff     160 Feb 25 11:00 CV
drwxr-xr-x   25   staff     800 Feb 26 13:34 Documents_2021-2023
drwxr-xr-x   20   staff     640 Feb 25 11:02 Job Seeking
drwxr-xr-x   10   staff     320 Mar 14  2022 Personal Document
-rw-r--r--@   1   staff  210945 Feb 25 11:01 历史.docx

倒序
  1. -alrulist all by reverse user access time
xueshanzhang@XUESHANs-MacBook-Pro Documents % ls -alru
total 1376
-rw-r--r--@   1   staff  210945 Feb 25 11:01 历史.docx
drwxr-xr-x   10   staff     320 Mar 14  2022 Personal Document
drwxr-xr-x   20   staff     640 Feb 25 11:02 Job Seeking
drwxr-xr-x   25   staff     800 Feb 26 13:34 Documents_2021-2023
drwxr-xr-x    5   staff     160 Feb 25 11:00 CV
drwxr-xr-x   17   staff     544 Feb  9 21:35 CL
-rw-r--r--@   1   staff     165 Oct 10 19:34 .~geo.xlsx
-rw-r--r--@   1 xueshanzhang  staff     165 Nov 30  2021 .~XueshanZhang_Interview_20211018.pptx
-rw-r--r--    1 xueshanzhang  staff       0 Nov 15  2021 .localized
-rw-r--r--@   1 xueshanzhang  staff   14340 Feb 25 11:06 .DS_Store
drwxr-xr-x+ 929 xueshanzhang  staff   29728 Feb 26 14:43 ..
drwx------@  16 xueshanzhang  staff     512 Feb 25 11:02 .


chattr

root 用户删除一个普通的文件,提示 permission denied。该文件标红。原因可能是,设置了 chattr 权限保护:可以通过 lsattr 命令查看 11


概念

chatrr 权限是一种非常特殊的权限,它设置的属性对超级用户 root 也有效。只不过,它设置的属性也可以通过 root 来删除。
归根结底,chattr 的作用是防止用户(包括 root )对文件或目录进行误操作(比如修改或删除)的一种保险手段。


用法

chattr 命令的语法格式为:
chattr [±=][选项] 文件/目录

参数含义
+增加权限(属性)
-删除权限(属性)
=设置权限(属性)

权限具体类型:

权限类型含义
a 设置 a 之后,这个文件将只能增加数据,而不能删除也不能修改数据,只有 root 才能设置这个属性。
i它可以让一个文件不能被删除、改名,设置连接也无法写入或添加数据。只有 root 才能设置这个属性。例如 chattr +i filename

问题:已经去掉了某个文件的 i 属性和 a 属性,为什么还是不能删除???
原因在于该文件的所在目录的属性也要去掉。
如果去掉文件或目录的隐藏属性之后还是不能删除,那么查看父目录是否配置了不可删除的隐藏属性,若父目录有配置,文件也是不能删除的,需要逐级往上查看。


lsattr

概念

使用 chattr 命令配置文件或目录的隐藏属性后,可以使用 lsattr 命令查看 12


用法

lsattr 命令,用于显示文件或目录的隐藏属性,其基本格式如下:

[root@localhost ~]# lsattr [选项] 文件或目录名

常用选项有以下 3 种:

参数含义
-a后面不带文件或目录名,表示显示所有文件和目录(包括隐藏文件和目录)
例如,lsattr -a
-d如果目标是目录,只会列出目录本身的隐藏属性,而不会列出所含文件或子目录的隐藏属性信息;
例如,lsattr -d /home/Desktop
-R-d 恰好相反,作用于目录时,会连同子目录的隐藏信息数据也一并显示出来。

示例

  1. 文件
    在这里插入图片描述

  2. 文件夹
    不使用任何选项,仅用于显示文件的隐藏信息,不适用于目录。
    在这里插入图片描述


fuser

参考这里 13


概念

fuser 命令是一个非常聪明的 unix 实用程序,用于查找正在使用某个文件、目录或socket 的进程。 它还提供有关拥有该进程的用户和访问类型的信息。

fuser 工具显示了使用指定文件或文件系统的每个进程的进程 ID(PID)

如果你的精简版运行 fuser 提示如下信息:

 -bash: fuser: command not found

请执行如下命令安装:

 [winbert@winbert-server ~]$ sudo yum -y install psmisc

用法

man 命令可用于查看任何命令的帮助手册,但是学习新知识(尤其是 linux 命令)的最佳方法是通过阅读真实的示例,并且不断地在终端中键入命令。 在终端中运行以下命令,以获取有关 fuser 实用程序的使用选项的信息。

[winbert@winbert-server ~]$ fuser
No process specification given
Usage: fuser [-fMuvw] [-a|-s] [-4|-6] [-c|-m|-n SPACE] [-k [-i] [-SIGNAL]] NAME...
  fuser -l
  fuser -V
Show which processes use the named files, sockets, or filesystems.

 -a,--all    display unused files too
 -i,--interactive  ask before killing (ignored without -k)
 -k,--kill    kill processes accessing the named file
 -l,--list-signals  list available signal names
 -m,--mount   show all processes using the named filesystems or block device
 -M,--ismountpoint  fulfill request only if NAME is a mount point
 -n,--namespace SPACE search in this name space (file, udp, or tcp)
 -s,--silent   silent operation
 -SIGNAL    send this signal instead of SIGKILL
 -u,--user    display user IDs
 -v,--verbose   verbose output
 -w,--writeonly  kill only processes with write access
 -V,--version   display version information
 -4,--ipv4    search IPv4 sockets only
 -6,--ipv6    search IPv6 sockets only
 -      reset options

 udp/tcp names: [local_port][,[rmt_host][,[rmt_port]]]

示例

查看使用某个目录的进程

fuser 序可以与 -v 选项一起使用,该选项以详细模式运行该工具。
verbose 选项用于在计算机屏幕上生成详细输出,因此用户可以实时查看实用程序正在执行的操作。

[winbert@winbert-server ~]$ fuser -v .
      USER  PID ACCESS COMMAND
/home/winbert:  winbert 1435 ..c.. bash

上面的输出显示,以详细模式运行时,fuser 会提供有关 USERPIDACCESSCOMMAND 的信息。 ACCESS 下的 c 字符表示访问类型,表示“当前目录”。 访问类型很多,例如 e(正在运行的可执行文件),r(根目录),f(打开文件。在默认显示模式下省略 f),F(用于写入的打开文件,在默认显示模式下省略 F)和 mmmap 文件或共享库)。


查看使用比如tcp或udp套接字的进程

有时您需要使用 TCPUDP 套接字查找进程。 为了查找这些进程,需要使用 -n 选项。-n 选项用于选择相应的名称空间。

[root@huidukongjian-h4 docker]# fuser -v -n tcp 80
      USER  PID ACCESS COMMAND
80/tcp:    root  27411 F.... docker-proxy

默认情况下,fuser 将同时在 IPv6IPv4 套接字中查找,但是可以使用 -4-6 选项更改默认选项。 -4 选项代表 IPv4-6 选项代表 IPv6。 请注意,fuser 仅将 PID 输出到 stdout,其他所有内容都发送到 stderr

fuser -v -n tcp 80 命令的结果显示,使用 docker 的进程的进程 ID27411,而用于启动该进程的命令为 docker-proxy。 进程 IDPID)可以以多种方式使用,其中之一是进程终止。 与 PID 一起使用时,kill 命令根据该进程 ID 终止进程。 fuser 还可用于终止访问特定文件的进程。 在以下命令中,-k 选项用于终止正在使用在端口 123 上运行的tcp 侦听器的进程。为确保用户不会杀死错误的进程,使用 -i 选项询问用户是否在终止进程之前进行确认。


杀死进程前询问

fuser -i -k 123/tcp
123/tcp:    12216
Kill process 12216 ? (y/N)
Use The -6 Option To Look For IPv6 Sockets.

查找占用某个文件系统的进程

-m 选项可与 fuser 命令一起使用,以查找访问文件文件系统上文件的进程。 此选项需要文件名作为输入参数。

-m 选项非常有用,尤其是当用于发现正在访问文件系统的进程并标识要杀死的进程时。

以下命令显示所有访问 example.txt 所在的文件系统的进程。仔细查看 -m 选项如何与fuser 一起使用。

[root@huidukongjian-h4 docker]# fuser -v -m data/v2/config.json 
USER  PID ACCESS COMMAND
/root/docker-v2/data/v2/config.json:
root  kernel mount /
root   1 .rce. systemd
root   2 .rc.. kthreadd
root   3 .rc.. rcu_gp
root   4 .rc.. rcu_par_gp
root   6 .rc.. kworker/0:0H-kbl
root   8 .rc.. mm_percpu_wq
......

mount

参考 1415


概念

如果想在运行的 Linux 下访问其它文件系统中的资源的话,就要用挂载命令 mount 来实现。

在进行挂载之前,要明确几件事情:

  • ① 单一文件系统不应该被重复挂载在不同的挂载点(目录)中
  • ② 单一目录不应该重复挂载多个文件系统
  • ③ 要作为挂载点的目录,必须是一个已经存在的目录,理论上应该为空目录,但是也可以不为空。
    如果你挂载点的目录不是空的,那么挂载了文件系统之后,挂载点目录下原来的所有文件/目录都会被隐藏、不可用。umount 以后才会恢复正常。

例如:你的 /home 目录下原来有 /home/test1/home/test2 两个目录。如果此时你加入了一个新的磁盘,并将其直接挂载在 /home 目录下,那么你原来的 /home/test1/home/test2 这两个目录都会被隐藏(但不是覆盖)。当你将新的磁盘卸载掉之后,/home 目录下原来的东西都会再跑出来。

  • ④ 系统自动挂载的信息记录在 /etc/fstab 文件中,只有记录到这个文件中的磁盘在系统启动时才会自动挂载。不在这个文件中记录的磁盘挂载了关机后就自动卸载,开机后又需要自己手动挂载。

实现自动挂载的方式参考本文的 自动挂载 部分。


用法

语法格式

mount [-参数] [设备名称] [挂载点]

其中,
设备名称 是指 与包括文件系统的磁盘或分区相关的设备文件
挂载点 是指 要mount到的目录

比如,

mount  [-t 文件系统]  LABEL=' '  挂载点 
# 使用磁盘的 Label name 来挂载磁盘

mount  [-t 文件系统]  UUID=' '   挂载点
# 使用磁盘的 UUID 来挂载磁盘
# 尽量使用设备的 UUID 来挂载目录。因为相同的一个磁盘在不同的 Linux 系统中,文件名是很容易重复的,但是 UUID 是很难重复的

mount  [-t 文件系统]  设备文件名   挂载点 
# 使用磁盘的设备文件名来挂载磁盘

常用参数

选项含义
-a依照配置文件 /etc/fstab 的数据将文件内未挂载的磁盘都挂载上来。
-l单纯的输入 mount 会显示目前挂载的信息,加上 -l 之后可增列 Label 名称
-t可以加上文件系统的种类名来指定预挂载的类型。

Linux 常见支持的类型有:xfsext3ext4reiserfsvfatiso9660 (光盘格式)、nfscifssmbfs(后三种是网络文件系统类型)、auto (自动检测文件系统)。


也可以不加上 -t 这个选项,系统会自动分析最恰当的文件系统来尝试挂载你需要的设备。

那么系统是如何找出文件系统类型的呢?

由于文件系统几乎都有超级区块,Linux 可以通过分析超级区块搭配 Linux 自己的驱动程序去测试挂载,如果测试成功,就立刻自动使用该类型的文件系统挂载起来。

系统只会指定某些部分的类型的文件系统进行上述的挂载测试 (主要参考下面这两个文件)
- /etc/filesystems,系统指定的测试挂载文件系统类型的优先级;
- /proc/filesystemsLinux 系统已经加载的文件系统类型


Linux 支持的文件系统的驱动程序都写在如下的目录中:/lib/modules/$(uname -r)/kernel/fs/

例如 ext4 的驱动程序就写在 /lib/modules/$(uname -r)/kernel/fs//ext4/ 这个目录下 ext4 的驱动程序就写在 /lib/modules/$(uname -r)/kernel/fs//ext4/ 这个目录下。
-f伪装 mount,作出检查设备和目录的样子,但并不真正挂载文件系统。
-n在默认的情况下,系统会将实际挂载的情况即时写入 /etc/mtab 中,以利于其他程序的运行。但是在某些情况下(例如单人维护模式),为了避免问题会刻意不写入,此时就需要加上 -n 选项来实现不把安装记录在 /etc/mtab 文件中。
-r讲文件系统安装为只读。
-v详细显示安装信息。
-w将文件系统安装为可写,为命令默认情况。
-o后面可以接一些挂载时额外加上的参数。比如账号、密码、读写权限等。
使用多个 -o 参数的时候,-o 只用一次,参数之间用半角逗号隔开,比如 mount –o remount,rw


可与 mount 搭配的参数如下:

asyncsync,此文件系统是否使用同步写入的内存机制。默认为async

atimenoatime,文件系统是否会修改文件的读取时间。为了性能,某些时刻会使用 noatime

rorw,文件系统是只读 (ro) 还是可读写 (rw);

autonoauto,文件系统是否以 mount -a 自动挂载;

devnodev,文件系统是否可建立设备文件

suidnosuid,文件系统是否含有 suid / sgid 的文件格式;

execnoexec,文件系统是否拥有可执行的二进制文件

usernouser,是否允许文件系统让任何使用者执行mount。一般来说,mount 仅有 root 可以进行

defaults,默认值为 rwsuiddevexecautonouserasync

remount,重新挂载。这在系统出错,或重新更新参数时很有用

codepage=数值,挂载时指定挂载文件系统所使用的语系。在 man mount 找到 vfat 文件格式当中可以使用codepage 来处理 (中文语系为 950 )

iocharset=编码名,指定中文是Unicode 还是 Big5

loopLinux 下的文件制作 loop 设备挂载时时会用到
--bind挂载不特定目录,将一个挂载目录挂载到另一个目录下

单独使用 mount 也可以查看系统下所有设备文件的挂载情况,如下图所示,
在这里插入图片描述


示例

例如要挂载 windows 下文件系统为 FAT32D 盘,一般而言在 Linux 下这个分区对应 /dev/hda5,根据具体的分区情况会有不同,这里就以 hda5 来举例说明:

$ mkdir /mnt/hda5   //创建hda5的目录作为挂载点,位置和目录名可自定义//
$ mount -t vfat /dev/hda5 /mnt/hda5

一般而言,Linux 会自动探测分区的文件系统,除非让你指定时,否则 -t vfat 可以省掉。

$ mount /dev/hda5 /mnt/hda5

这样就可以进入 /mnt/hda5 目录去访问分区中的资源了。

还可以参考这里 16 如何挂载 SMB 文件系统。


自动挂载

在给系统新增了磁盘以后,如果重启系统我们会发现找不到存储了。这是因为关机后,挂载已经自动卸载掉了。我们当然可以手动再次将其挂载,但如果每次重启都需要这样手动操作会很不方便;因此我们可以利用自动挂载,这样系统每次开机的时候就可以自动将磁盘挂载上去了。

自动挂载可以有两种方式:

  1. 修改 /etc/fstab 文件

Linux 提供了开机自动挂载分区的功能,我们可以通过一个名为 /etc/fstab 的配置文件,来指定需要在开机时挂载的分区。

vim 打开 fstab 文件,可以看到文件格式如下:

#
# /etc/fstab
# Created by anaconda on Tue Oct 20 11:50:19 2015
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/vg_minimal-LogVol00 /                       ext4    defaults        1 1
UUID=f8066e4a-e1df-4815-9d6e-c74a6811ba5e /boot                   ext4    defaults        1 2
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0

可以很明显的看到文件有6列,

  • 第1列是设备名或者卷标,指定要挂载的设备,可以是一个 /dev 目录下的设备文件,例如 /dev/sdd1,也可以通过设备标签或者所谓的 UUID 来指定要挂载的设备,如 LABEL=某个设备标签UUID=某个设备UUID。用设备标签或 UUID 更加安全和稳定。
  • 第2列是挂载点,即指定挂载设备的目录。对于 swap 是没有挂载点,该处就显示 swap。;
  • 第3列是所要挂载设备的文件系统或者文件系统类型,一般常用的文件系统类型为 ext4swap 或者 iso9600。
  • 第4列是挂载选项,通常使用 defaults 就可以;
    第5列设置是否使用 dump 备份,置 0 为不备份,置 12 为备份,但 2 的备份重要性比 1 小;
    第6列设置是否开机的时候使用 fsck 检验所挂载的磁盘,置 0 为不检验,置 12 为检验,但置 2 盘比置 1 的盘晚检验。

本文需将逻辑卷 lv_study 挂载到 /lv_study ,文件系统为 ext4 格式,不进行 dump 备份以及开机磁盘检查。

/dev/mapper/lv_study  /lv_study        ext4    defaults        0 0

如果需要根据指定用户名和密码,则:

/dev/mapper/lv_study  /lv_study        ext4    username=USER, password=PWD      0 0

将上面的命令添加进 fstab 后,为了避免可能的错误,我们可以使用 mount -a 命令来检验编辑的内容是否有错。

执行 mount -a 命令后,用 df -h 查看会发现磁盘已经挂载成功,说明输入没有错误。下次重启的时候系统就可以自动进行挂载了。

注意:
(1)根目录必须优先于其他挂载点
(2)挂载点必须为已经存在的目录
(3)卸载时必须保证当前磁盘没有发生读写操作


  1. 修改 /etc/rc.d/rc.local 文件
    vim 打开 fstab 文件,可以看到文件格式如下:
    mount 命令 mount /dev/mapper/lv_study /lv_study 添加进 rc.local 文件是另一种实现开机自动挂载的方式。

问题

1.

参考这里 17


问题描述

Linux 下挂载后的分区或者磁盘某些时候需要 umount 的时候出现类似 umount: /mnt: target is busy. 等字样,或者 umount: /xxx: device is busy.,如下所示:

在这里插入图片描述
该报错通常是由于待卸载磁盘正在使用,导致无法直接卸载。需要将当前使用数据盘的进程杀掉,才能卸载。


解决方法
使用 fuser 命令处理

1.1 安装 fuser

[root@server-10 ~]# yum install psmisc 

1.2 查看与待卸载磁盘有关的进程

[root@server-10 ~]# fuser -mv /mnt/
                     USER        PID ACCESS COMMAND
/mnt:                root     kernel mount /mnt
                     root      13830 ..c.. bash

1.3 杀死相关进程(强制 kill 进程可能会导致数据丢失,请确保数据得到有效备份后,再进行相关操作),并再次查看

[root@server-10 ~]# fuser -kv /mnt/
                     USER        PID ACCESS COMMAND
/mnt:                root     kernel mount /mnt
                     root      13830 ..c.. bash
[root@server-10 ~]# fuser -mv /mnt/
                     USER        PID ACCESS COMMAND
/mnt:                root     kernel mount /mnt

1.4 确认无进程连接后,使用 umount 卸载命令

[root@server-10 ~]# umount /mnt/

使用 lsof 命令处理
[root@server-10 ~]# lsof /mnt/
COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
bash    16302 root  cwd    DIR   8,17       50   64 /mnt

找到 PID 对应的进程或者服务,然后杀死或者停止相应服务即可。


2.

参考这里 18


问题描述

显示问号表明你的系统中没有可识别使用的中文字体,请先安装中文字体。确保你的系统已经可以很好的显示中文。显示为乱码一般是 mount 默认使用的文件系统编码和文件系统中文件的实际编码不一致造成的。要想正常显示中文文件,mount 时需要用到 -o 参数里的 codepageiocharset 选项。codepage 指定文件系统的代码页,简体中文中文代码是 936iocharset 指定字符集,简体中文一般用 cp936gb2312


解决方法

$ mount –o iocharset=gb2312 codepage=936 /dev/hda5 /mnt/hda5

一般来说 mount –o iocharset=cp936 /dev/hda5 /mnt/hda5 就可以解决问题了。

如果这样做了以后还有问题,请尝试 UTF-8 编码:

# mount –o iocharset=utf8 /dev/hda5 /mnt/hda5

3.

参考这里 18


问题描述

mount 上去以后分区普通用户不可写。


解决方法

mount 时加上 –oumask=000 即可:

$ mount –o umask=000, iocharset=cp936 /dev/hda5 /mnt/hda5

4.

参考这里 18


问题描述

mount 上去后的分区中的文件都变成短文件名了?


解决方法

这是文件系统挂错的原因,将 FAT32 挂载成 FAT16 时就会出现这种情况,先 umount,然后用 –t vfat 重新挂载即可解决问题。

$ mount –t vat /dev/hda5 /mnt/hda5

5.

参考这里 18


问题描述

不能 mount ntfs 分区?


解决方法

这是内核不支持 NTFS 文件系统的原因,请重新编译内核或者安装内核的 NTFS 文件系统支持包,以使得内核有 NTFS 文件系统的支持。


6.

参考这里 18


问题描述

如何挂载U盘和mp3?


解决方法

如果计算机没有其它 SCSI 设备和 usb 外设的情况下,插入的 U盘 的设备路径是 /dev/sda1,用命令:

$ mkdir /mnt/u
$ mount /dev/sda1 /mnt/u

挂载即可。


7.

参考这里 18


问题描述

可以直接使用iso文件吗?


解决方法

可以,就是 mount 的这一选项使得 Linux 下有免费虚拟光驱的说法,具体用法是:

$ mkdir /mnt/iso
$ mount –o loop linux.iso /mnt/iso

当然,挂载以后挂载点 /mnt/iso 也是只读的。


8.

参考这里 18


问题描述

怎么不可以 mount iso 文件?
一般而言,大多数的发行版使用的内核均已将 loop 设备的支持编译进去了,但是也有没有的情况,所以请确保系统所使用的内核支持 loop 设备。

第二种情况是 iso 文件被放置到了 NTFS 或其它只读文件系统中了。挂载 loop 设备必须要求挂载到一个可写的分区中,目前 Linux 内核对 NTFS 文件系统的写支持非常有限,请将 iso 文件复制到其它可写文件系统中后再挂载。


9.

参考这里 18


问题描述

如何挂载光驱和软驱?


解决方法

一般来说 CDROM 的设备文件是 /dev/hdc,软驱的设备名是 /dev/fd0

$ mkdir /mnt/cdrom
$ mount /dev/hdc /mnt/cdrom //挂载光驱 //
$ mkdir /mnt/floppy 
$ mount /dev/fd0 /mnt/floppy //挂载软驱 //

10.

问题描述

为何挂载的 CD-ROM 不能显示中文文件?


解决方法

使用 –o iocharset=cp936 选项一般能解决问题,否则使用 utf-8 编码。

$ mount –o iocharset=cp936 /dev/hdc /mnt/cdrom

11.

问题描述

如何开机自动挂载分区?


解决方法

每次挂载都要输入那么长的命令的确是繁琐了些,只要将分区信息写到 /etc/fstab 文件中即可实现系统启动的自动挂载,例如对于 /dev/hda5 的自动挂载添加如下的行即可:

/dev/hda5 /mnt/hda5 vfat defaults,iocharset=cp936, rw 0 0

12.

问题描述

如何挂载 samba 分区?


解决方法

$ mkdir /mnt/share
$ mount -t smbfs -ousername=root,password=abc,codepage=936,iocharset=gb2312//192.168.1.100/share   /mnt/share

如果中文显示不正常请尝试 UTF-8 编码。当然可以写到 fstab 中实现自动挂载。


13.

问题描述

mount--bind 是什么意思?


解决方法

mount --bind 是将一个目录中的内容挂载到另一个目录上,用法是

$ mount --bind olddir newdir

这个命令使得自己搭建的 FTP 要共享某个目录的时候变得特别方便。如果要取消 mount 用命令:

$ mount --move olddir newdir

即可。

如果 mount --bind 也想写入 fstab 中的话格式如下:

olddir newdir none bind 0 0

umount

概念


用法

语法格式

umount  [选项]  设备文件名/挂载点
  • ① 文件系统卸载的方式,最后可以是设备文件名也可以是挂载点(建议)。但是如果你的挂载点被另一个挂载点所挂载,则必须使用挂载点卸载
  • ② 如果你当前的路径在你的挂载点内,则你需要退出到当前挂载点路径外才可以卸载

常用参数

参数含义
-f强制卸载,可用在类似网络文件系统(NFS)无法读取的情况下
-l立刻卸载文件系统,比 -f 还强
-n不更新 /etc/mtab 情况下卸载

示例

譬如 /dev/hda5 已经挂载在 /mnt/hda5 上, 用一下三条命令均可卸载挂载的文件系统

$ umount /dev/hda5
$ umount /mnt/hda5
$ umount /dev/hda5 /mnt/hda5

问题

问题描述

为什么 umount 的时候老显示 device busy

这是因为有程序正在访问这个设备,最简单的办法就是让访问该设备的程序退出以后再 umount。可能有时候用户搞不清除究竟是什么程序在访问设备。


解决方式

如果用户不急着 umount,则可以用:

$ umount -l /mnt/hda5

来卸载设备。选项 –l 并不是马上 umount,而是在该目录空闲后再 umount。还可以先用命令 ps aux 来查看占用设备的程序 PID,然后用命令 kill 来杀死占用设备的进程,这样就 umount 的非常放心了。


echo

-n

概念

不换行输出,比如,
在这里插入图片描述

-e

参考此处 19


概念

echophp 中是输入,那么在 linux 中是不是也是输入呢?当然 echolinux 也是输入,不过它的用法比 php 强大多了,可以带参数。

echo 命令用于在 shell 中打印 shell 变量的值,或者直接输出指定的字符串。linuxecho 命令,在 shell 编程中极为常用, 在终端下打印变量 value 的时候也是常常用到的,因此有必要了解下 echo 的用法。

echo 命令的功能是在显示器上显示一段文字,一般起到一个提示的作用。


用法

语法格式
echo (选项) (参数) 选项

常用参数
参数含义
-e激活转义字符。使用 -e 选项时,若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出:

\a,发出警告声;
\b,删除前一个字符;
\c,最后不加上换行符号;
\f,换行但光标仍旧停留在原来的位置;
\n,换行且光标移至行首;
\r,光标移至行首,但不换行;\t,插入 tab
\v\f 相同;
\\,插入 \ 字符;
\nnn,插入 nnn(八进制)所代表的 ASCII 字符;

格式
  1. 文字色
echo -e "\e[1;31mThis is red text\e[0m"

比如,
在这里插入图片描述

\e[0m,将颜色重新置回
颜色码:重置=0,黑色=30,红色=31,绿色=32,黄色=33,蓝色=34,洋红=35,青色=36,白色=37


  1. 背景色
echo -e "\e[1;41This is red text.\e[0m

比如,
在这里插入图片描述

\e[0m,将颜色重新置回
颜色码:重置=0,黑色=40,红色=41,绿色=42,黄色=43,蓝色=44,洋红=45,青色=46,白色=47


  1. 闪动文字
    语法格式 echo -e "\033[字背景颜色;字体颜色m字符串\033[0m"
echo -e "\033[37;31;5mMySQL Server Stop...\033[39;49;0m"

比如,
在这里插入图片描述

还有其他数字参数:0 关闭所有属性、1 设置高亮度(加粗)、4 下划线、5 闪烁、7 反显、8 消隐


示例

$ echo -e "a\bdddd"  												// 前面的a会被擦除
dddd

$ echo -e "a\adddd" 												// 输出同时会发出报警声音
adddd

$ echo -e "a\ndddd" 												// 自动换行
a
dddd

kill

Ctrl-C与kill -INT

^C 会向前台进程群组中的所有进程发送 SIGINT 信号。用 kill 命令达到相同的目的,应该发送 kill -SIGINT -<pid> 给进程群组(OS-level概念),或者 kill -SIGINT % 发送给 jobshell-level 概念,以 & 结尾的 pipeline) 20


date

date 命令用来显示系统日期和时间,也可以用于设置系统日期和时间。默认情况下,date 命令显示 linux 系统所配置的时区的日期。只有 root 账户才能改变日期和时间 21


语法

date [OPTION]... [+FORMAT]
date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]
date +%[format-option]

命令作用输出
date显示当前的日期和时间。$ date
Sun Sep 4 21:31:36 CST 2022
date -u显示格林尼治时间 / UTC 时区。$ date -u
Sun Sep 4 13:38:09 UTC 2022
date -d

date --date
根据给定字符串以日期格式显示。这并不会影响系统的真实日期和时间的值。$ date --date "09/04/2022"
Sun Sep 4 00:00:00 CST 2022

$ date -d "09/04/2022"
Sun Sep 4 00:00:00 CST 2022

$ date --date "Sep 4 2022"
Sun Sep 4 00:00:00 CST 2022
date --date显示过去的时间$ date --date "2 year ago"
Fri Sep 4 22:11:42 CST 2022

2 年前的日期和时间


$ date --date “yesterday"
Sat Sep 3 22:15:29 CST 2022

昨日的日期和时间


$ date --date "1 month ago"
Thu Aug 4 22:15:29 CST 2022

上个月的日期和时间
date --date显示将来的时间$ date --date "next tue"
Tue Sep 6 00:00:00 CST 2022

下个周二的日期和时间


$ date --date "1 year"
Mon Sep 4 22:15:29 CST 2023

明年的日期和时间
date -s
date --set
设置系统日期和时间$ date --set="Tue Nov 13 15:23:34 PDT 2018"
$ date
Tue Nov 13 15:23:34 PDT 2018
date -f
date --file
在每行以日期和时间的格式显示日期字符串。与 -date 选项相近,但区别是 -date 只能赋1个日期字符串但是在1个文件中给出多个日期字符串$ cat >> datefile
Sep 23 2018
Nov 03 2019


$ date --file=datefile
Sun Sep 23 00:00:00 PDT 2018
Sun Nov 3 00:00:00 PDT 2019
date -r用以显示一个 datefile 的最后修改时间
date +%[format-option]可搭配 date 命令使用的格式列表:

%D: Display date as mm/dd/yy.
%d: Display the day of the month (01 to 31).
%a: Displays the abbreviated name for weekdays (Sun to Sat).
%A: Displays full weekdays (Sunday to Saturday).
%h: Displays abbreviated month name (Jan to Dec).
%b: Displays abbreviated month name (Jan to Dec).
%B: Displays full month name(January to December).
%m: Displays the month of year (01 to 12).
%y: Displays last two digits of the year(00 to 99).
%Y: Display four-digit year.
%T: Display the time in 24 hour format as HH:MM:SS.
%H: Display the hour.
%M: Display the minute.
%S: Display the seconds.
$ date "+%D"
10/11/17

$ date "+%D %T"
10/11/17 16:13:27

$ date "+%Y-%m-%d"
2017-10-11

$ date "+%Y/%m/%d"
2017/10/11

$ date "+%A %B %d %T %y"
Thursday October 07:54:29 12 17

rpm

参考这里 22


用法

命令说明
rpm -i example rpm安装 example.rpm 包。
rpm -iv example.com安装 example.rpm 包并在安装过程中显示正在安装的文件信息。
rpm -ivh example.com安装 example.rpm 包并在安装过程中显示正在安装的文件信息及安装进度。
rpm -qa | grep example.rpm查看安装完成的软件 example.rpm
rpm -e --nodepvs example.rpm要卸载的安装包 example.rpm

shutdown

命令说明
shutdown -h now立刻进行关机。
shutdown -r now现在重新启动计算机。

shutdown -h nowshutdown -r now 必须是root用户或者具有root权限的用户才能使用 23


halt / reboot

halt (立刻进行关机) 和 reboot (现在重新启动计算机) 是 Linux 系统中的任何用户都可使用用来关机,不需要 root 权限 23


lspci

参考 24252627


概念

lspci 代表 pci 列表,可将此命令视为 ls + pci
它这将显示有关服务器中所有 PCI 总线的信息。除了显示有关总线的信息外,它还将显示有关连接到您的 PCIPCIe 总线的所有硬件设备及驱动程序的信息。
例如,它将显示有关以太网卡、RAID 控制器、视频卡等的信息。

lspci 实用程序是 pciutils 28 软件包的一部分,可用于各种基于 LinuxBSD 的操作系统。
如果您没有 pciutilis,请将其安装在您的系统上,比如 yum install pciutils

由于访问权限,普通用户运行 lspci 时显示的信息可能会受限,因此可以使用 sudo 运行命令,系统会给出完整的信息图。

为了能使用这个命令所有功能,你需要 linux 2.1.82 或以上版本,支持 /proc/bus/pci 接口的核心。在旧版本核心中,PCI 工具必须使用只有 root 才能执行的直接硬体访问,而且总是出现竞争状况以及其他问题。
如果你要报告 PCI 设备驱动中,或者是 lspci 自身的 bugs,请在报告中包含 lspci -vvx 的输出。


用法

基础

选项含义
-m以机器可读的方式转储 PCI 设备数据 (支持两种模式:普通和冗余),便於稿本解析。
-mm
-t以树格式显示输出,其中包含有关总线的信息,以及设备如何连接到这些总线。

显示

选项含义
-v使得 lspci 以冗余模式显示所有设备的详细信息。
-vv使得 lspci 以过冗余模式显示更详细的信息 (事实上是 PCI 设备能给出的所有东西)。这些数据的确切意义没有在此手册页中解释,如果你想知道更多,请参照 /usr/include/linux/pci.h 或者 PCI 规范。
-vvv
-k显示内核加载了哪些驱动程序模块。注意,此选项仅适用于 Kernel 2.6 及更高版本。
-x以十六进制显示 PCI 配置空间 (configuration space) 的前 64 个字节映像 (标准头部信息)。此参数对调试驱动和 lspci 本身很有用。
-xxx以十六进制显示所有 PCI 配置空间的映像。此选项只有 root 可用,并且很多 PCI 设备在你试图读取配置空间的未定义部分时会崩溃 (此操作可能不违反 PCI 标准,但是它至少非常愚蠢)。
-xxxx
-b以总线为中心进行查看。显示所有 IRQ 号和记忆体地址,就像 PCI 总线上的卡看到的一样,而不是核心看到的内容。
-D总是显示 PCI 域值。默认情况下,当只有 0 域时,lspci 会略过显示域值。

设备 ID 和 供应商

选项含义
-n以数字形式显示 PCI 生产厂商和设备号,而不是在 PCI ID 数据库中查找它们。
-nn显示供应商和设备 ID 号。设备名称后的方括号内有用冒号分隔的数字,即供应商和设备 ID
-q
-qq
-Q新设备和供应商总是在不断迭代。如果看到显示为 unknown 的设备,说明你的 PCI 设备 ID 数据库可能已过时。有两种方法可以检查更新。-Q 选项会使用 DNS 查询中央数据库,当然,这需要联网。
还可以通过运行命令 update-pciids 来更新本地 PCI ID 数据库。

选择设备

选项含义
-s [[<bus>]:][<slot>][.[<func>]]仅显示指定总线、插槽上的设备或设备上的功能块信息。设备地址的任何部分都可以忽略,或以 「*」 代替 (意味著所有值)。所有数字都是十六进制。例如:「0:」 指的是在 0 号总线上的所有设备;「0」 指的是在任意总线上 0 号设备的所有功能块;「0.3」 选择 了所有总线上 0 号设备的第 3 个功能块;「.4」 则是只列出每一设备上的第四个功能块。
-d [<vendor>]:[<device>]只显示指定生产厂商和设备 ID 的设备。这两个 ID 都以十六进制表示,可以忽略或者以 「*」 代替 (意味著所有值)。

其他选项

选项含义
-i <file>使用 <file> 作为 PCI ID 数据库而不是使用预设的 /usr/share/hwdata/pci.ids
-p <dir>使用 <dir> 作为包含 PCI 总线信息的目录而不是使用预设的目录 /proc/bus/pci
-M使用总线映射模式,这种模式对总线进行全面地扫描以查明总线上的所有设备,包括配置错误的桥之后的设备。请注意,此操作只应在调试时使 用,并可能造成系统崩溃 (只在设备有错误的时候,但是不幸的是它们存在),此命令只有 root 可以使用。同时,在不直接接触硬体的 PCI 访问模式中使用 -M 参数没有意义,因为显示的结果 (排除 lspci 中的 bug 的影响) 与普通的列表模式相同。
--version显示 lspci 的版本。这个选项应当单独使用。

访问 PCI

PCI utilities 使用 PCI lib来和 PCI 设备(更多细节看 pcilib(7) )交互。
你可以使用下面的选项来影响它的行为:

选项含义
-A <method>支持多种访问 PCI 硬件的方式。默认情况下,使用第一种可用方式,但是你可以用这个选项来覆盖这个默认方式。
使用 -A help 可以查看可用方法的列表以及各自的描述。
linux-sysfslinux-procintel-conf1intel-conf2dump
-O <param>=<value>
-G增加库的调试等级。(可用於所有系统)
-H1通过 Intel 架构 1 来实现直接硬体访问。(只能用於 i386 及其相容机)
-H2通过 Intel 架构 2 来实现直接硬体访问。警告:此模式只能寻址任何总线上的前 16 个设备,并且在很多情况下相当不可靠。(只能用於 i386 及其相容机)
-F <file>从所给的包含 lspci -x 命令输出的档案中获取相关信息。这在分析使用者提交的错误报告时很有用,因为你可以用任何方式来显示硬体配置信息而无需为了获取更多信息打扰使用者。(可用於所有系统)

搜索

grep

你可能会需要缩小搜索范围,那么可以使用以下命令:

lspci | grep -e keyword

nn

还有一种无需 grep 的方法可以使用。假设我想确认一下此计算机是否有其他的 Nvidia 设备,在此之前我们还需要一些额外信息,使用 -nn 选项显示的供应商和设备 ID 号。利用此选项给出我的 VGA 卡、供应商 ID 和设备 ID

$ sudo lspci -nn | grep -e VGA
01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GK107 [GeForce GTX 650] [10de:0fc6] (rev a1)

设备名称后的方括号内有用冒号分隔的数字,即供应商和设备 ID。输出表明 Nvidia Corporation 制造的设备的供应商 ID10de

-d 选项用于指定供应商、设备或类 ID 的所有设备。以下是我系统中的所有 Nvidia 设备(保留 -nn 以解析供应商 ID):

$ sudo lspci -nn -d 10de:
01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GK107 [GeForce GTX 650] [10de:0fc6] (rev a1)
01:00.1 Audio device [0403]: NVIDIA Corporation GK107 HDMI Audio Controller [10de:0e1b] (rev a1)

从输出中可以看到,除了显卡之外,我还有一个 Nvidia 音频设备。实际上它们都属于同一张 Nvidia GeForce GTX 650 卡。


内核模块

$ sudo lspci -nn | grep -e VGA
01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GK107 [GeForce GTX 650] [10de:0fc6] (rev a1)

$ sudo lspci -nn -k -d 10de:
01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GK107 [GeForce GTX 650] [10de:0fc6] (rev a1)
 Subsystem: eVga.com. Corp. GK107 [GeForce GTX 650] [3842:2650]
 Kernel driver in use: nvidia
 Kernel modules: nvidiafb, nouveau, nvidia_drm, nvidia
01:00.1 Audio device [0403]: NVIDIA Corporation GK107 HDMI Audio Controller [10de:0e1b] (rev a1)
 Subsystem: eVga.com. Corp. GK107 HDMI Audio Controller [3842:2650]
 Kernel driver in use: snd_hda_intel
 Kernel modules: snd_hda_intel

-nn 选项显示的供应商和设备 ID 号。设备名称后的方括号内有用冒号分隔的数字,即供应商和设备 ID。输出表明 Nvidia Corporation 制造的设备的供应商 ID10de

-k 选项显示内核加载了哪些驱动程序模块。

-d 选项用于指定供应商、设备或类 ID 的所有设备。

从命令的输出结果可以看到额外显示了两行:正在使用的内核驱动程序 Kernel driver in use 和 内核模块 Kernel modules,其中后者列出了可用于支持该设备的模块。


相关文件

lspci 用到的文件 29

  • /usr/share/hwdata/pci.ids
    所有已知 PCI ID 的清单 (厂商,设备名,类,子类)
  • /proc/bus/pci
    linux 2.1.82 之后版本核心提供的 PCI 总线配置空间的接口。包含每个总线 ( per-bus ) 的子目录以及每个设备卡 ( per-card ) 的配置空间档案,还有一个 devices 档案,包含所有 PCI 设备的列表。

更新最新状态

新设备和供应商总是在不断迭代。如果看到显示为 unknown 的设备,说明你的 PCI 设备 ID 数据库可能已过时。有两种方法可以检查更新 24

-Q 选项会使用 DNS 查询中央数据库,当然,这需要联网。

$ lspci -Q

还可以通过运行命令 update-pciids 来更新本地 PCI ID 数据库。

$ update-pciids
Downloaded daily snapshot dated 2021-08-22 03:15:01

示例

下图是一个演示样例,图中是一个基于 AMD Phenom CPU 的系统,所以它有一个 AMD 芯片组,以及 Atheros 无线适配器(Network Controller)和 Nvidia 显卡(VGA compatible controller )。

默认情况下,它将显示所有设备的详细信息,例如供应商、名称和型号等。

第一个字段是槽信息,格式如下 [domain:]bus:device.function
在这个例子中,由于所有的域都是 0,所以 lspci 不会显示域。

$ sudo lspci
00:00.0 Host bridge: Advanced Micro Devices, Inc. [AMD] RS880 Host Bridge
00:02.0 PCI bridge: Advanced Micro Devices, Inc. [AMD] RS780 PCI to PCI bridge (ext gfx port 0)
00:04.0 PCI bridge: Advanced Micro Devices, Inc. [AMD] RS780/RS880 PCI to PCI bridge (PCIE port 0)
00:05.0 PCI bridge: Advanced Micro Devices, Inc. [AMD] RS780/RS880 PCI to PCI bridge (PCIE port 1)
00:11.0 SATA controller: Advanced Micro Devices, Inc. [AMD/ATI] SB7x0/SB8x0/SB9x0 SATA Controller [AHCI mode]
00:12.0 USB controller: Advanced Micro Devices, Inc. [AMD/ATI] SB7x0/SB8x0/SB9x0 USB OHCI0 Controller
00:12.1 USB controller: Advanced Micro Devices, Inc. [AMD/ATI] SB7x0 USB OHCI1 Controller
00:12.2 USB controller: Advanced Micro Devices, Inc. [AMD/ATI] SB7x0/SB8x0/SB9x0 USB EHCI Controller
00:13.0 USB controller: Advanced Micro Devices, Inc. [AMD/ATI] SB7x0/SB8x0/SB9x0 USB OHCI0 Controller
00:13.1 USB controller: Advanced Micro Devices, Inc. [AMD/ATI] SB7x0 USB OHCI1 Controller
00:13.2 USB controller: Advanced Micro Devices, Inc. [AMD/ATI] SB7x0/SB8x0/SB9x0 USB EHCI Controller
00:14.0 SMBus: Advanced Micro Devices, Inc. [AMD/ATI] SBx00 SMBus Controller (rev 3c)
00:14.1 IDE interface: Advanced Micro Devices, Inc. [AMD/ATI] SB7x0/SB8x0/SB9x0 IDE Controller
00:14.3 ISA bridge: Advanced Micro Devices, Inc. [AMD/ATI] SB7x0/SB8x0/SB9x0 LPC host controller
00:14.4 PCI bridge: Advanced Micro Devices, Inc. [AMD/ATI] SBx00 PCI to PCI Bridge
00:14.5 USB controller: Advanced Micro Devices, Inc. [AMD/ATI] SB7x0/SB8x0/SB9x0 USB OHCI2 Controller
00:18.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Family 10h Processor HyperTransport Configuration
00:18.1 Host bridge: Advanced Micro Devices, Inc. [AMD] Family 10h Processor Address Map
00:18.2 Host bridge: Advanced Micro Devices, Inc. [AMD] Family 10h Processor DRAM Controller
00:18.3 Host bridge: Advanced Micro Devices, Inc. [AMD] Family 10h Processor Miscellaneous Control
00:18.4 Host bridge: Advanced Micro Devices, Inc. [AMD] Family 10h Processor Link Control
01:00.0 VGA compatible controller: NVIDIA Corporation GK107 [GeForce GTX 650] (rev a1)
01:00.1 Audio device: NVIDIA Corporation GK107 HDMI Audio Controller (rev a1)
02:00.0 Network controller: Qualcomm Atheros AR9287 Wireless Network Adapter (PCI-Express) (rev 01)

另一个示例如下,

$ lspci
00:00.0 Host bridge: Intel Corporation 3200/3210 Chipset DRAM Controller  //主板芯片
00:19.0 Ethernet controller: Intel Corporation 82566DM-2 Gigabit Network Connection (rev 02)
00:1a.0 USB Controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #4 (rev 02)
00:1a.1 USB Controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #5 (rev 02)
00:1a.2 USB Controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #6 (rev 02)
00:1a.7 USB Controller: Intel Corporation 82801I (ICH9 Family) USB2 EHCI Controller #2 (rev 02)  //USB控制器
00:1c.0 PCI bridge: Intel Corporation 82801I (ICH9 Family) PCI Express Port 1 (rev 02)  //接口插槽
00:1c.4 PCI bridge: Intel Corporation 82801I (ICH9 Family) PCI Express Port 5 (rev 02)
00:1d.0 USB Controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #1 (rev 02)
00:1d.1 USB Controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #2 (rev 02)
00:1d.2 USB Controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #3 (rev 02)
00:1d.7 USB Controller: Intel Corporation 82801I (ICH9 Family) USB2 EHCI Controller #1 (rev 02)
00:1e.0 PCI bridge: Intel Corporation 82801 PCI Bridge (rev 92)
00:1f.0 ISA bridge: Intel Corporation 82801IR (ICH9R) LPC Interface Controller (rev 02)
00:1f.2 IDE interface: Intel Corporation 82801IR/IO/IH (ICH9R/DO/DH) 4 port SATA IDE Controller (rev 02)
00:1f.3 SMBus: Intel Corporation 82801I (ICH9 Family) SMBus Controller (rev 02)
00:1f.5 IDE interface: Intel Corporation 82801I (ICH9 Family) 2 port SATA IDE Controller (rev 02)
02:00.0 VGA compatible controller: Matrox Graphics, Inc. MGA G200e [Pilot] ServerEngines (SEP1) (rev 02)  //显卡
03:02.0 Ethernet controller: Intel Corporation 82541GI Gigabit Ethernet Controller (rev 05)  //网卡

搜索

grep

例如,RPM Fusion 网站有安装 Nvidia 图形驱动程序的说明,里面就首先使用了 grep 命令来定位显卡信息。

$ sudo lspci | grep -e VGA
00:02.0 VGA compatible controller: Intel Corporation UHD Graphics 620 (rev 07)
$ sudo lspci | grep -e 3D
01:00.0 3D controller: NVIDIA Corporation GM108M [GeForce MX130] (rev a2)

检索

参考这里 26

当您知道 domain:bus:slot.func 格式中的插槽号时,您可以查询特定设备,如下所示。在下面的示例中,我们没有指定域号,因为它是 0,可以省略。

$ lspci -s 03:00.0
03:00.0 RAID bus controller: LSI Logic / Symbios Logic MegaRAID SAS 2108 [Liberator] (rev 05)

当您知道 vendor:device 格式的设备编号时,您可以查询特定设备,如下所示。

$ lspci -d 1000:0079
03:00.0 RAID bus controller: LSI Logic / Symbios Logic MegaRAID SAS 2108 [Liberator] (rev 05)

如果您只知道供应商 ID 或设备 ID,则可以省略另一个 ID

例如,以下两个命令都将返回与上述相同的输出。

lspci -d:0079
lspci -d 1000

详细信息

在已知目标设备的 BDF 信息后,可使用以下命令来查询更加详细地信息
-s 后面接的是每个设备的总线、插槽与相关函数功能

$ lspci -s 03:02.0 -vv  
03:02.0 Ethernet controller: Intel Corporation 82541GI Gigabit Ethernet Controller (rev 05)
        Subsystem: Intel Corporation Unknown device 34d0
        Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV+ VGASnoop- ParErr+ Stepping- SERR+ FastB2B-
        Status: Cap+ 66MHz+ UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <tabort- <mabort- >SERR- <perr-
        Latency: 32 (63750ns min), Cache Line Size: 64 bytes
        Interrupt: pin A routed to IRQ 209
        Region 0: Memory at e1920000 (32-bit, non-prefetchable) [size=128K]
        Region 1: Memory at e1900000 (32-bit, non-prefetchable) [size=128K]
        Region 2: I/O ports at 1000 [size=64]
        Expansion ROM at fffe0000 [disabled] [size=128K]
        Capabilities: [dc] Power Management version 2
                Flags: PMEClk- DSI+ D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
                Status: D0 PME-Enable- DSel=0 DScale=1 PME-
        Capabilities: [e4] PCI-X non-bridge device
                Command: DPERE- ERO+ RBC=512 OST=1
                Status: Dev=00:00.0 64bit- 133MHz- SCD- USC- DC=simple DMMRBC=2048 DMOST=1 DMCRS=8 RSCEM- 266MHz- 533MHz-

Smartctl

参考这里 30

smartcl 是磁盘管理工具 Smart 提供的命令,使用这个命令来获取磁盘的一些状态信息。
只能用 root 去执行,是不能用普通用户执行的。

比如下面这样:

[root@Erdong-TEST ~]# smartctl -A /dev/nvme0n1
smartctl 7.0 2018-12-30 r4883 [x86_64-linux-3.10.0-693.el7.x86_64] (local build)
Copyright (C) 2002-18, Bruce Allen, Christian Franke, www.smartmontools.org
=== START OF SMART DATA SECTION ===
SMART/Health Information (NVMe Log 0x02)
Critical Warning:                   0x00
Temperature:                        29 Celsius
Available Spare:                    100%
Available Spare Threshold:          10%
Percentage Used:                    0%
Data Units Read:                    80 [40.9 MB]
Data Units Written:                 0
Host Read Commands:                 1,897
Host Write Commands:                10
Controller Busy Time:               0
Power Cycles:                       10
Power On Hours:                     923
Unsafe Shutdowns:                   7
Media and Data Integrity Errors:    0
Error Information Log Entries:      0
Warning  Comp. Temperature Time:    0
Critical Comp. Temperature Time:    0

[zabbix@Erdong-TEST ~]$ smartctl -A /dev/nvme0n1
smartctl 7.0 2018-12-30 r4883 [x86_64-linux-3.10.0-693.el7.x86_64] (local build)
Copyright (C) 2002-18, Bruce Allen, Christian Franke, www.smartmontools.org
Smartctl open device: /dev/nvme0n1 failed: Permission denied

last

参考这里 31

概念

该命令用来列出目前与过去登录系统的用户相关信息。

指令英文原义 show listing of last logged in users
指令所在路径 /usr/bin/last,可以使用 which last 查询 last 所在路径。
执行权限,有些需要特殊权限

执行 last 指令时,默认情况下它会读取位于 /var/log 目录下名称为 wtmp 的文件,该文件保存的是登陆过本系统的用户信息,并把该文件记录的登录系统的用户名单全部显示出来。
默认是显示 wtmp 的记录,但 btmp 能显示的更详细,可以显示远程登录,例如 ssh 登录,因为 utmp 文件中保存的是当前正在本系统中的用户的信息。


用法

使用 last 命令的输出结果,比如,如下所示:

$ last

root     pts/0        10.5.10.51       Thu Sep  2 00:59   still logged in   

root     pts/2        10.5.10.60       Wed Sep  1 16:11 - 17:47  (01:35)    

root     pts/2        10.5.10.60       Wed Sep  1 16:08 - 16:10  (00:02)    

root     pts/0        10.5.10.61       Wed Sep  1 14:16 - 23:02  (08:46)    

root     pts/3        10.5.10.59       Wed Sep  1 11:28 - 19:38  (08:10)    

root     pts/2        10.5.10.60       Wed Sep  1 11:18 - 16:07  (04:49)    

root     pts/1        10.5.10.191      Wed Sep  1 11:17 - 19:12  (07:55)    

输出结果的各个字段的含义如下,

用户名终端位置登陆 ip 或内核开始时间结束时间持续时间
终端位置。pts/0 (伪终端)意味着从诸如 SSHtelenet 的远程连接用户 .tty ( teletypewriter ) 意味着直接连接到计算机或者本地连接的用户登陆 ip 或内核。如果你看见 :0.0 或者什么都没有,这意味着用户通过本地终端连接。除了重启活动,内核版本会显示在状态中。开始时间结束时间(still log in,还未退出;

down,直到正常关机;

crash,直到强制关机 )
持续时间

last 命令的语法如下,
last [-adRx][-f <记录文件>][-n <显示列数>][帐号名称...][终端机编号...]

last 命令可搭配使用的参数有,

参数说明
-a把从何处登入系统的主机名或 IP 地址,显示在最后一行。
-dIP 地址转换成主机名称
-f <记录文件>指定记录文件
-n <显示列数> 或 <显示列数>设置列出名单的显示列数
-R不显示登入系统的主机名称或 IP 地址

示例

  1. last -n 10 或者 last -10
  2. last -10 -f /var/log/btmp

vim

参考这里 32


用法

选项描述
:w保存文件,不退出 vim
:w file将修改另外保存到 file 中,不退出 vim
:w!强制保存,不退出 vim
:wq保存文件,退出 vim
:wq!.强制保存文件,退出 vim
:q保存文件,退出 vim
:q!不保存文件,强制退出 vim
:e!.放弃所有修改,从上次保存文件开始再编辑

lsusb

参考这里 33,后续补上。


rfkill

参考这里 34


概念

rfkill 命令来自于英文词组 radio frequency kill 的缩写,其功能是管理系统中的蓝牙和 WIFI 设备。
rfkill 命令是一个内核级别的管理工具,可以打开或关闭系统中的蓝牙和WIFI功能。


用法

语法格式:rfkill [参数] 设备名

选项含义
list列出可用设备
block关闭设备
unblock打开设备

示例

  • 显示系统中已有的WIFI和蓝牙设备信息:
$ rfkill list
0: phy0: Wireless LAN
	Soft blocked: no
	Hard blocked: no
2: hci0: Bluetooth
	Soft blocked: yes
	Hard blocked: no
  • 关闭指定编码的设备,比如无线设备:
$ rfkill block 0
  • 打开指定编码的设备,比如无线设备:
$ rfkill unblock 0

mv

参考这里 35


概念

mv 命令来为文件或目录改名或将文件由一个目录移入另一个目录中。该命令等同于 DOS 系统下的 renmove 命令的组合。它的使用权限是所有用户。


用法

mv [options] 源文件或目 目标文件或目录
参数说明
optionsi交互方式操作。如果 mv 操作将导致对已存在的目标文件的覆盖,此时系统询问是否重写,要求用户回答 yn,这样可以避免误覆盖文件。
f禁止交互操作。mv 操作要覆盖某个已有的目标文件时不给任何指示,指定此参数后i参数将不再起作用。
目标文件或目录当第二个参数类型是文件时mv 命令完成文件重命名,它将所给的源文件或目录重命名为给定的目标文件名。
当第二个参数是已存在的目录名称时源文件或目录参数可以有多个,mv 命令将各参数指定的源文件均移至目标目录中。在跨文件系统移动文件时,mv 先拷贝,再将原有文件删除,而链至该文件的链接也将丢失。

示例

  • /usr/udt 中的所有文件移到当前目录 (用 . 表示) 中:
$ mv /usr/udt/* .
  • 将文件 test.txt 重命名为 wbk.txt
$ mv test.txt wbk.txt
  • 把当前目录的一个子目录里的文件移动到另一个子目录里
mv  文件名/*  另一个目录
  • 移动当前文件夹下的所有文件到上一级目录
mv * ../

cp

参考这里 35


概念

cp 命令是用于复制的,复制文件或目录。


用法

cp 参数
参数说明
-a–archive此参数的效果和同时指定 -dpR 参数相同。
-b–backup删除,覆盖目标文件之前的备份,备份文件会在字尾加上一个备份字符串。
-d–no-dereference
-f–force强行复制文件或目录,不论目标文件或目录是否已存在。
-i–interactive覆盖既有文件之前先询问用户。
-l–link对源文件建立硬连接,而非复制文件。
-p–preserve保留源文件或目录的属性。
-P–parents保留源文件或目录的路径。
-r递归处理,将指定目录下的文件与子目录一并处理。
-R–recursive递归处理,将指定目录下的所有文件与子目录一并处理。
-s–symbolic-link对源文件建立符号连接,而非复制文件。
-S <备份字尾字符串> 或 –suffix= <备份字尾字符串>-b 参数备份目标文件后,备份文件的字尾会被加上一个备份字符串,预设的备份字尾字符串是符号 ~
-u–update使用这项参数后只会在源文件的更改时间较目标文件更新时或是名称相互对应的目标文件并不存在,才复制文件。
-v–verbose显示指令执行过程。
-V <备份方式> 或 –version-control=<备份方式>-b 参数备份目标文件后,备份文件的字尾会被加上一个备份字符串,这字符串不仅可用 -S 参数变更,当使用 -V 参数指定不同备份方式时,也会产生不同字尾的备份字串。
-x–one-file-system复制的文件或目录存放的文件系统,必须与 cp 指令执行时所处的文件系统相同,否则不予复制。
–help在线帮助。
–sparse=<使用时机>设置保存稀疏文件的时机。
–version显示版本信息。

smartctl

参考这里 36


概念

可以使用 smartctl 命令来查询一些跟 ssd 相关的信息。


用法

  • smartctl -i /dev/nvme0
    输出 identify 设备所得出的信息
sudo smartctl -i /dev/nvme0
smartctl 7.1 2019-12-30 r5022 [x86_64-linux-5.4.0-42-generic] (local build)
Copyright (C) 2002-19, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Model Number:                       KINGSTON SA2000M8500G
Serial Number:                      50026B7683BC98CE
Firmware Version:                   S5Z42105
PCI Vendor/Subsystem ID:            0x2646
IEEE OUI Identifier:                0x0026b7
Controller ID:                      1
Number of Namespaces:               1
Namespace 1 Size/Capacity:          500.107.862.016 [500 GB]
Namespace 1 Utilization:            142.133.460.992 [142 GB]
Namespace 1 Formatted LBA Size:     512
Namespace 1 IEEE EUI-64:            0026b7 683bc98ce5
Local Time is:                      Wed Aug 26 23:49:45 2020 CEST
  • smartctl -a /dev/nvme0
    输出设备的所有 SMART 信息
sudo smartctl -a /dev/nvme0         
smartctl 7.1 2019-12-30 r5022 [x86_64-linux-5.4.0-42-generic] (local build)
Copyright (C) 2002-19, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Model Number:                       KINGSTON SA2000M8500G
Serial Number:                      50026B7683BC98CE
Firmware Version:                   S5Z42105
PCI Vendor/Subsystem ID:            0x2646
IEEE OUI Identifier:                0x0026b7
Controller ID:                      1
Number of Namespaces:               1
Namespace 1 Size/Capacity:          500.107.862.016 [500 GB]
Namespace 1 Utilization:            142.114.676.736 [142 GB]
Namespace 1 Formatted LBA Size:     512
Namespace 1 IEEE EUI-64:            0026b7 683bc98ce5
Local Time is:                      Wed Aug 26 23:51:50 2020 CEST
Firmware Updates (0x14):            2 Slots, no Reset required
Optional Admin Commands (0x0017):   Security Format Frmw_DL Self_Test
Optional NVM Commands (0x005f):     Comp Wr_Unc DS_Mngmt Wr_Zero Sav/Sel_Feat Timestmp
Maximum Data Transfer Size:         32 Pages
Warning  Comp. Temp. Threshold:     75 Celsius
Critical Comp. Temp. Threshold:     80 Celsius

Supported Power States
St Op     Max   Active     Idle   RL RT WL WT  Ent_Lat  Ex_Lat
 0 +     9.00W       -        -    0  0  0  0        0       0
 1 +     4.60W       -        -    1  1  1  1        0       0
 2 +     3.80W       -        -    2  2  2  2        0       0
 3 -   0.0450W       -        -    3  3  3  3     2000    2000
 4 -   0.0040W       -        -    4  4  4  4    15000   15000

Supported LBA Sizes (NSID 0x1)
Id Fmt  Data  Metadt  Rel_Perf
 0 +     512       0         0

=== START OF SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED

SMART/Health Information (NVMe Log 0x02)
Critical Warning:                   0x00
Temperature:                        30 Celsius
Available Spare:                    100%
Available Spare Threshold:          10%
Percentage Used:                    0%
Data Units Read:                    3.966.522 [2,03 TB]
Data Units Written:                 6.036.943 [3,09 TB]
Host Read Commands:                 38.899.250
Host Write Commands:                46.064.389
Controller Busy Time:               601
Power Cycles:                       390
Power On Hours:                     241
Unsafe Shutdowns:                   160
Media and Data Integrity Errors:    0
Error Information Log Entries:      0
Warning  Comp. Temperature Time:    0
Critical Comp. Temperature Time:    0
Thermal Temp. 1 Transition Count:   7
Thermal Temp. 1 Total Time:         24

Error Information (NVMe Log 0x01, max 256 entries)
No Errors Logged

tree

使用 tree 命令可以输出你的树层目录结构。在 macOS 系统上安装 tree 的方式参考这里 37
主要用法是 cd 目标文件夹路径,然后 tree 一下,会将该层级下所有文件都遍历了输出,不管层级多深。如下所示:

在这里插入图片描述

亦可以指定层级输出内容,方式方法参考这里 37


sed

可以使用 sed 命令对 shell 脚本进行替换操作 38

  1. 普通操作可以使用冒号 :、井号 #、正斜杠 / 来作为分隔符
    比如,通过 sed - i 's#abc#def#g' filename 来将 filename 文件中的 abc 替换成 def
$ cat test.txt
123abc456                                                                                                                                  $ sed -i 's#abc#789#g' test.txt                                                                                                                                    $ cat test.txt
123789456                                                                                                                                   
$ sed -i 's:789:XYZ:g' test.txt                                                                                                                                     $ cat test.txt
123XYZ456
$ sed -i 's/XYZ/O1Z/g' test.txt                                                                                                                                      $ cat test.txt
123O1Z456
  1. 对于变量做替换
    Ignore

  2. 特殊字符替换、反斜杠( \ )、正斜杠( / )、双引号( \ )、美元符( $

  • 对单个特殊符号进行转义,只需要在它们前面多加个反斜杠做转义即可,比如反斜杠( \\ )、正斜杠( \/ )、双引号( \
  • 对多个特殊符号进行转义,参考下面的列表:
实现目标方法能否用单引号或双引号括起来
单引号双引号为什么
\ → \\ `sed -i 's#\\#\\\\#g' file`
`sed -i 's:\\:\\\\:g' file`
×反斜杠用双引号括起来会报错
\ → / `sed -i 's#\\#\/#g' file` ×反斜杠用双引号括起来会报错
`''` → `""` `sed -i 's#\"#\"\"#g' file`
`sed -i "s#\"#\"\"#g" file`
`'` → `““` `sed -i "s#'#''#g" file`×不能用单引号括起来,分不清了
`$` → `\$` `sed -i 's:\$:\\\$:g' file`×不能用双引号,否则会认为是$(正则匹配结尾位置)行的结果追加字符

正斜杠 ( / ) 可以用单引号、双引号括起来进行替换;但是涉及到反斜杠 ( \ ) 不行,不能用双引号,只能用单引号括起来替换,不然报错 sed: -e expression #1,char 8: unterminated 's' command

  1. curl 时用的变量,sed 转化
    curl -H 'Content-Type: application/json' -X POST -d 参数(参数中涉及到特殊字符都得转义,而且要多转一层,即 $ 得转成 \\$,才能原封不动的供后续使用)
    ignore

grep

概念

grep 命令支持三种正则表达式语法,BasicExtendedPerl-compatible 39
当没有指定正则表达式类型时,grep 命令将搜索模式默认为基本正则表达式。


用法

多个匹配

参考这里 39

要搜索多个匹配模式,可以使用 ORalternation )运算符。我们可以用 OR 运算符 | 指定不同的匹配项,这些匹配项可以是文本字符串,也可以是表达式集。
值得注意的是,在所有正则表达式运算符中,这个运算符的优先级是最低的。

使用 grep 命令搜索多个匹配模式的语法如下:

$ grep 'pattern1\|pattern2' filename

这里需要注意的是,始终要用单引号将正则表达式括起来,因为单引号内的内容原样输出,被单引号括起的内容不管是常量还是变量不会发生替换。

使用基本正则表达式时,元字符被解释为字面字符。要保留元字符的特殊含义,必须用反斜杠 ( \ )对它们进行转义。这就是为什么我们要转义 OR 运算符 ( | )。

要将模式解释为扩展正则表达式,请调用 grep -E ( 或 --extended-regexp )选项。
使用扩展正则表达式时,不需要对 OR 运算符 ( | ) 进行转义:

$ grep -E 'pattern1|pattern2' filename

示例

多个匹配

  1. grep 命令搜索多个字符串
    以搜索某用户日志错误文件中出现的所有 fatalerrorcritical 字符串为例。
    使用基本模式的语法如下:
$ grep 'fatal\|error\|critical' /var/log/nginx/error.log

使用扩展模式的语法如下:

$ grep -E `fatal|error|critical` /var/log/nginx/error.log

默认情况下,grep 命令时区分大小写的。如果要在搜索时忽略大小写,再在前面加 i ( --ignore-case ) 选项,如下:

$ grep -i 'fatal\|error\|critical' /var/log/nginx/error.log

find

概念


用法


示例

在 linux 下使用 find 结合 sedxargs 可以实现批量替换多个文件中的同一个字符 40

比如,

  • 把当前目录下的所有 .c.h 文件中的 waf 字符全部替换为 tamper,可以使用以下命令:
find . -name '*.[ch]' | xargs sed -i 's/waf/tamper/g'
  • /opt/test/ 目录下所有含有 linux 字符的文件全部替换为 windows
find /opt/test/ -type f | awk -F ':' '{print $1}' | xargs sed -i 's/linux/windows/g'

scp

概念

scp - secure copy(remote file copy program),意思是安全拷贝、安全复制的意思,是一个远程文件复制程序。准确地来说,就是不同服务器之间进行文件(包括目录)进行安全复制的命令。scp 基于加州大学 Regents 的 BSD 源代码中的 rcp 程序。

如何安全的呢?

通过 SSH 协议安全地将文件复制到远程系统和从远程系统复制文件到本地的命令。使用 SSH 意味着它享有与 SSH 相同级别的数据加密,因此被认为是跨两个远程主机传输文件的安全方式。


用法

scp [-346BCpqrTv] [-c cipher] [-F ssh_config] [-i identity_file] [-J destination] [-l limit] [-o ssh_option] [-P port] [-S program] source ... target

其中常用的几个参数的含义如下:

参数含义
-P指定端口,默认是 22,不需要指定。如果不是 22,则用大写 P 指定端口。
-p保留原始文件的修改时间、访问时间和模式。
-r递归复制整个目录。复制目录是必不可少。
-C压缩文件

示例

  • 将本地文件复制到远程主机目录
scp redis.conf root@

参考链接


  1. Linux 教程 ↩︎

  2. 每天一个linux命令-uname,输出操作系统信息(内核版本、硬件架构32位/64位等) ↩︎

  3. 如何在命令行中检查Linux内核版本的3种方法 ↩︎

  4. dmesg 命令详解 ↩︎

  5. Linux dmesg显示可读时间方式 ↩︎

  6. dmesg日志中加入时间戳 ↩︎

  7. Linux系统删除文件夹命令 ↩︎ ↩︎

  8. Linux rm 命令 ↩︎

  9. Centos7 Failed to start crond.service: Unit not found ↩︎

  10. Linux ls命令参数详解 ↩︎

  11. linux root用户无法删除文件,提示permission denied ↩︎

  12. Linux lsattr命令:查看文件系统属性 ↩︎

  13. Linux系统使用Fuser命令的方法 ↩︎

  14. linux里挂载(mount)和取消挂载(umount)命令的使用 ↩︎

  15. Linux文件系统的的挂载与卸载(mount、umount) ↩︎

  16. Linux系统挂载SMB文件系统 ↩︎

  17. 解决类似umount target is busy挂载盘卸载不掉问题 ↩︎

  18. linux里挂载(mount)和取消挂载(umount)命令的使用 ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎

  19. echo -e 命令详解 ↩︎

  20. What is the difference between Ctrl-C and SIGINT? ↩︎

  21. date command in Linux with examples ↩︎

  22. rpm安装和卸载软件 ↩︎

  23. Linux关机和重启命令总结 ↩︎ ↩︎

  24. 在 Linux 上使用 lspci 命令查看硬件情况 ↩︎ ↩︎

  25. lspci命令详解 ↩︎

  26. 获取 PCI 总线硬件设备信息的 7 个 Linux lspci 命令示例 ↩︎ ↩︎

  27. Ubuntu lspci ↩︎

  28. pciutils ↩︎

  29. Linux硬件管理命令–lspci命令详解 ↩︎

  30. Smartctl 打开设备遇到 Permission denied 问题排查过程记录 ↩︎

  31. LInux last命令详解 ↩︎

  32. vim 退出命令(保存、放弃保存) ↩︎

  33. Recognize more devices on Linux with this USB ID Repository ↩︎

  34. rfkill命令 – 管理蓝牙和WIFI设备 ↩︎

  35. linux怎么将一个文件移动到另一个目录下 ↩︎ ↩︎

  36. Random Freezes in Kubuntu 20.04 ↩︎

  37. Mac下的 tree 命令 输出目录树层结构 ↩︎ ↩︎

  38. sed替换特殊字符 ↩︎

  39. Grep命令查找多个字符串(grep同时匹配多个关键字或任意关键字) ↩︎ ↩︎

  40. find+xargs+sed批量替换 ↩︎

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值