您当前的位置:首页 > 计算机 > 系统应用 > Linux

Linux这11个鲜为人知的命令,超级实用!

时间:10-17来源:作者:点击数:

sudo !! 命令

在Linux命令行环境中,sudo !! 是一个非常实用且高效的快捷命令。它允许用户以超级用户(root)权限重复执行上一个命令,从而避免了在需要超级用户权限的情况下重新输入整个命令。这一小技巧对于系统管理员和开发人员来说尤其有用,因为它节省了时间并减少了重复输入错误的可能性。

例如:

图片

sudo !! 的工作原理基于两个命令的组合:

  1. !!(双感叹号):这个特殊的符号在命令行历史中代表上一个执行的命令。当你在终端中输入 !! 并回车时,系统会自动替换成上一个命令的内容,并执行它。
  2. sudo:这是一个用于以超级用户权限执行命令的工具。当你在命令前加上 sudo 时,它会要求你输入当前用户的密码,并以超级用户权限运行命令。

因此,sudo !! 实际上是将上一个命令前加上 sudo,从而以超级用户权限重新执行该命令。这在需要提升权限的情况下非常有效。

注意事项

  • 确保使用 sudo 的安全性:虽然 sudo !! 可以快速修正命令,但滥用超级用户权限可能导致系统安全问题。确保在使用 sudo 时谨慎操作,特别是在执行重要的系统命令或修改关键配置时。
  • 命令历史安全:确保你的命令历史记录中没有包含敏感信息,如密码。如果需要,清理历史记录以保护隐私和安全。

相关命令

  • sudo:以超级用户权限执行命令。
  • !!:重复上一个命令。
  • history:查看命令历史记录,帮助确认之前的命令。

python3 -m http.server 命令**

python3 -m http.server 命令启动一个HTTP服务器,该服务器会将当前工作目录作为根目录,提供文件访问。它通过指定的端口号来监听请求,并在浏览器中显示当前目录的内容。这个命令适用于临时文件共享和开发测试,但不适合生产环境中的高性能需求。

基本用法非常简单,只需在命令行中输入以下命令:

python3 -m http.server [port]

其中,[port] 是你希望HTTP服务器监听的端口号,默认为8000。如果不指定端口号,默认会使用8000端口。

下面带实战一下:

在当前工作目录中启动HTTP服务器,使用默认端口8000:

python3 -m http.server
图片

这将启动一个HTTP服务器,你可以在浏览器中访问 http://192.168.3.66:8000 来查看当前目录中的文件列表。

图片

访问后还有日志输出:

图片

如果你希望使用其他端口号(如7070),可以在命令中指定:

python3 -m http.server 7070
图片

这将启动一个监听在7070端口的HTTP服务器,你可以在浏览器中访问 http://192.168.3.66:7070

图片

默认情况下,HTTP服务器绑定到所有可用的网络接口。如果你只想让服务器在本地回环接口上可用,可以指定 --bind 参数:

python3 -m http.server 7070 --bind 127.0.0.1
图片

这将使服务器仅在 127.0.0.1 地址上可用,即仅限于本地访问。

这个时候在服务器外想要访问就访问不了了:

图片

这个时候,我们两外开一个SSH窗口去curl 这个地址,发下直接curl http://127.0.0.1:7070是可以正常通的:

图片

实际应用

  1. 本地开发

在开发静态网站或前端应用时,python3 -m http.server 提供了一个快速的方式来测试和调试。你可以在本地服务器上查看网页效果,无需配置复杂的Web服务器。

  1. 临时文件共享

当需要与其他用户共享文件时,可以利用这个HTTP服务器。只需将文件放在当前目录下,并启动服务器,其他用户即可通过浏览器访问这些文件。

限制和注意事项

  1. 不适合生产环境

这个HTTP服务器不适合生产环境。它缺乏安全性和性能优化,只适用于开发和测试。

  1. 安全性

启动HTTP服务器时,它将公开当前目录的内容。确保你不在此目录中包含敏感文件。对外公开目录时,最好先确认目录中没有隐私或重要数据。

  1. 端口冲突

如果指定的端口号已被其他服务使用,HTTP服务器将无法启动。请检查端口使用情况,确保选择的端口号未被占用。

相关命令

  • python -m http.server:在Python 2中使用的类似命令,功能类似但Python 2已不再推荐使用。
  • http.server:Python内置模块,用于实现基本的HTTP服务器功能。
  • python -m SimpleHTTPServer:Python 2中的命令,功能类似但已被 python3 -m http.server 取代。

