来源:网络技术联盟站
sudo !!
命令
在Linux命令行环境中,sudo !!
是一个非常实用且高效的快捷命令。它允许用户以超级用户(root)权限重复执行上一个命令,从而避免了在需要超级用户权限的情况下重新输入整个命令。这一小技巧对于系统管理员和开发人员来说尤其有用,因为它节省了时间并减少了重复输入错误的可能性。
例如:
sudo !!
的工作原理基于两个命令的组合:
!!
(双感叹号):这个特殊的符号在命令行历史中代表上一个执行的命令。当你在终端中输入!!
并回车时,系统会自动替换成上一个命令的内容,并执行它。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
是可以正常通的:
实际应用
- 本地开发
在开发静态网站或前端应用时,python3 -m http.server
提供了一个快速的方式来测试和调试。你可以在本地服务器上查看网页效果,无需配置复杂的Web服务器。
- 临时文件共享
当需要与其他用户共享文件时,可以利用这个HTTP服务器。只需将文件放在当前目录下,并启动服务器,其他用户即可通过浏览器访问这些文件。
限制和注意事项
- 不适合生产环境
这个HTTP服务器不适合生产环境。它缺乏安全性和性能优化,只适用于开发和测试。
- 安全性
启动HTTP服务器时,它将公开当前目录的内容。确保你不在此目录中包含敏感文件。对外公开目录时,最好先确认目录中没有隐私或重要数据。
- 端口冲突
如果指定的端口号已被其他服务使用,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)是一个集成了 ping
和 traceroute
功能的网络诊断工具。它能够实时显示网络路径中每一跳的丢包率和延迟,帮助网络管理员和开发人员分析和排查网络连接问题。与传统的 ping
和 traceroute
工具相比,mtr
提供了更为详尽和动态的网络状态信息。
mtr
将 ping
和 traceroute
的功能结合在一起,它的主要特点包括:
动态更新:与传统的
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:延迟时间的标准差。
高级用法
- 设置最大跳数
可以使用 -m
选项设置最大跳数,例如限制为20跳:
mtr -m 20 baidu.com
- 显示路由表
使用 -r
选项,可以在 mtr
完成后显示路由表:
mtr -r baidu.com
注意事项
数据动态更新:
mtr
提供的数据显示的是实时的网络状态,因此在不同时间点的测试结果可能会有所不同。权限问题:在某些系统上,可能需要使用
sudo
来获得权限以执行mtr
:
sudo mtr baidu.com
- 与传统工具的比较:
mtr
提供了动态更新的视图,适合进行实时诊断,而ping
和traceroute
更适合快速单次检查。
Ctrl+x+e
命令
Ctrl+x+e
是一个在终端中非常实用的快捷键组合,用于在默认文本编辑器中编辑当前命令行。这个功能尤其对系统管理员和开发人员有用,因为它可以帮助你更方便地编辑复杂或长的命令。
Ctrl+x
:这是触发操作的关键组合键。e
:在Ctrl+x
之后按下e
,将当前命令行内容发送到默认文本编辑器中进行编辑。
当你在终端中输入 Ctrl+x+e
,当前命令行内容会被复制到你系统配置的默认文本编辑器中(如 vim
、nano
、emacs
等)。在编辑器中,你可以对命令进行详细编辑和修改,然后保存并退出编辑器。保存后,命令会自动回到终端中,并准备好执行。
使用场景
- 编辑复杂命令
对于较长或复杂的命令,直接在命令行中编辑可能会比较困难。使用 Ctrl+x+e
可以在更友好的编辑环境中进行修改:
Ctrl+x+e
这会将当前命令行内容(例如长路径或包含多个选项的命令)复制到编辑器中,允许你更方便地进行编辑。
- 修复错误
如果你在命令行中输入了错误的命令,使用 Ctrl+x+e
可以在编辑器中进行修正而不必重新输入整个命令。例如,纠正拼写错误或更改选项:
Ctrl+x+e
- 复杂脚本修改
当你编写较长的命令或脚本时,可能需要多次修改。Ctrl+x+e
允许你在一个熟悉的编辑环境中进行修改,然后返回终端继续执行:
Ctrl+x+e
默认编辑器配置
默认文本编辑器由环境变量 EDITOR
或 VISUAL
决定。你可以通过设置这些变量来指定默认编辑器。例如,设置 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
,可以在 vim
或 nano
中进行编辑,确保命令的正确性:
Ctrl+x+e
在编辑器中,你可以方便地检查和修改路径。
如果你正在编写一个复杂的命令或脚本,并且希望在执行之前检查它,可以使用 Ctrl+x+e
:
echo "Long command with lots of parameters and options" Ctrl+x+e
在编辑器中编辑并保存后,命令会自动回到终端中,并准备好执行。
注意事项
编辑器熟悉度:使用
Ctrl+x+e
之前,确保你熟悉默认编辑器的基本操作(如vim
、nano
等),以便能够顺利编辑和保存命令。配置正确性:确保环境变量
EDITOR
或VISUAL
已正确设置,以避免在不期望的编辑器中打开命令。安全性:编辑器打开命令时,确保没有敏感信息泄露或错误操作,特别是在多人使用的环境中。
nl
命令
nl
命令用于给文本文件中的每一行添加行号,帮助用户更清晰地查看和处理文本数据。这个命令特别适合于需要进行文本分析、调试代码或查看日志文件的场景。
nl
是一个简单但功能强大的工具,能够为文件或标准输入的每一行添加行号。它支持多种编号样式和选项,可以自定义行号的格式。
要为文件添加行号,只需在命令后指定文件名:
nl wljslmz
这将输出带有行号的 wljslmz.txt
文件内容。
也可以通过管道将标准输入传递给 nl
命令。例如,将 cat
命令的输出传递给 nl
:
cat wljslmz | nl
输出结果将与直接使用 nl
命令相同。
使用 -n
选项来指定行号的格式。可以选择 ln
(左对齐)、rn
(右对齐)、rz
(右对齐且用零填充):
nl -n ln wljslmz
这将使用右对齐的行号格式显示内容。
高级用法**
- 指定行号起始值
使用 -v
选项可以指定行号的起始值。例如,从行号 3 开始:
nl -v 3 wljslmz
输出将从行号 3 开始:
- 格式化编号
使用 -w
选项指定行号宽度。例如,使用宽度为 5 的行号:
nl -w 5 wljslmz
输出将具有宽度为 5 的行号:
- 选择性编号
使用 -b
选项指定如何编号行。可以选择 a
(对所有行编号)、t
(仅对非空行编号)或 n
(不对任何行编号):
我们修改一下原来的文件wljslmz,在中间文字部分增加一行:
然后再执行以下命令:
nl -b t wljslmz
这将只对非空行编号。
实际应用
- 调试代码
当处理代码或脚本时,使用 nl
为代码添加行号可以帮助定位错误和调试。例如:
nl script.sh
这使得检查和讨论代码行更容易。
- 查看日志文件
在查看日志文件时,添加行号有助于定位日志条目。例如:
nl /var/log/syslog
这将使分析日志更为方便。
- 文档处理
在处理文档时,为文档添加行号可以帮助组织和引用文档中的内容。例如:
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
输出将是 one
、two
、three
、four
和 five
的随机顺序:
高级用法
- 指定随机种子
使用 --random-source
选项可以指定一个文件作为随机种子源,从而控制随机数生成的种子。例如,使用 /dev/urandom
作为随机源:
shuf --random-source=/dev/urandom -n 5 wljslmz
- 从指定范围生成随机数
生成特定范围内的随机数时,可以指定起始和结束范围。例如,从 100 到 200 生成 5 个随机数:
shuf -i 100-200 -n 5
输出将是 100 到 200 之间的 5 个随机数:
实际应用
- 测试数据生成
当需要生成测试数据时,shuf
可以用来打乱数据行的顺序。例如,在测试应用程序时,可以使用 shuf
随机化测试用例:
shuf test_cases.txt > randomized_test_cases.txt
- 抽样
在进行数据抽样时,shuf
可以帮助从大量数据中随机选择样本。例如,从客户列表中随机抽取 10 个客户:
shuf -n 10 customer_list.txt
- 游戏和娱乐
在游戏中,shuf
可以用来生成随机的游戏场景或内容。例如,打乱游戏关卡的顺序:
shuf levels.txt > randomized_levels.txt
注意事项
性能考虑:对于非常大的文件,
shuf
可能会消耗大量内存。确保系统有足够的资源来处理大文件。随机种子:如果需要可重复的随机结果,可以使用
--random-source
选项指定固定的随机源。
ss
命令
ss
命令用于显示套接字(socket)统计信息,是 netstat
的替代工具。它可以提供比 netstat
更加详细和快速的网络连接信息,特别是在高负载的系统中。ss
主要用于网络诊断和性能监控。
ss
命令可以显示与套接字相关的详细信息,包括 TCP 和 UDP 连接、监听的端口、网络状态等。它支持多种选项来过滤和格式化输出,以便用户可以获取所需的信息。
要查看系统上的所有网络连接,可以使用以下命令:
ss
这将显示所有套接字的基本信息,包括协议、接收和发送队列、状态等。
基本用法
- 查看所有连接
要查看所有的网络连接(包括 TCP 和 UDP):
ss -a
这将显示所有套接字,包括监听和非监听的连接。
- 查看 TCP 连接
要只查看 TCP 连接:
ss -t
这将显示当前所有的 TCP 连接。
- 查看 UDP 连接
要只查看 UDP 连接:
ss -u
这将显示所有的 UDP 连接。
我现在服务器上还没有:
- 显示监听的端口
要显示当前正在监听的端口:
ss -l
这将列出所有正在监听的套接字(包括 TCP 和 UDP)。
- 显示详细信息
要显示更详细的信息(包括进程信息):
ss -tuln
这将显示 TCP 和 UDP 连接的详细信息,不解析服务名称(-n
选项)。
- 显示连接状态
要显示连接的状态(例如 ESTAB
、LISTEN
等):
ss -s
这将提供总结性的网络统计信息。
- 过滤特定端口
要过滤并显示特定端口的连接(例如端口 80):
ss -tuln | grep :80
这将显示与端口 80 相关的所有网络连接。
高级用法
- 显示进程信息
要显示与套接字关联的进程信息(需要 root 权限):
ss -tp
这将列出每个连接的进程 ID 和进程名称。
- 显示连接的详细统计
使用 -i
选项来显示每个套接字的详细统计信息:
ss -i
输出将包括每个连接的详细信息,如丢包统计和延迟等。
- 显示 IPv6 连接
要查看 IPv6 套接字连接:
ss -6
这将显示所有的 IPv6 套接字。
实际应用
- 网络故障排查
使用 ss
命令可以帮助你诊断网络问题,例如查看某个服务是否在监听预期的端口:
ss -tuln | grep :80
这可以确认 Web 服务器是否正在运行并监听端口 80。
- 监控网络性能
通过 ss -s
命令,可以监控系统的网络性能,查看是否有异常的流量或连接:
ss -s
这有助于识别网络瓶颈或异常流量模式。
- 检查应用程序连接
查看特定应用程序的连接状态,例如数据库连接:
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 日的所有登录记录。
高级用法
- 指定时间范围
last
命令本身不支持直接指定时间范围,但可以结合其他工具(如 grep
和 awk
)进行过滤。例如,查看 2024 年 7 月 24 日到 2024 年 7 月 25 日的记录:
last | awk '$5 == "Jul" && $6 == "24" || $5 == "Jul" && $6 == "25"'
这将过滤出指定日期范围内的记录。
- 查看注销记录
如果你想查看用户的注销记录,可以使用 -x
选项:
last -x
这将显示包括系统关机和重启在内的所有事件。
- 查看特定终端的记录
要查看特定终端的登录记录,例如 tty7
:
last tty7
这将显示所有通过 tty7
终端的登录记录。
实际应用
- 用户活动监控
系统管理员可以使用 last
命令来监控用户的登录活动,识别异常行为或未授权访问。例如,检测是否有用户在非工作时间登录系统:
last | grep '2024-07-24'
- 系统问题排查
在系统出现问题时,last
命令可以帮助排查是否存在频繁的重启或异常关机记录。例如,查看系统重启记录:
last reboot
- 安全审计
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 数据:
高级用法
- 处理代理
如果你的网络连接通过代理服务器,可以使用 -x
选项指定代理:
curl -x http://proxyserver:port ifconfig.me
这将通过指定的代理服务器访问 ifconfig.me
服务。
- 自定义请求头
你可以通过 -H
选项添加自定义请求头,例如设置 User-Agent:
curl -H "User-Agent: CustomAgent" ifconfig.me
这将以自定义的 User-Agent 访问 ifconfig.me
。
- 获取详细的调试信息
如果你需要调试请求,可以使用 -v
选项查看详细的请求和响应信息:
curl -v ifconfig.me
这将显示包括连接过程在内的详细调试信息。
实际应用
- 网络调试
在调试网络连接时,获取公共 IP 地址可以帮助确认网络设置是否正确。例如,检查 VPN 连接是否成功地更改了你的公共 IP 地址:
curl ifconfig.me
- 配置防火墙
当配置防火墙规则或访问控制时,了解你的公共 IP 地址是非常重要的。例如,允许特定的公共 IP 地址访问你的服务器:
curl ifconfig.me
- 自动化脚本
在自动化脚本中,你可能需要动态获取当前的公共 IP 地址,例如用于更新动态 DNS 服务:
PUBLIC_IP=$(curl -s ifconfig.me)
这将把你的公共 IP 地址存储在变量 PUBLIC_IP
中,便于后续操作。
注意事项
隐私问题:通过
curl ifconfig.me
获取的 IP 地址是公开的,确保在分享或处理这些信息时注意隐私保护。服务可用性:
ifconfig.me
是一个第三方服务,可能会出现不可用的情况。你可以选择其他类似的服务,如ipinfo.io
或icanhazip.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
这将把树状结构输出到指定的文件中,方便查看和分享。
高级用法
- 显示空目录
使用 -a
选项显示所有文件和目录,包括隐藏的文件:
tree -a
这将包括以点号开头的隐藏文件和目录在内的所有内容。
- 使用特定的文件类型过滤
使用 -P
选项来过滤显示特定类型的文件。例如,只显示 .txt
文件:
tree -P '*.txt'
这将仅显示符合指定模式的文件和目录。
- 以指定的字符集显示
使用 --charset
选项可以选择显示的字符集。例如,使用 ASCII 字符集:
tree --charset=ASCII
这将以 ASCII 字符集显示树状结构,适用于终端环境不支持 Unicode 的情况。
- 仅显示目录
使用 -d
选项仅显示目录而不显示文件:
tree -d
这将仅列出目录结构,不包括文件。
- 忽略某些文件
使用 --ignore
选项忽略某些文件或目录。例如,忽略 *.log
文件:
tree --ignore '*.log'
这将忽略所有 .log
文件,仅显示其他文件和目录。
实际应用
- 文件系统审核
使用 tree
命令可以帮助审核文件系统结构,检查是否有不必要的文件或目录。例如:
tree -L 2
这可以帮助系统管理员快速了解目录结构。
- 目录整理
当需要整理目录结构时,tree
命令提供了一种可视化的方式,帮助你决定如何重新组织文件和目录:
tree -C -L 3
这可以帮助你直观地了解当前目录结构,从而进行有效的整理。
- 备份和同步
在备份或同步文件时,可以使用 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
这将仅显示由指定用户运行的进程及其树状结构。
高级用法
- 过滤进程
使用 grep
过滤特定的进程。例如,查看包含 sshd
的进程树:
pstree | grep sshd
这将显示所有包含 sshd
的进程树。
- 将输出保存到文件
要将进程树输出保存到文件,例如 process_tree.txt
:
pstree > process_tree.txt
这将把进程树保存到指定的文件中,方便后续查看和分析。
- 实时更新
pstree
不支持实时更新,但你可以使用 watch
命令结合 pstree
来实现实时查看进程树:
watch pstree
这将每隔几秒钟刷新一次 pstree
输出,帮助你实时监控进程状态。
- 显示详细进程树
使用 -l
选项显示长格式的进程树:
pstree -l
这将显示详细的进程树结构,帮助你了解复杂的进程关系。
实际应用
- 系统监控
pstree
命令可以帮助系统管理员监控系统上运行的进程及其父子关系。通过查看进程树,管理员可以快速识别进程的来源和依赖关系,从而更好地管理系统资源。
pstree -p
这将帮助你了解系统的进程层次结构,从而优化系统性能。
- 故障排查
在系统出现问题时,pstree
可以帮助你分析进程间的关系,从而定位问题。例如,检查是否有进程被异常终止或存在僵尸进程:
pstree -p
这将帮助你快速定位进程相关的问题。
- 安全审计
pstree
可以用于安全审计,检查是否有异常的进程或未授权的进程运行。例如,识别异常的父子进程关系:
pstree -c
这将帮助你发现潜在的安全威胁和系统漏洞。
注意事项**
性能问题:在大型系统上,
pstree
命令可能会生成大量输出。你可以使用选项来限制输出范围,从而提高性能。字符集问题:根据终端的字符集支持情况选择合适的选项,以确保输出结果的可读性。
黑客&网络安全如何学习
今天只要你给我的文章点赞,我私藏的网安学习资料一样免费共享给你们,来看看有哪些东西。
1.学习路线图
攻击和防守要学的东西也不少,具体要学的东西我都写在了上面的路线图,如果你能学完它们,你去就业和接私活完全没有问题。
2.视频教程
网上虽然也有很多的学习资源,但基本上都残缺不全的,这是我自己录的网安视频教程,上面路线图的每一个知识点,我都有配套的视频讲解。
内容涵盖了网络安全法学习、网络安全运营等保测评、渗透测试基础、漏洞详解、计算机基础知识等,都是网络安全入门必知必会的学习内容。
(都打包成一块的了,不能一一展开,总共300多集)
因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取
CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享
3.技术文档和电子书
技术文档也是我自己整理的,包括我参加大型网安行动、CTF和挖SRC漏洞的经验和技术要点,电子书也有200多本,由于内容的敏感性,我就不一一展示了。
因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取
CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享
4.工具包、面试题和源码
“工欲善其事必先利其器”我为大家总结出了最受欢迎的几十款款黑客工具。涉及范围主要集中在 信息收集、Android黑客工具、自动化工具、网络钓鱼等,感兴趣的同学不容错过。
还有我视频里讲的案例源码和对应的工具包,需要的话也可以拿走。
因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取
CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享
最后就是我这几年整理的网安方面的面试题,如果你是要找网安方面的工作,它们绝对能帮你大忙。
这些题目都是大家在面试深信服、奇安信、腾讯或者其它大厂面试时经常遇到的,如果大家有好的题目或者好的见解欢迎分享。
参考解析:深信服官网、奇安信官网、Freebuf、csdn等
内容特点:条理清晰,含图像化表示更加易懂。
内容概要:包括 内网、操作系统、协议、渗透测试、安服、漏洞、注入、XSS、CSRF、SSRF、文件上传、文件下载、文件包含、XXE、逻辑漏洞、工具、SQLmap、NMAP、BP、MSF…
因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取