【嵌入式八股23】Linux关键指令

系统关机命令

在 Linux 系统中,有多种命令可用于实现系统关机或重启操作,以下为你详细介绍各命令及其特点:

指令 说明
shutdown 该命令能够安全地将系统关机。它允许用户指定关机的时间,还可以在关机前向所有登录用户发送警告消息。例如,shutdown -h now 可立即关机,shutdown -h 20:30 则会在晚上 8 点 30 分关机。
halt 本质上就是调用 shutdown -h。此命令会停止系统运行,使计算机进入停机状态。
reboot 其工作过程与 halt 类似,不过它的作用是引发主机重启,让系统重新启动。
poweroff halt 的软链接,功能同样是停止系统运行,最终切断电源。
init 作为所有进程的祖先,它的进程号始终为 1。使用 init 0 可实现关机操作,而 init 6 则用于重启系统。

Linux 查看文本的指令

在 Linux 中,有许多指令可用于查看文本内容,以下是一些常用指令及其功能:

指令 功能
cat 用于将文件内容连续输出到标准输出,适合查看内容较少的文件。
tac cat 相反,它会从文件的最后一行开始倒序显示全部内容。
sed 是一个强大的流编辑器,可用于对文本进行替换、删除、插入等操作,也能用于查看文本。
head 只显示文件的头几行,默认显示前 10 行,可通过 -n 选项指定显示的行数。
tail 只显示文件的最后几行,默认显示后 10 行,使用 -f 选项可以实时显示日志文件的更新内容。
more 以分页的方式显示文件内容,按空格键翻页,按 q 键退出。
less 也是分页查看文件内容的工具,它比 more 功能更强大,支持向前和向后翻页,使用起来更加灵活。
nl 类似于 cat -n,在显示文件内容时会输出行号。

mount 命令

mount 命令用于将文件系统挂载到指定的挂载点,其基本命令格式如下:

mount [-t vfstype] [-o options] device dir
  • -t vfstype:指定要挂载的文件系统类型,如 ext4nfs 等。
  • -o options:用于指定挂载选项,如 ro(只读)、rw(读写)等。
  • device:要挂载的设备,如硬盘分区、U盘等。
  • dir:挂载点,即文件系统挂载到的目录。

以下是一个挂载 NFS(网络文件系统)的示例:

mount -t nfs 192.168.0.1:/tmp /mnt/nfs 

此命令将 IP 地址为 192.168.0.1 的服务器上的 /tmp 目录挂载到本地的 /mnt/nfs 目录。

dmesg 命令

dmesg 命令用于显示内核环缓冲区中的消息,这些消息包含了系统启动时的硬件检测信息、驱动程序加载信息等。你也可以通过以下命令查看系统日志文件:

cat /var/log/messages

该文件记录了系统的各种事件和错误信息。

grep 命令

grep 是一个强大的文本搜索工具,可用于在文件中查找匹配指定模式的行。

选项

-c:只输出匹配行的计数。
-C [number]:显示匹配行及其前后各 [number] 行的上下文。
-I:不区分大小写(只适用于单字符)。
-i:不区分大小写。
-h:查询多文件时不显示文件名。
-l:查询多文件时只输出包含匹配字符的文件名。
-L:列出不匹配的文件名。
-n:显示匹配行及行号。
-s:不显示不存在或无匹配文本的错误信息。
-v:显示不包含匹配文本的所有行。
-w:只匹配整个单词。
-E:使用扩展的正则表达式。
-R:递归搜寻指定目录及其子目录下的文件。
--exclude=FILE:跳过指定的文件。

正则表达式主要参数

\:忽略正则表达式中特殊字符的原有含义。
^:匹配正则表达式的开始行。
$:匹配正则表达式的结束行。
\<:从匹配正则表达式的单词开始。
\>:到匹配正则表达式的单词结束。
[]:匹配单个字符,如 [A] 表示匹配字符 A。
[-]:指定范围,如 [A-Z] 表示匹配从 A 到 Z 的任意一个大写字母。
.:匹配所有的单个字符。
*:匹配零个或多个前面的字符。

经典使用方法

# 查找所有以 d 开头的文件中包含 test 的匹配行
grep "test" d*
# 查找包含 test 或者 zephyr 的行,不区分大小写,显示行号,使用扩展正则表达式
grep -inE "test|zephyr" d*
# 查找同时包含 test 和 zephyr 的行,不区分大小写,显示行号,使用扩展正则表达式
grep -in "test" d* | grep 'zephyr'

find 命令

find 命令用于在指定目录下查找符合条件的文件和目录,其基本用法如下:

find [-path ..] [expression]

选项

-name:按照文件名查找。
-iname:按照文件名查找,忽略大小写。
-perm:按照文件权限查找。
-user:按照文件拥有者查找。
-group:按照文件所属的组查找。
-mtime -n +n:按照文件的更改时间来查找文件,-n 表示 n 天以内更改的文件,+n 表示 n 天以前更改的文件。
-type:查找某一类型的文件,文件类型有:普通文件 (f),目录 (d),字符设备文件 (c),块设备文件 (b),符号链接文件 (l),套接字文件 (s),管道文件 (p)。
-size n:查找文件长度为 n 块(一块等于 512 字节)的文件,带有 c 时表示文件长度以字节计。 
-mount:不跨越文件系统进行查找。
-follow:遇到符号链接文件,就跟踪至链接所指向的文件。
-path:匹配文件路径或者文件名。
-exec:对查找到的文件执行后续命令操作。
-a:逻辑与操作。
-o:逻辑或操作。
-not:逻辑非操作。