mtr 命令

mtr(My Traceroute)是一个集成了 pingtraceroute 功能的网络诊断工具。它能够实时显示网络路径中每一跳的丢包率和延迟,帮助网络管理员和开发人员分析和排查网络连接问题。与传统的 pingtraceroute 工具相比,mtr 提供了更为详尽和动态的网络状态信息。

mtrpingtraceroute 的功能结合在一起,它的主要特点包括:

  • 动态更新:与传统的 traceroute 不同,mtr 实时更新每个网络节点的延迟和丢包信息。
  • 综合统计:显示从源到目标的每一跳的延迟、丢包率和其他重要网络统计数据。

安装和使用

mtr 通常可以通过系统的包管理工具安装:

  • Debian/Ubuntu/Mint
sudo apt install mtr
图片
  • RHEL/CentOS/Fedora/Rocky/AlmaLinux
sudo yum install mtr
  • Gentoo
sudo emerge -a sys-apps/mtr
  • Alpine
sudo apk add mtr
  • Arch Linux
sudo pacman -S mtr
  • OpenSUSE
sudo zypper install mtr
  • FreeBSD
sudo pkg install mtr
基本用法

使用 mtr 命令非常简单。只需在命令后指定目标主机名或IP地址:

mtr baidu.com
图片

该命令将开始对 baidu.com 进行网络路径测试,并显示结果。

假设你遇到网络连接问题,可以使用 mtr 来诊断:

mtr -r -c 10 baidu.com
图片

这将以报告模式(-r)运行 mtr,并在完成10次测试后退出。输出会显示每一跳的详细统计信息。

你还可以使用 mtr 来测试到特定中转点的路径:

mtr -r -c 10 -i 1 baidu.com

这里,-i 选项指定了时间间隔(以秒为单位)。

图片

mtr 的输出包含多个列,每列提供不同的信息:

  • Host:网络节点的主机名或IP地址。
  • Loss%:丢包率,显示该节点的丢包百分比。
  • Snt:发送的包的数量。
  • Last:到达该节点的最后一个数据包的延迟时间(毫秒)。
  • Avg:平均延迟时间。
  • Best:最佳延迟时间。
  • Wrst:最差延迟时间。
  • StDev:延迟时间的标准差。

高级用法

  1. 设置最大跳数

可以使用 -m 选项设置最大跳数,例如限制为20跳:

mtr -m 20 baidu.com
图片
  1. 显示路由表

使用 -r 选项,可以在 mtr 完成后显示路由表:

mtr -r baidu.com
图片

注意事项

  • 数据动态更新mtr 提供的数据显示的是实时的网络状态,因此在不同时间点的测试结果可能会有所不同。
  • 权限问题:在某些系统上,可能需要使用 sudo 来获得权限以执行 mtr
sudo mtr baidu.com
  • 与传统工具的比较mtr 提供了动态更新的视图,适合进行实时诊断,而 pingtraceroute 更适合快速单次检查。

Ctrl+x+e 命令

Ctrl+x+e 是一个在终端中非常实用的快捷键组合,用于在默认文本编辑器中编辑当前命令行。这个功能尤其对系统管理员和开发人员有用,因为它可以帮助你更方便地编辑复杂或长的命令。

  • Ctrl+x:这是触发操作的关键组合键。
  • e:在 Ctrl+x 之后按下 e,将当前命令行内容发送到默认文本编辑器中进行编辑。

当你在终端中输入 Ctrl+x+e,当前命令行内容会被复制到你系统配置的默认文本编辑器中(如 vimnanoemacs 等)。在编辑器中,你可以对命令进行详细编辑和修改,然后保存并退出编辑器。保存后,命令会自动回到终端中,并准备好执行。

使用场景

  1. 编辑复杂命令

对于较长或复杂的命令,直接在命令行中编辑可能会比较困难。使用 Ctrl+x+e 可以在更友好的编辑环境中进行修改:

Ctrl+x+e

这会将当前命令行内容(例如长路径或包含多个选项的命令)复制到编辑器中,允许你更方便地进行编辑。

  1. 修复错误

如果你在命令行中输入了错误的命令,使用 Ctrl+x+e 可以在编辑器中进行修正而不必重新输入整个命令。例如,纠正拼写错误或更改选项:

Ctrl+x+e
  1. 复杂脚本修改

