Linux命令——bash、grep、dmesg、journalctl和条件操作符||

312 阅读2分钟

bash

bash -c "command" 可以用来快速执行一条命令,而不需要创建一个新的脚本文件

以下是一些使用 bash -c 命令的例子:

bash -c "echo 'Hello, World!'"

bash -c "ls -l"

bash -c "grep pattern file.txt"

bash -c 命令会创建一个新的 bash 进程来执行命令,然后立即退出。这意味着,该命令无法影响当前的 bash 环境,也无法使用当前 bash 会话中的变量或函数。

如果你需要执行更复杂的脚本,或者需要在当前 bash 环境中执行命令,最好使用脚本文件或直接在命令行中输入命令。

条件操作符||

bash 中,|| 是一个条件操作符,常用于连接两个命令,并指定在第一个命令执行失败时执行第二个命令

具体来说,|| 操作符将前一个命令的返回状态与 0 进行比较。如果前一个命令的返回状态为非零(表示失败),则会执行后面跟着的命令。如果前一个命令的返回状态为零(表示成功),则不会执行后面跟着的命令。

command1 || command2 || command3

grep

示例:grep panic -B 5 -A 20 test.txt
grep panic 表示在文件中查找包含 "panic" 的行,-B 5 表示显示查找结果之前的 5 行内容,-A 20 表示显示查找结果之后的 20 行内容。

dmesg

示例:

dmesg -T | grep 'out of memory'

dmesg命令是一个用于查看和分析 Linux 内核日志的工具。它可以打印出内核环形缓冲区(kernel ring buffer)中的消息,这些消息包括系统启动时的检测信息、设备驱动的加载信息、系统错误和警告等。

它是一种诊断系统问题的重要工具

dmesg -T命令会按照时间戳排序消息。
dmesg打印的消息可能非常多,可以使用grep命令来过滤,示例中就是通过grep 'out of memory'来查看系统中oom相关的告警。

journalctl

journalctl -u 命令:journalctlsystemd 日志管理工具的命令,用于查看系统日志,而 -u 是一个选项,用于指定要查看的 Unit(服务或进程)的日志。
Unit 是 systemd 中的一个概念,它表示一个服务、守护进程、定时器或其他系统组件。每个 Unit 都有自己的日志记录
Unit 的名称通常是服务的名称,可以通过 systemctl list-units 命令查看系统中所有可用的 Unit。

例如,查看 nginx 服务的日志:

journalctl -u nginx

还可以使用其他选项来过滤日志,例如按时间范围、级别等进行筛选。

注意:journalctl -u 命令仅适用于 systemd 管理的系统日志。如果你使用的是其他日志记录方式,可能需要使用不同的工具或命令来查看日志。