经典使用方法

# 查找 /run 中所有的 socket 文件
find /run -type s
# 搜索 /dev 中所有包含 tty 的文件
find /dev -name "*tty*"
# 搜索 /dev 中大小大于 10 字节,名称包含 bus 的文件
find /dev -size +10c -name "*bus*"
# 或操作,搜索以 debug 开头的文件或者扩展名为 .rst 的文件
find -name 'debug*' -o -name '*.rst'
# 与操作,搜索以 debug 开头且扩展名为 .rst 的文件
find -name 'debug*' -a -name '*.rst'
# 找出文件大小大于 10000 块的文件,并复制到当前目录
find -size +10000 -exec cp {} . \;

高级使用方法

# 查询所有 mk 文件中的 date 文本
find ./build/ -name "*.mk" -print -exec grep -rwn "date" --color=auto {} \;

lsusb 命令

lsusb 是一个用于显示系统中已连接的 USB 总线信息的工具。

$ lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 008 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 003: ID 17ef:4811 Lenovo Integrated Webcam [R5U877]
Bus 008 Device 002: ID 0a5c:217f Broadcom Corp. Bluetooth Controller
  • Bus 008:指明设备连接到哪条总线。
  • Device 002:表明这是连接到该总线上的第二台设备。
  • ID:设备的 ID。
  • Broadcom Corp. Bluetooth Controller:生产商名字和设备名。

其他用法

# 列出 USB 详细信息
$ lsusb -v
# 列出有多少 USB 设备
$ find /dev/bus
# 打印特定设备的详细信息
$ lsusb -D /dev/bus/usb/008/002

lsof 命令

lsof 用于列出当前系统打开的文件信息,它可以帮助你了解哪些进程正在使用哪些文件。

$ sudo lsof
COMMAND    PID      USER   FD      TYPE     DEVICE     SIZE       NODE      NAME
init       1         root  cwd      DIR       3,3       1024       2         /
init       1         root  rtd      DIR       3,3       1024       2         /
init       1         root  txt      REG       3,3       38432      1763452  /sbin/init
init       1         root  mem      REG       3,3       106114     1091620  /lib/libdl-2.6.so
init       1         root  mem      REG       3,3       7560696    1091614  /lib/libc-2.6.so
init       1         root  mem      REG       3,3       79460      1091669  /lib/libselinux.so.1
init       1         root  mem      REG       3,3       223280     1091668  /lib/libsepol.so.1
init       1         root  mem      REG       3,3       564136     1091607  /lib/ld-2.6.so
init       1         root  10u      FIFO      0,15                  1309     /dev/initctl

输出列说明

列名 含义 详细说明
COMMAND 进程的名称 正在打开文件的进程的名称。
PID 进程标识符 每个进程的唯一标识符。
USER 进程所有者 拥有该进程的用户。
FD 文件描述符 应用程序通过文件描述符识别该文件,常见的有 cwd(当前工作目录)、txt(程序文本)、mem(内存映射文件)等。
TYPE 文件类型 常见的文件类型有 REG(普通文件)、DIR(目录)、CHR(字符设备)、BLK(块设备)、FIFO(管道)、UNIX(UNIX 域套接字)、IPv4(IP 套接字)等。
DEVICE 指定磁盘的名称 存储该文件的磁盘设备。
SIZE 文件大小 文件的大小。
NODE 文件 inode 每个文件都有一个唯一的 inode 编号。
NAME 文件名称 被打开的文件的名称。

参数列表

lsof  filename:显示打开指定文件的所有进程。
lsof -a:表示两个参数都必须满足时才显示结果。
lsof -c string:显示 COMMAND 列中包含指定字符的进程所有打开的文件。
lsof -u username:显示所属指定用户进程打开的文件。
lsof -g gid:显示归属指定 gid 的进程情况。
lsof +d /DIR/:显示指定目录下被进程打开的文件。
lsof +D /DIR/:同上,但是会搜索目录下的所有子目录,耗时相对较长。
lsof -d FD:显示指定文件描述符的进程。
lsof -n:不将 IP 转换为 hostname,默认是不加上 -n 参数。
lsof -i:用以显示符合条件的进程情况。
lsof -i[46] [protocol][@hostname|hostaddr][:service|port]:
    46 --> IPv4 or IPv6
    protocol --> TCP or UDP
    hostname --> Internet host name
    hostaddr --> IPv4 地址
    service --> /etc/service 中的 service name (可以不只一个)
    port --> 端口号 (可以不只一个)

查找示例

# 显示打开指定文件的所有进程
$ lsof  filename
# 例如:打开所有使用 /dev/urandom 的进程
$ lsof /dev/urandom
# 查看 22 端口现在运行的情况 
$ lsof -i :22
# 查看所属 xiaxiaowen 用户进程所打开的文件类型为 txt 的文件
$ lsof -a -u xiaxiaowen -d txt
# 查找谁在使用文件系统
$ lsof /media/xiaxiaowen/机械硬盘
COMMAND  PID       USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
zsh     8465 xiaxiaowen  cwd    DIR   8,17     8192    5 /media/xiaxiaowen/机械硬盘
嵌入式八股/模拟面试拷打 文章被收录于专栏

一些八股模拟拷打Point,万一有点用呢

全部评论
mark一下
点赞 回复 分享
发布于 2025-05-31 15:36 湖北

相关推荐

评论
点赞
6
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务