当你编写较长的命令或脚本时,可能需要多次修改。Ctrl+x+e 允许你在一个熟悉的编辑环境中进行修改,然后返回终端继续执行:

Ctrl+x+e

默认编辑器配置

默认文本编辑器由环境变量 EDITORVISUAL 决定。你可以通过设置这些变量来指定默认编辑器。例如,设置 vim 为默认编辑器:

export EDITOR=vim

或者设置 nano 为默认编辑器:

export EDITOR=nano

假设你有一个长命令,如:

cp /home/user/very_long_path_with_many_directories/file.txt /another/very_long_path_with_many_directories/
图片

使用 Ctrl+x+e,可以在 vimnano 中进行编辑,确保命令的正确性:

Ctrl+x+e
图片

在编辑器中,你可以方便地检查和修改路径。

如果你正在编写一个复杂的命令或脚本,并且希望在执行之前检查它,可以使用 Ctrl+x+e

echo "Long command with lots of parameters and options"
Ctrl+x+e

在编辑器中编辑并保存后,命令会自动回到终端中,并准备好执行。

注意事项

  • 编辑器熟悉度:使用 Ctrl+x+e 之前,确保你熟悉默认编辑器的基本操作(如 vimnano 等),以便能够顺利编辑和保存命令。
  • 配置正确性:确保环境变量 EDITORVISUAL 已正确设置,以避免在不期望的编辑器中打开命令。
  • 安全性:编辑器打开命令时,确保没有敏感信息泄露或错误操作,特别是在多人使用的环境中。

nl 命令

nl 命令用于给文本文件中的每一行添加行号,帮助用户更清晰地查看和处理文本数据。这个命令特别适合于需要进行文本分析、调试代码或查看日志文件的场景。

nl 是一个简单但功能强大的工具,能够为文件或标准输入的每一行添加行号。它支持多种编号样式和选项,可以自定义行号的格式。

要为文件添加行号,只需在命令后指定文件名:

nl wljslmz

这将输出带有行号的 wljslmz.txt 文件内容。

图片

也可以通过管道将标准输入传递给 nl 命令。例如,将 cat 命令的输出传递给 nl

cat wljslmz | nl

输出结果将与直接使用 nl 命令相同。

图片

使用 -n 选项来指定行号的格式。可以选择 ln(左对齐)、rn(右对齐)、rz(右对齐且用零填充):

nl -n ln wljslmz

这将使用右对齐的行号格式显示内容。

图片

高级用法**

  1. 指定行号起始值

使用 -v 选项可以指定行号的起始值。例如,从行号 3 开始:

nl -v 3 wljslmz

输出将从行号 3 开始:

图片
  1. 格式化编号

使用 -w 选项指定行号宽度。例如,使用宽度为 5 的行号:

nl -w 5 wljslmz

输出将具有宽度为 5 的行号:

图片
  1. 选择性编号

使用 -b 选项指定如何编号行。可以选择 a(对所有行编号)、t(仅对非空行编号)或 n(不对任何行编号):

我们修改一下原来的文件wljslmz,在中间文字部分增加一行:

图片

然后再执行以下命令:

nl -b t wljslmz

这将只对非空行编号。

图片

实际应用

  1. 调试代码

当处理代码或脚本时,使用 nl 为代码添加行号可以帮助定位错误和调试。例如:

nl script.sh

这使得检查和讨论代码行更容易。

  1. 查看日志文件

在查看日志文件时,添加行号有助于定位日志条目。例如:

nl /var/log/syslog

这将使分析日志更为方便。

  1. 文档处理

在处理文档时,为文档添加行号可以帮助组织和引用文档中的内容。例如:

nl document.txt

这可以使审阅和校对文档内容更为清晰。

注意事项

  • 大文件处理:对于大文件,nl 命令可能会生成大量输出。可以通过管道将输出重定向到文件或其他命令进行处理:
nl largefile.txt > numbered_largefile.txt
  • 文本格式nl 主要用于文本文件。对于二进制文件或非标准文本格式的文件,使用 nl 可能不会产生预期的结果。
  • 环境支持:确保你的系统支持 nl 命令,它是大多数 Unix-like 系统中标准的命令,但在某些系统中可能需要额外安装。

shuf 命令

shuf 是一个用于打乱文件行顺序或生成随机排列的命令行工具。它可以从文本文件或标准输入中随机选择行,并以随机顺序输出。这对于生成随机数据、进行随机抽样或测试程序时非常有用。

shuf 命令的主要功能是对输入的文本行进行随机化,输出结果可以按需排序或选择特定数量的随机行。

要对文件中的行进行随机排序,可以使用以下命令:

shuf wljslmz

这将输出 wljslmz 文件中的行,顺序是随机的。

图片

你可以选择从文件中随机选择一定数量的行。例如,从文件中选择 3 行:

shuf -n 3 wljslmz

输出将是文件中随机选择的 3 行:

图片

每次输出的都不一样:

图片

shuf 也可以用于生成随机数。例如,生成从 1 到 10 的随机数:

shuf -i 1-10 -n 1

输出将是 1 到 10 之间的一个随机数:

图片

shuf 还可以处理标准输入。例如,打乱从 echo 命令传递的数据:

echo -e "one\ntwo\nthree\nfour\nfive" | shuf

输出将是 onetwothreefourfive 的随机顺序:

高级用法

  1. 指定随机种子

使用 --random-source 选项可以指定一个文件作为随机种子源,从而控制随机数生成的种子。例如,使用 /dev/urandom 作为随机源:

shuf --random-source=/dev/urandom -n 5 wljslmz
图片
  1. 从指定范围生成随机数

生成特定范围内的随机数时,可以指定起始和结束范围。例如,从 100 到 200 生成 5 个随机数:

shuf -i 100-200 -n 5

输出将是 100 到 200 之间的 5 个随机数:

图片

实际应用

  1. 测试数据生成

当需要生成测试数据时,shuf 可以用来打乱数据行的顺序。例如,在测试应用程序时,可以使用 shuf 随机化测试用例:

shuf test_cases.txt > randomized_test_cases.txt
  1. 抽样

在进行数据抽样时,shuf 可以帮助从大量数据中随机选择样本。例如,从客户列表中随机抽取 10 个客户:

shuf -n 10 customer_list.txt
  1. 游戏和娱乐

在游戏中,shuf 可以用来生成随机的游戏场景或内容。例如,打乱游戏关卡的顺序:

shuf levels.txt > randomized_levels.txt

注意事项

  • 性能考虑:对于非常大的文件,shuf 可能会消耗大量内存。确保系统有足够的资源来处理大文件。
  • 随机种子:如果需要可重复的随机结果,可以使用 --random-source 选项指定固定的随机源。

ss 命令

ss 命令用于显示套接字(socket)统计信息,是 netstat 的替代工具。它可以提供比 netstat 更加详细和快速的网络连接信息,特别是在高负载的系统中。ss 主要用于网络诊断和性能监控。

ss 命令可以显示与套接字相关的详细信息,包括 TCP 和 UDP 连接、监听的端口、网络状态等。它支持多种选项来过滤和格式化输出,以便用户可以获取所需的信息。

要查看系统上的所有网络连接,可以使用以下命令:

ss

这将显示所有套接字的基本信息,包括协议、接收和发送队列、状态等。

基本用法

  1. 查看所有连接

要查看所有的网络连接(包括 TCP 和 UDP):

ss -a

这将显示所有套接字,包括监听和非监听的连接。

  1. 查看 TCP 连接

要只查看 TCP 连接:

ss -t

这将显示当前所有的 TCP 连接。

  1. 查看 UDP 连接

要只查看 UDP 连接:

ss -u

这将显示所有的 UDP 连接。

我现在服务器上还没有:

  1. 显示监听的端口

要显示当前正在监听的端口:

ss -l

这将列出所有正在监听的套接字(包括 TCP 和 UDP)。

  1. 显示详细信息

要显示更详细的信息(包括进程信息):

ss -tuln

这将显示 TCP 和 UDP 连接的详细信息,不解析服务名称(-n 选项)。

  1. 显示连接状态

要显示连接的状态(例如 ESTABLISTEN 等):

ss -s

这将提供总结性的网络统计信息。

  1. 过滤特定端口

要过滤并显示特定端口的连接(例如端口 80):

ss -tuln | grep :80

这将显示与端口 80 相关的所有网络连接。

高级用法

  1. 显示进程信息

要显示与套接字关联的进程信息(需要 root 权限):

ss -tp

这将列出每个连接的进程 ID 和进程名称。

  1. 显示连接的详细统计

使用 -i 选项来显示每个套接字的详细统计信息:

ss -i

输出将包括每个连接的详细信息,如丢包统计和延迟等。

  1. 显示 IPv6 连接

要查看 IPv6 套接字连接:

ss -6

这将显示所有的 IPv6 套接字。

实际应用

  1. 网络故障排查

使用 ss 命令可以帮助你诊断网络问题,例如查看某个服务是否在监听预期的端口:

ss -tuln | grep :80

这可以确认 Web 服务器是否正在运行并监听端口 80。

  1. 监控网络性能

通过 ss -s 命令,可以监控系统的网络性能,查看是否有异常的流量或连接:

ss -s

这有助于识别网络瓶颈或异常流量模式。

  1. 检查应用程序连接

查看特定应用程序的连接状态,例如数据库连接:

ss -tuln | grep :3306

这将帮助确认数据库服务是否正在正常运行并接受连接。

注意事项

  • 权限要求:某些 ss 命令的功能需要 root 权限,特别是查看进程信息或详细的网络统计。
  • 性能考虑ss 通常比 netstat 更高效,但在非常高负载的系统中,仍然需要注意性能影响。
  • 格式化输出ss 提供了多种选项来格式化输出,确保根据实际需求选择合适的选项来获得所需的信息。

last 命令

last 命令用于显示系统上用户的登录历史记录。它从 /var/log/wtmp 文件中读取数据,该文件记录了系统启动、登录、注销以及系统关机等事件。last 命令对于系统管理员来说非常有用,可以帮助跟踪用户活动和排查登录相关的问题。

last 命令提供系统上用户登录和注销的详细记录,包括登录时间、注销时间、持续时间、终端号以及登录来源等信息。它可以帮助系统管理员了解用户的活动和系统的使用情况。

要查看最近的登录记录,只需运行 last 命令:

last

这将显示所有用户的最近登录记录。

要查看特定用户的登录记录,例如 user1

last user1

这将显示用户 user1 的所有登录记录。

要查看系统重启记录:

last reboot

这将显示系统重启的详细记录。

图片

使用 -n 选项来限制显示的记录数量,例如显示最近的 5 条记录:

last -n 5

这将显示最新的 5 条记录。

图片

要查看某个时间段的记录,可以结合 grep 使用,例如查看 7 月 24 日的登录记录:

last | grep 'Jul 25'

这将显示 7 月 25 日的所有登录记录。

图片

高级用法

  1. 指定时间范围

last 命令本身不支持直接指定时间范围,但可以结合其他工具(如 grepawk)进行过滤。例如,查看 2024 年 7 月 24 日到 2024 年 7 月 25 日的记录:

last | awk '$5 == "Jul" && $6 == "24" || $5 == "Jul" && $6 == "25"'

这将过滤出指定日期范围内的记录。

  1. 查看注销记录

如果你想查看用户的注销记录,可以使用 -x 选项:

last -x

这将显示包括系统关机和重启在内的所有事件。

  1. 查看特定终端的记录

要查看特定终端的登录记录,例如 tty7

last tty7

这将显示所有通过 tty7 终端的登录记录。

实际应用

  1. 用户活动监控

系统管理员可以使用 last 命令来监控用户的登录活动,识别异常行为或未授权访问。例如,检测是否有用户在非工作时间登录系统:

last | grep '2024-07-24'
  1. 系统问题排查

在系统出现问题时,last 命令可以帮助排查是否存在频繁的重启或异常关机记录。例如,查看系统重启记录:

last reboot
  1. 安全审计

last 命令可以用于安全审计,检查是否有未授权用户登录系统。通过审查登录记录,管理员可以识别潜在的安全威胁:

last | grep 'unauthorized_user'

注意事项

  • 日志文件位置last 命令依赖于 /var/log/wtmp 文件,如果该文件被删除或损坏,last 命令可能无法正确工作。
  • 日志轮换:系统可能会定期轮换日志文件,旧的 /var/log/wtmp 文件可能会被归档到 /var/log/wtmp.1 等位置。确保在检查日志时包括这些归档文件。

curl ifconfig.me 命令

curl ifconfig.me 是一个非常实用的命令,用于获取和显示公共 IP 地址。curl 是一个命令行工具,用于与服务器进行数据传输,ifconfig.me 是一个简单的服务,它返回请求发起者的公共 IP 地址。

curl 是一个强大的工具,可以用来发送 HTTP 请求,并处理响应。通过 curl 发送请求到 ifconfig.me 可以迅速获取请求者的公共 IP 地址。这在需要确认外部访问点时非常有用,尤其是在调试和配置网络时。

要查看你的公共 IP 地址,只需运行以下命令:

curl ifconfig.me

这将返回你的公共 IP 地址,例如:

如果你希望获取更多的网络信息,可以使用 -i 选项查看 HTTP 响应头信息:

curl -i ifconfig.me

输出将包括 HTTP 响应头和 IP 地址:

ifconfig.me 提供了不同的服务来显示信息。如果你想获取详细的 JSON 格式信息,可以使用:

curl ifconfig.me/all.json

这将返回包含 IP 地址及其他网络信息的 JSON 数据:

高级用法

  1. 处理代理

如果你的网络连接通过代理服务器,可以使用 -x 选项指定代理:

curl -x http://proxyserver:port ifconfig.me

这将通过指定的代理服务器访问 ifconfig.me 服务。

  1. 自定义请求头

你可以通过 -H 选项添加自定义请求头,例如设置 User-Agent:

curl -H "User-Agent: CustomAgent" ifconfig.me

这将以自定义的 User-Agent 访问 ifconfig.me

  1. 获取详细的调试信息

如果你需要调试请求,可以使用 -v 选项查看详细的请求和响应信息:

curl -v ifconfig.me

这将显示包括连接过程在内的详细调试信息。

实际应用

  1. 网络调试

在调试网络连接时,获取公共 IP 地址可以帮助确认网络设置是否正确。例如,检查 VPN 连接是否成功地更改了你的公共 IP 地址:

curl ifconfig.me
  1. 配置防火墙

当配置防火墙规则或访问控制时,了解你的公共 IP 地址是非常重要的。例如,允许特定的公共 IP 地址访问你的服务器:

curl ifconfig.me
  1. 自动化脚本

在自动化脚本中,你可能需要动态获取当前的公共 IP 地址,例如用于更新动态 DNS 服务:

PUBLIC_IP=$(curl -s ifconfig.me)

这将把你的公共 IP 地址存储在变量 PUBLIC_IP 中,便于后续操作。

注意事项

  • 隐私问题:通过 curl ifconfig.me 获取的 IP 地址是公开的,确保在分享或处理这些信息时注意隐私保护。
  • 服务可用性ifconfig.me 是一个第三方服务,可能会出现不可用的情况。你可以选择其他类似的服务,如 ipinfo.ioicanhazip.com

tree 命令

tree 命令用于以树状图形式显示目录和文件结构。它提供了一种可视化的方式来查看目录中的内容,使得用户可以更直观地了解文件系统的层次结构。这对于系统管理员、开发人员和普通用户来说,都是一个非常有用的工具。

tree 命令以层次结构的树状图形式展示指定目录及其子目录的内容。它可以显示文件和目录的树状结构,帮助用户快速了解目录的结构和内容。

要显示当前目录的树状结构,可以使用以下命令:

tree

这将列出当前目录及其所有子目录和文件的结构。

要显示指定目录的结构,例如 /home/user

tree /dev

这将列出 /dev 目录及其子目录和文件的树状结构。

使用 -L 选项限制树状图的显示深度,例如显示到深度为 2:

tree -L 2

这将显示当前目录及其直接子目录和文件,但不会显示更深层次的目录结构。

使用 -f 选项显示完整的文件路径:

tree -f

这将列出每个文件和目录的完整路径,而不仅仅是相对路径。

使用 -s 选项显示每个文件的大小:

tree -s

这将显示文件的大小信息,帮助你了解每个文件的占用空间。

要将树状图导出到一个文件,例如 directory_structure.txt

tree > directory_structure.txt

这将把树状结构输出到指定的文件中,方便查看和分享。

高级用法

  1. 显示空目录

使用 -a 选项显示所有文件和目录,包括隐藏的文件:

tree -a

这将包括以点号开头的隐藏文件和目录在内的所有内容。

  1. 使用特定的文件类型过滤

使用 -P 选项来过滤显示特定类型的文件。例如,只显示 .txt 文件:

tree -P '*.txt'

这将仅显示符合指定模式的文件和目录。

  1. 以指定的字符集显示

使用 --charset 选项可以选择显示的字符集。例如,使用 ASCII 字符集:

tree --charset=ASCII

这将以 ASCII 字符集显示树状结构,适用于终端环境不支持 Unicode 的情况。

  1. 仅显示目录

使用 -d 选项仅显示目录而不显示文件:

tree -d

这将仅列出目录结构,不包括文件。

  1. 忽略某些文件

使用 --ignore 选项忽略某些文件或目录。例如,忽略 *.log 文件:

tree --ignore '*.log'

这将忽略所有 .log 文件,仅显示其他文件和目录。

实际应用

  1. 文件系统审核

使用 tree 命令可以帮助审核文件系统结构,检查是否有不必要的文件或目录。例如:

tree -L 2

这可以帮助系统管理员快速了解目录结构。

  1. 目录整理

当需要整理目录结构时,tree 命令提供了一种可视化的方式,帮助你决定如何重新组织文件和目录:

tree -C -L 3

这可以帮助你直观地了解当前目录结构,从而进行有效的整理。

  1. 备份和同步

在备份或同步文件时,可以使用 tree 命令生成目录结构报告,以确保备份和同步操作的准确性:

tree > backup_structure.txt

这将创建备份目录的结构文件,便于与备份结果进行比对。

注意事项

  • 性能:在目录层次较深或包含大量文件的情况下,tree 命令的执行速度可能会较慢,特别是当使用 -L 选项限制深度时,可以减少输出量来提高性能。
  • 字符集:根据终端的支持情况选择合适的字符集,以确保输出结果的可读性。

pstree 命令

pstree 命令用于以树状图的形式显示当前系统上运行的进程。它展示了进程的层次结构,使得用户能够更直观地了解各个进程之间的父子关系。pstree 是系统管理员和开发人员常用的工具,特别是在调试和监控系统时。

pstree 命令以树状结构显示当前系统上所有进程,并且显示每个进程的父进程。它比 ps 命令的输出更为直观,特别是当系统上运行了多个进程时,可以很方便地查看进程之间的关系。

要查看当前系统上所有进程的树状结构,可以简单地运行 pstree 命令:

pstree

这将显示以树状结构组织的当前系统上运行的所有进程。

使用 -p 选项显示进程的 PID:

pstree -p

输出示例:

这将显示进程的 PID,使得你可以更清楚地知道每个进程的标识号。

使用 -A 选项以 ASCII 字符集显示进程树:

pstree -A
图片

这将使用 ASCII 字符集绘制树状结构,适用于不支持 UTF-8 的终端。

使用 -c 选项显示进程的完整命令行:

pstree -c

输出示例:

图片

这将显示每个进程的完整命令行信息。

使用 -u 选项显示特定用户的进程树,例如显示 root 用户的进程:

pstree -u root

这将仅显示由指定用户运行的进程及其树状结构。

高级用法

  1. 过滤进程

使用 grep 过滤特定的进程。例如,查看包含 sshd 的进程树:

pstree | grep sshd

这将显示所有包含 sshd 的进程树。

  1. 将输出保存到文件

要将进程树输出保存到文件,例如 process_tree.txt

pstree > process_tree.txt

这将把进程树保存到指定的文件中,方便后续查看和分析。

  1. 实时更新

pstree 不支持实时更新,但你可以使用 watch 命令结合 pstree 来实现实时查看进程树:

watch pstree

这将每隔几秒钟刷新一次 pstree 输出,帮助你实时监控进程状态。

  1. 显示详细进程树

使用 -l 选项显示长格式的进程树:

pstree -l

这将显示详细的进程树结构,帮助你了解复杂的进程关系。

实际应用

  1. 系统监控

pstree 命令可以帮助系统管理员监控系统上运行的进程及其父子关系。通过查看进程树,管理员可以快速识别进程的来源和依赖关系,从而更好地管理系统资源。

pstree -p

这将帮助你了解系统的进程层次结构,从而优化系统性能。

  1. 故障排查

在系统出现问题时,pstree 可以帮助你分析进程间的关系,从而定位问题。例如,检查是否有进程被异常终止或存在僵尸进程:

pstree -p

这将帮助你快速定位进程相关的问题。

  1. 安全审计

pstree 可以用于安全审计,检查是否有异常的进程或未授权的进程运行。例如,识别异常的父子进程关系:

pstree -c

这将帮助你发现潜在的安全威胁和系统漏洞。

注意事项**

  • 性能问题:在大型系统上,pstree 命令可能会生成大量输出。你可以使用选项来限制输出范围,从而提高性能。
  • 字符集问题:根据终端的字符集支持情况选择合适的选项,以确保输出结果的可读性。
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门
本栏推荐