Linux教程 - Linux迷 https://www.linuxmi.com 分享Linux和编程 Sun, 13 Apr 2025 02:28:21 +0000 zh-Hans hourly 1 https://wordpress.org/?v=6.9.4 https://www.linuxmi.com/wp-content/uploads/2020/02/cropped-Favicon-32x32.png Linux教程 - Linux迷 https://www.linuxmi.com 32 32 在 Kali GNU/Linux Roll 中安装 OpenSSH 10.0 图文指南 https://www.linuxmi.com/kali-gnu-linux-roll-install-openssh-10-0.html?utm_source=rss&utm_medium=rss&utm_campaign=kali-gnu-linux-roll-install-openssh-10-0 https://www.linuxmi.com/kali-gnu-linux-roll-install-openssh-10-0.html#respond Sun, 13 Apr 2025 01:27:41 +0000 https://www.linuxmi.com/?p=26498 截至目前(2025年4月),OpenSSH 10.0 已经正式发布了,这次更新移除了过时的 DSA …

The post 在 Kali GNU/Linux Roll 中安装 OpenSSH 10.0 图文指南 first appeared on Linux迷.

]]>
截至目前(2025年4月),OpenSSH 10.0 已经正式发布了,这次更新移除了过时的 DSA 签名,默认启用了结合量子防护的密钥交换算法,还改进了 scp/sftp 行为和 sshd 安全性。配置文件支持更灵活的条件匹配,体验更流畅。

一句话总结:更安全、更现代、也更好用,SSH 用户值得马上升级!

但 Kali Linux 默认源里的版本一般不会第一时间更新到这么新。要安装最新版本,你通常有几个选择:

方式一:使用 Kali Rolling 测试源(适合稍微新一点的版本)

Kali 是基于 Debian Testing 的,你可以切到测试源或 kali-rolling 较新分支看看能不能拿到更新版。
不过一般不会立刻到10.0版,可能只是9.x的更新版。

命令参考:

┌──(linuxmi㉿linuxmi)-[~/www.linuxmi.com]
└─$ sudo apt update

┌──(linuxmi㉿linuxmi)-[~/www.linuxmi.com]
└─$ sudo apt install openssh-server

如果版本太旧,继续往下看手动编译的方法。

方式二:自己编译安装(最保险拿到最新10.0版)

如果你要第一时间用 OpenSSH 10.0,那基本需要自己手动编译。

步骤比较清楚,Linux迷(www.linuxmi.com)小编给你整理好啦:

1. 安装编译需要的依赖

┌──(linuxmi㉿linuxmi)-[~/www.linuxmi.com]
└─$ sudo apt update
┌──(linuxmi㉿linuxmi)-[~/www.linuxmi.com]
└─$ sudo apt install build-essential zlib1g-dev libssl-dev libpam0g-dev libselinux1-dev

2. 下载 OpenSSH 10 的源码

去官网拉最新版源码:

┌──(linuxmi㉿linuxmi)-[~/www.linuxmi.com]
└─$ wget https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-10.0p1.tar.gz

然后解压:

┌──(linuxmi㉿linuxmi)-[~/www.linuxmi.com]
└─$ tar zxvf openssh-10.0p1.tar.gz

┌──(linuxmi㉿linuxmi)-[~/www.linuxmi.com]
└─$ cd openssh-10.0p1

3. 配置编译参数

一般你可以用默认配置,不过推荐加上 /usr 这样系统知道怎么找你的 SSH。

┌──(linuxmi㉿linuxmi)-[~/www.linuxmi.com] 
└─$./configure --prefix=/usr --sysconfdir=/etc/ssh --with-md5-passwords

如果你想用更标准的 Kali 配置,可以多加一些,比如:

┌──(linuxmi㉿linuxmi)-[~/www.linuxmi.com] 
└─$./configure --prefix=/usr --sysconfdir=/etc/ssh --with-privsep-path=/var/lib/sshd --with-pam

4. 编译并安装

┌──(linuxmi㉿linuxmi)-[~/www.linuxmi.com] 
└─$make -j$(nproc)

┌──(linuxmi㉿linuxmi)-[~/www.linuxmi.com] 
└─$ sudo make install

安装好后,确认版本:

┌──(linuxmi㉿linuxmi)-[~/www.linuxmi.com]
└─$ ssh -V

应该看到:

10.0p2, OpenSSL 3.4.1 11 Feb 2025

5. 重启 ssh 服务(如果需要)

sudo systemctl restart ssh

如果你的系统服务名字叫 sshd,用:

sudo systemctl restart sshd

⚡ 小提示

  • 备份好旧配置:升级前备份 /etc/ssh/sshd_config,防止配置出问题。

  • 小心远程服务器:如果你是在远程机器上操作,千万别直接 kill 掉旧 sshd,不然连接断了麻烦大了。

  • 长期维护:自己编译的版本不会跟随系统更新,需要你自己关注 OpenSSH 后续安全补丁。

相关链接:https://www.linuxmi.com/openssh-10-0.html

The post 在 Kali GNU/Linux Roll 中安装 OpenSSH 10.0 图文指南 first appeared on Linux迷.

]]>
https://www.linuxmi.com/kali-gnu-linux-roll-install-openssh-10-0.html/feed 0
默认命令太落后?试试这些更快更好用的 Linux 工具 https://www.linuxmi.com/easy-to-use-linux-tools.html?utm_source=rss&utm_medium=rss&utm_campaign=easy-to-use-linux-tools https://www.linuxmi.com/easy-to-use-linux-tools.html#respond Sat, 01 Feb 2025 01:00:33 +0000 https://www.linuxmi.com/?p=26144 如果你和我一样,喜欢用最快、最简便的方式来完成任务,那么你一定要了解一些更高效的 Linux 工具。 …

The post 默认命令太落后?试试这些更快更好用的 Linux 工具 first appeared on Linux迷.

]]>
如果你和我一样,喜欢用最快、最简便的方式来完成任务,那么你一定要了解一些更高效的 Linux 工具。实际上,有些命令不仅比你平时用的那些更方便,而且功能也更强大,能大大提升工作效率。今天,我就想和大家分享几个我自己常用的工具,它们不仅能帮你更轻松地处理任务,还能让你体验到更流畅的操作。如果你还没尝试过,今天就是个好机会!

1. bat:带语法高亮的 cat

cat 命令用来在终端查看文件内容,而 bat 是它的增强版,支持语法高亮、Git 集成和自动分页显示。此外,bat 还能更清晰地显示不可打印字符。

不同发行版的安装方法:

# Debian/Ubuntu
sudo apt install bat

# Fedora
sudo dnf install bat

# Arch Linux
sudo pacman -S bat

# openSUSE
sudo zypper install bat

安装后,使用方式和 cat 一样:

bat file1

注意:如果你在 Debian/Ubuntu 上安装了 bat,需要用 batcat 代替 bat,因为 bat 这个名称已被其他软件占用:

batcat file1

如果觉得 batcat 太长,可以用 alias 命令给它起个简短的别名:

alias bat='batcat'

此外,bat 还支持更换主题,比如:

bat --theme=Dracula file1

如果想永久修改主题,可以在 ~/.bashrc 里设置环境变量。

相关:Bat v0.25 发布  https://www.linuxmi.com/bat-v0-25-cat.html

2. ncdu:比 du 更友好的磁盘空间分析工具

du 命令可以查看磁盘使用情况,但输出信息不太直观。而 ncdu 提供了一个交互式界面,方便查看哪些文件占用了最多空间。

安装方式:

# Debian/Ubuntu
sudo apt install ncdu

# Fedora
sudo dnf install ncdu

# Arch Linux
sudo pacman -S ncdu

# openSUSE
sudo zypper install ncdu

使用方法:

# 分析当前目录
ncdu

# 分析特定目录,例如 /snap
ncdu /snap

# 分析整个硬盘
ncdu /

扫描完成后,它会以列表形式显示所有文件夹和文件的大小,并按大小排序。你可以用方向键导航,按 i 查看详细信息,按 d 删除文件,按 q 退出。

如果不想扫描外接存储设备,可以用:

ncdu -d /

3. eza:比 ls 更漂亮

ezals 命令的增强版,支持彩色显示、超链接、图标等,视觉效果更好。

安装方式:

# 需要安装 Rust 先
curl https://sh.rustup.rs -sSf | sh
source $HOME/.cargo/env

# 安装 eza
cargo install eza

使用方式:

# 类似 ls
eza
# 显示详细信息和图标(需要终端支持)
eza -lh --icons

4. fd:更友好的文件搜索

fd 并不是 find 的完全替代品,但它语法更直观,支持正则表达式,使用起来更顺手。

相关:fd – Linux 上非常快速查找文件的命令  https://www.linuxmi.com/fd-linux-command.html

安装方法:

# Ubuntu/Debian
sudo apt install fd-find

# Fedora
sudo dnf install fd-find

# Arch Linux
sudo pacman -S fd

# openSUSE
sudo zypper install fd

使用示例:

# 搜索当前目录
fdfind

# 搜索包含 "file" 关键字的文件
fdfind file

# 在特定目录下搜索
fdfind file /folder1

# 搜索特定扩展名的文件,例如 .sh 脚本
fdfind -e sh

5. ripgrep:比 grep 更快

ripgrep (rg) 是一个强大的文本搜索工具,比 grep 更快,特别适合搜索代码文件。

安装方法:

# Debian/Ubuntu
sudo apt-get install ripgrep

# Fedora
sudo dnf install ripgrep

# Arch Linux
sudo pacman -S ripgrep

# openSUSE
sudo zypper install ripgrep

使用示例:

# 在 linuxmi.py.md 里搜索 "linuxmi"
rg "linuxmi" linuxmi.py

# 在整个项目目录里搜索 "is"
rg "linuxmi" linuxmi_project

# 仅在 Python 文件中搜索
rg "Python" linuxmi_project --type py

默认情况下,ripgrep 不会搜索隐藏文件和目录。

相关:Linux 专业开发者必看:ripgrep 完美替代 grep  https://www.linuxmi.com/ripgrep.html

6. zoxide:比 cd 更聪明

cd 是最基础的 Linux 命令之一,而 zoxide 让导航变得更智能,它会记住你访问过的目录,方便快速跳转。

安装方法:

curl -sSfL https://raw.githubusercontent.com/ajeetdsouza/zoxide/main/install.sh | sh

然后初始化(Bash 用户):

echo 'eval "$(zoxide init bash)"' >> ~/.bashrc
source ~/.bashrc

使用示例:

# 进入深层目录
z demo1/demo2/demo3/demo4/

# 以后可以直接用 z 进入最近访问过的目录
z demo4

如果有多个同名目录,会列出可选项(需要安装 fzf)。

7. btop:比 top 更直观

btoptop 命令的替代品,支持鼠标操作,界面更美观,还有动画效果。

安装方法:

# 下载适合的二进制文件
tar -xjf btop-x86_64-linux-musl.tbz
cd btop/
./install.sh

运行:

btop

可以实时监控 CPU、内存、磁盘、网络等信息。

8. tldr:比 man 更简单

man 命令能显示详细的命令手册,但对新手来说不太友好。而 tldr 提供了更简洁的命令说明,包含实际用例。

安装方式(需要 Node.js):

npm install -g tldr

使用示例:

# 查看 rm 命令的简明用法
tldr rm

9. sd:比 sed 更简单

sd 提供了更直观的语法,比 sed 更容易上手,支持常见的正则表达式。

安装方式:

cargo install sd

示例:

替换文本

┌──(linuxmi㉿linuxmi)-[~/www.linuxmi.com]
└─$ sed -i 's/data char oid/linuxmi ubuntu debian/g' linuxmi.c
┌──(linuxmi㉿linuxmi)-[~/www.linuxmi.com]
└─$ sd 'data char oid' 'linuxmi ubuntu debian' linuxmi.c

sd 还支持更复杂的搜索和替换模式。

结语

虽然这些工具无法完全取代传统命令,但在很多实际应用中,它们无疑更加便捷和高效。通过使用这些工具,你可以大大提高工作效率,让日常的 Linux 操作变得更加流畅和轻松。如果你也想让自己的 Linux 使用体验更加顺畅,不妨试试看这些命令,说不定会带来意想不到的惊喜!

The post 默认命令太落后?试试这些更快更好用的 Linux 工具 first appeared on Linux迷.

]]>
https://www.linuxmi.com/easy-to-use-linux-tools.html/feed 0
Linux 专业开发者必看:ripgrep 完美替代 grep https://www.linuxmi.com/ripgrep.html?utm_source=rss&utm_medium=rss&utm_campaign=ripgrep https://www.linuxmi.com/ripgrep.html#respond Fri, 31 Jan 2025 01:22:53 +0000 https://www.linuxmi.com/?p=26150 ripgrep 是开源社区 RIIR(重写成 Rust)项目中的一个杰出成果,旨在取代传统的 Lin …

The post Linux 专业开发者必看:ripgrep 完美替代 grep first appeared on Linux迷.

]]>
ripgrep 是开源社区 RIIR(重写成 Rust)项目中的一个杰出成果,旨在取代传统的 Linux grep 命令,提供更高效、更快速的文件搜索体验。它在速度、功能和易用性上都有显著优势,是程序员和开发者在日常工作中不可或缺的工具。

ripgrep 的基本语法

与传统的 grep 命令相似,ripgrep 的基本语法也很简单:

rg <pattern> [files/directories]

使用时,你无需显式指定文件名,ripgrep 会自动搜索所有文件。这种“自动搜索”机制特别适合不确定文件位置时使用,省去了手动指定文件名的麻烦。虽然 grep 也可以在所有文件中搜索,但 ripgrep 无需额外操作,便能轻松完成任务。

ripgrep 是什么?

ripgrep 是一个高效的递归正则表达式匹配工具,设计目标是快速且准确地搜索文件内容。它的突出特点包括:

  • 自动考虑 .gitignore 文件,避免搜索无关文件,提高搜索效率
  • 支持在多种编码格式下工作,包括 UTF-8、SHIFT_JIS 等
  • 可在压缩文件(如 ZIP 格式)内进行搜索
  • 默认忽略隐藏文件,并通过 .gitignore 加速搜索

你可以将 ripgrep 看作是 grep 的升级版,专注于高效的内容搜索,避免了 grep 在处理原始字节流时的低效。

安装 ripgrep

虽然 grep 在大多数 Linux 系统中已经预装,但 ripgrep 并不会随系统默认安装。不过,ripgrep 在主流 Linux 发行版中都可以通过包管理器轻松安装。以下是常见发行版的安装命令:

  • Arch Linux:
    pacman -S ripgrep
  • Gentoo:
    emerge sys-apps/ripgrep
  • Fedora / Red Hat:
    sudo dnf install ripgrep
  • openSUSE (15.1 及以后版本):
    sudo zypper install ripgrep
  • Debian Buster 及以上版本:
    sudo apt install ripgrep

使用 ripgrep

如果你已经习惯了 grep 命令,使用 ripgrep 会非常简单。你只需提供一个搜索字符串和文件名,ripgrep 会在指定文件中搜索并显示匹配的文本和行号。

例如,搜索 linuxi.py 文件中的 linuxmi 关键字:

┌──(linuxmi㉿linuxmi)-[~/www.linuxmi.com]
└─$ rg linuxmi linuxmi.py
2:# Linux迷 www.linuxmi.com
4:~'echo Hello world!Linux迷 www.linuxmi.com

ripgrep 会展示匹配的行号和内容。

你还可以指定多个文件进行搜索,ripgrep 会列出匹配的文件及相关内容。

┌──(linuxmi㉿linuxmi)-[~/www.linuxmi.com]
└─$ rg linuxmi linuxmi.com.sh linuxmi.py
linuxmi.com.sh
2:# Linux迷 www.linuxmi.com

linuxmi.py
2:# Linux迷 www.linuxmi.com
4:~'echo Hello world!Linux迷 www.linuxmi.com'

上下文搜索

在搜索代码时,了解匹配行的上下文信息往往会更有帮助。使用 -C--context 选项,你可以显示匹配行前后的内容。

┌──(linuxmi㉿linuxmi)-[~/www.linuxmi.com]
└─$ rg -C 2 linuxmi linuxmi.py
1-#! /usr/bin/env zxpy
2:# Linux迷 www.linuxmi.com
3-
4:~'echo Hello world!Linux迷 www.linuxmi.com'
5-
6-file_count = ~'ls -1 | wc -l'

例如,使用 -A 显示匹配行后的内容.

┌──(linuxmi㉿linuxmi)-[~/www.linuxmi.com]
└─$ rg -A 2 done linuxmi.c
16:  printf("Thread %s done!\n", name);
17-  return NULL;
18-}

-B 显示匹配行前的内容。

┌──(linuxmi㉿linuxmi)-[~/www.linuxmi.com]
└─$ rg -B 2 done linuxmi.c
14-  }
15- 
16:  printf("Thread %s done!\n", name);

列号选项

如果你是 vim 用户,--column 选项会打印匹配文本所在行的列号。

┌──(linuxmi㉿linuxmi)-[~/www.linuxmi.com]
└─$ rg --column done linuxmi.c
16:25:  printf("Thread %s done!\n", name);

另一个与列号相关的选项是 -M--max-columns,它接受一个数字值,表示最大列数。如果某一行的列数超过该值,ripgrep 会提示该行被省略。

┌──(linuxmi㉿linuxmi)-[~/www.linuxmi.com]
└─$ rg --max-columns 20 done linuxmi.c
16:[Omitted long line with 1 matches]

其他有用选项

除了常见的功能外,ripgrep 还提供了多种有用的选项:

  • 使用 -s--case-sensitive 进行区分大小写的搜索
  • 使用 -i--ignore-case 进行不区分大小写的搜索
  • 使用 -j--threads 选项,可以在多个线程上并行执行搜索,适合大型代码库
  • 使用 -v--invert-match 排除特定模式
  • 如果你想搜索压缩文件中的文本,可以使用 -z--search-zip 选项,常与 -a 一起使用,把二进制文件当做文本文件处理

总结

ripgrep 是一个非常强大的工具,特别适合开发者在类 Unix 环境下使用。它相较于传统的 grep 命令,提供了更快速、更高效的文件搜索体验,特别是在处理大量文件时。它不仅能自动忽略无关文件,还能进行压缩文件搜索,支持多种编码格式,简化了开发者的工作流程。尽管 ripgrep 并非 grep 的替代品,但它的功能和速度使其成为了更现代的选择,尤其适合那些需要频繁进行文件内容搜索的开发人员。如果你还没有尝试过 ripgrep,不妨给它一个机会,它会让你的工作更加高效。

The post Linux 专业开发者必看:ripgrep 完美替代 grep first appeared on Linux迷.

]]>
https://www.linuxmi.com/ripgrep.html/feed 0
如何从 Ubuntu 22.04 LTS 升级到 Ubuntu 24.04.1 LTS https://www.linuxmi.com/ubuntu-22-04-lts-upgrade-ubuntu-24-04-1.html?utm_source=rss&utm_medium=rss&utm_campaign=ubuntu-22-04-lts-upgrade-ubuntu-24-04-1 https://www.linuxmi.com/ubuntu-22-04-lts-upgrade-ubuntu-24-04-1.html#respond Mon, 16 Sep 2024 12:52:24 +0000 https://www.linuxmi.com/?p=25330 近日,Ubuntu 24.04.5 LTS 正式发布,这是 Ubuntu 24.04 LTS (No …

The post 如何从 Ubuntu 22.04 LTS 升级到 Ubuntu 24.04.1 LTS first appeared on Linux迷.

]]>
近日,Ubuntu 24.04.5 LTS 正式发布,这是 Ubuntu 24.04 LTS (Noble Numbat) 系列的最后一个小版本更新。而 Canonical 早已为 Ubuntu 22.04 LTS (Jammy Jellyfish) 用户开放了升级通道。

通常情况下,Canonical 会在新版本发布约六个月后开放从旧版 LTS 到新版 LTS 的升级路径,以确保安全。也就是说,现在你可以从 Ubuntu 22.04 LTS 升级到 Ubuntu 24.04.1 LTS。

虽然 24.04.1 LTS 本身并没有太多新内容,主要是整合了此前发布的更新和安全补丁,适合不想安装后再下载大量更新的用户。虽然内核版本没变,但关键是升级路径终于为 22.04 LTS 用户开放了!

如何通过图形界面升级?

当 Ubuntu 24.04 LTS 可以升级时,你应该会收到系统通知。如果没有通知,打开“软件更新器”,你会看到“Ubuntu 24.04.1 LTS 现在可用(当前版本 22.04)”的提示。点击“升级”按钮就可以开始。

接着,会弹出一个窗口,提供更多关于 Ubuntu 24.04 LTS 的信息。以前会显示详情,可以阅读完整说明,现在不知道怎么没有了,若只想升级,直接点击“升级”按钮即可。

然后按屏幕提示进行操作。系统会列出需要升级、安装或删除的包,并建议你先关闭所有其他程序以免数据丢失。

升级过程中,锁屏功能会被禁用。

升级时间取决于你的网络和电脑性能。过程中你会看到提示,Mozilla Thunderbird 邮件客户端将改为 Snap 包格式。

完成后,系统会建议你移除过时软件包,最后需要重启电脑完成升级。

如何通过命令行升级?

首先,确保你备份了重要文件,以防万一。然后,确认当前系统是最新的,可以在终端运行以下命令来完成:

sudo apt update && sudo apt full-upgrade

重启系统后,如果没有看到升级通知,打开终端,运行以下命令启动升级:

do-release-upgrade

按照提示按下 y 继续,等待升级所需的包下载并安装,整个过程大概也会持续一个小时或更长时间。

同样,系统会提示 Thunderbird 将转换为 Snap 包格式。升级完成后,系统会通知你移除过时软件,并要求重启电脑。

总结

无论是通过图形界面还是命令行,你都可以轻松地将 Ubuntu 22.04 LTS 升级到最新的 Ubuntu 24.04 LTS (Noble Numbat),享受新版带来的改进和功能!

The post 如何从 Ubuntu 22.04 LTS 升级到 Ubuntu 24.04.1 LTS first appeared on Linux迷.

]]>
https://www.linuxmi.com/ubuntu-22-04-lts-upgrade-ubuntu-24-04-1.html/feed 0
Linux fmt 命令:轻松搞定文本格式化 https://www.linuxmi.com/linux-fmt.html?utm_source=rss&utm_medium=rss&utm_campaign=linux-fmt https://www.linuxmi.com/linux-fmt.html#respond Tue, 20 Aug 2024 00:20:10 +0000 https://www.linuxmi.com/?p=25188 fmt 命令是一个方便的文本格式化工具,它可以让你的文本看起来更加整齐有序。通过调整行宽和段落布局, …

The post Linux fmt 命令:轻松搞定文本格式化 first appeared on Linux迷.

]]>
fmt 命令是一个方便的文本格式化工具,它可以让你的文本看起来更加整齐有序。通过调整行宽和段落布局,fmt 能使文本内容更易于阅读。它既可以处理文件内容,也可以从标准输入中获取数据,进行自动调整。默认情况下,fmt 会将每行宽度设为 75 个字符,但你也可以通过命令选项自定义这个宽度。对于想要快速统一文本排版的人来说,fmt 是个非常实用的小工具。

在本教程中,我们将带你了解 fmt 的基本用法及其主要功能。文中的命令和示例已在 Ubuntu 24.04 上进行了测试。

基本用法

fmt 是 Linux 命令行用户常用的简单工具,其基本语法如下:

fmt [-WIDTH] [OPTION]... [FILE]...

fmt 的主要功能是重新格式化文件中的每个段落,并将结果输出到标准输出。你可以通过 -WIDTH 选项来调整行宽。

接下来,我们通过几个常见的 Q&A 示例,帮助你更好地理解 fmt 的用法。

Q1: 如何使用 fmt 格式化文件内容为一行?

默认情况下,不加选项的 fmt 命令会将文件内容格式化为一行输出。只需将文件名作为参数传递即可。

fmt [文件名]

此时,fmt 会将文件中的多行内容整合为一行输出,但原始文件并不会被修改。

Q2: 如何更改最大行宽?

fmt 默认将每行的最大宽度设置为 75 个字符。如果你想调整这个值,可以使用 -w 选项并指定一个数字。

fmt -w [宽度] [文件名]

例如,将行宽缩小为 20 个字符:

fmt -w 20 [文件名]

Q3: 如何突出显示第一行?

你可以通过使用 -t 选项来让第一行的缩进与其他行不同,以实现突出显示的效果。

fmt -t [文件名]

此选项会让第一行的格式更加显眼。

Q4: 如何让 fmt 拆分长行?

fmt 也可以拆分过长的行内容,使用 -s 选项即可实现这一功能。

fmt -s [文件名]

这有助于将内容更好地分段和排版。

Q5: 如何设置单词和句子的间距?

使用 -u 选项,fmt 会确保单词之间有一个空格,而句子之间有两个空格。这在排版要求较严格时非常有用。

fmt -u [文件名]

我们测试发现,fmt 默认会启用这个选项。

总结

虽然 fmt 的功能相对简单,但它仍然是处理文本格式化时的得力工具。无论是为了调整行宽,还是为了确保排版一致,fmt 都能轻松胜任。即使你平时可能不常使用它,但在需要快速调整文本格式时,它绝对能派上用场。如果你想深入了解 fmt 的更多选项和功能,可以随时查阅其手册页

The post Linux fmt 命令:轻松搞定文本格式化 first appeared on Linux迷.

]]>
https://www.linuxmi.com/linux-fmt.html/feed 0
掌握 dd 命令:Linux 系统数据管理的终极工具 https://www.linuxmi.com/linux-dd-command.html?utm_source=rss&utm_medium=rss&utm_campaign=linux-dd-command https://www.linuxmi.com/linux-dd-command.html#respond Wed, 14 Aug 2024 02:41:50 +0000 https://www.linuxmi.com/?p=25139 dd命令是一款功能强大的工具,用于在Linux系统上进行底层数据复制和转换。dd代表“数据复制器”( …

The post 掌握 dd 命令:Linux 系统数据管理的终极工具 first appeared on Linux迷.

]]>
dd命令是一款功能强大的工具,用于在Linux系统上进行底层数据复制和转换。dd代表“数据复制器”(data duplicator),常被用来创建文件、分区或整个磁盘的精确副本,因此在创建备份、克隆硬盘或将磁盘映像写入物理介质时非常有用。这个命令可以在文件或设备之间复制和转换数据,并提供了控制块大小、跳过或查找数据,甚至应用压缩或字节交换等过滤器的选项。由于它可以在如此基础的层面上工作,使用dd时必须非常谨慎,因为错误的使用可能导致数据丢失或损坏。

在本教程中,我们将通过一些易于理解的例子来讨论该工具的工作原理。但在此之前,值得一提的是,这里提到的所有示例都在Ubuntu 24.04上进行了测试。

Linux dd命令简介

简而言之,dd命令允许你复制和转换文件。这个工具提供了一些操作数,你可以使用它们来指定你想要的格式。以下是man手册中描述的命令通用语法:

dd [参数]... 
dd [选项]

使用dd命令从ISO文件创建可启动的USB驱动器

在Linux中,dd命令的一个常见用途是从ISO文件创建可启动的USB驱动器。这通常在准备安装操作系统的USB盘时使用。命令如下所示:

sudo dd if=/path/to/your.iso of=/dev/sdX bs=4M status=progress && sync

在这个例子中:

  • if=/path/to/your.iso 指定了输入文件,即ISO映像。
  • of=/dev/sdX 指定了输出文件,即USB驱动器(将X替换为你USB设备的对应字母)。
  • bs=4M 设置块大小为4兆字节,优化了复制过程。
  • status=progress 提供了复制过程的实时更新。
  • sync 确保在完成之前所有数据都写入到USB驱动器。

这个命令将创建一个可启动的USB驱动器,可以用于安装ISO文件中包含的操作系统。

常见问题解答

以下是一些问答式的例子,可以帮助你更好地了解dd命令的使用方法。

Q1. 如何使用dd命令更改输入文本的大小写?

假设你有一些用小写字母写的文本行,现在需要快速将它们转换为大写字母。你可以使用conv命令行选项(其值为ucase)来实现。

例如:

以下是命令及输入文本的截图。按下组合键Ctrl+d后,dd命令识别到输入结束,随后生成以下输出:

如你所见,输入的文本已从小写转换为大写。最后三行只是一些操作相关的统计信息。

注意:同样地,你也可以使用lcase选项将大写字母转换为小写。

Q2. 如何从文件读取并写入文件?

在上面的例子中,我们通过标准输入(stdin)输入了文本。不过,你也可以使用输入和输出文件。要指定输入和输出文件的名称,可以使用ifof命令行选项。

例如,如果你想将file1中的文本大小写转换后写入file2,可以这样做:

dd if=file1 of=file2 conv=ucase

Q3. 如何在读取输入时跳过文本?

如果你希望在读取输入文本时跳过一些初始字节,可以使用skip选项,该选项需要一个数值。如果这个值为’N’,dd会跳过输入开头的N个ibs大小的块。这就引出了ibs选项,它用来指定工具每次读取的字节数(默认是512)。

假设你想跳过输入文件的前6个字节,你需要先将ibs设为6,然后将skip值设为1,这样工具在读取输入文件时就会跳过1个6字节的块。

所以你可以看到,读取file1时”hello!”被跳过了——这就是它没有出现在file2中的原因。

Q4. 如何在输出中交换每对输入字节?

如果你有这样的需求,可以使用dd命令交换每对输入字节。你可以通过为conv选项设置swab值来实现。以下截图可以更清楚地说明这一点:

Q5. 如何让dd命令只在输出文件不存在时才工作?

如果你希望dd命令在输出文件已经存在时不进行任何操作,可以使用conv选项的excl值来实现这一条件。

下面的截图展示了这一用法:

Q6. 如何确保在追加模式下更新输出文件?

默认情况下,dd会覆盖已有的输出文件。如果你希望dd命令将文本追加到输出文件的末尾,可以使用oflag选项中的append值和conv选项中的notrunc值。

例如:

dd if=file1 of=file3 oflag=append conv=notrunc

以下是该命令的实际操作示例:

Q7. 如何让dd命令不创建输出文件?

如果你希望dd命令在输出文件不存在时不创建该文件,可以使用conv选项的nocreat值。

例如:

Q8. 如何控制stderr上的信息级别?

如果你想限制dd命令在stderr上输出的信息量,可以使用status选项。例如,如果你只想显示错误信息,可以将该选项的值设置为none

dd if=file1 of=file3 status=none

其他可用值包括noxfer和progress。以下是man手册对status选项的说明:

status=LEVEL 打印到stderr的信息级别;
‘none’ 仅显示错误信息,’noxfer’ 抑制最终传输统计信息,’progress’ 显示定期传输统计信息。

结论

本教程中讨论的这些示例只是dd命令功能的一部分。实际上,你可以使用dd命令创建虚拟文件系统以及对硬盘或系统分区进行备份。想要了解更多关于dd命令的信息,可以查阅它的man手册

The post 掌握 dd 命令:Linux 系统数据管理的终极工具 first appeared on Linux迷.

]]>
https://www.linuxmi.com/linux-dd-command.html/feed 0
Amber:用高级语言编写 Bash 脚本的新革命 https://www.linuxmi.com/amber-bash.html?utm_source=rss&utm_medium=rss&utm_campaign=amber-bash https://www.linuxmi.com/amber-bash.html#respond Thu, 20 Jun 2024 00:52:23 +0000 https://www.linuxmi.com/?p=24858 Bash 脚本需要改进吗? 也许不需要,但 Amber 认为至少可以用高级编程语言来编写 Bash …

The post Amber:用高级语言编写 Bash 脚本的新革命 first appeared on Linux迷.

]]>
Bash 脚本需要改进吗?

也许不需要,但 Amber 认为至少可以用高级编程语言来编写 Bash 脚本。

高级编程语言更接近人类语言,用更容易理解和编写的语言编写代码。

Amber:一种编译成 Bash 的编程语言

Amber 让你可以更轻松地用高级编程语言来编写 Bash 脚本。怎么做到的呢?让我们来看看。

Amber 是一个可以编译成 Bash 脚本的编程语言。

🚧 请注意:这个项目目前处于开发初期,只有一个 alpha 版本。如果你愿意可以尝试,但不要在生产环境中使用它。

Amber 基于 ECMA 脚本语法设计。ECMA 旨在标准化通用脚本语言的语法。通过这种方式,你可以在遵循 ECMA 语法的各种脚本语言中使用熟悉的语法。

使用 Amber

你可以用 Amber 编写脚本,然后编译成 Bash 脚本,或者直接运行 Amber 脚本:

linuxmi@linuxmi ~/www.linuxmi.com
 % amber linuxmi.ab 

如果你愿意,你也可以将 Amber 脚本编译成一个 Bash 脚本,然后在任何需要的地方使用这个 Bash 脚本。例如,我编写了一个 Amber 脚本示例,并在系统上运行,结果与 Bash 脚本相同。

// 定义变量
let name = "linuxmi"
let age = 30

// 显示问候语
echo "你好, 我是 {name}"

// 执行条件检查
if age < 18 {
    echo "我还不是成年人" // 我还不是成年人
} else {
    echo "我是成年人" // 我是成年人
}

// 遍历数组
let fruits = ["苹果", "香蕉", "樱桃", ""]
echo "我最喜欢的水果是:" // 我最喜欢的水果是:
loop fruit in fruits {
    echo fruit // 输出每个水果
}

然后将其编译成 Bash 脚本:

linuxmi@linuxmi ~/www.linuxmi.com
 % amber linuxmi.ab linuxmi.sh
linuxmi@linuxmi ~/www.linuxmi.com
 % ./linuxmi.sh

生成的 linuxmi.sh 文件包含:

#!/usr/bin/env bash
# Written in [Amber](https://amber-lang.com/)

__0_name="linuxmi"
__1_age=30
echo "你好, 我是 ${__0_name}"
if [ $(echo ${__1_age} '<' 18 | bc -l | sed '/\./ s/\.\{0,1\}0\{1,\}$//') != 0 ]; then
    echo "我还不是成年人"
else
    echo "我是成年人"
fi
__AMBER_ARRAY_0=("苹果" "香蕉" "樱桃" "枣");
__2_fruits=("${__AMBER_ARRAY_0[@]}")
echo "我最喜欢的水果是:"
for fruit in "${__2_fruits[@]}"
do
    echo "${fruit}"
done

Amber 旨在提供一个类型安全和运行时安全的编程语言,能够在编译过程中处理错误和疏漏。它抛出的警告比处理 Bash 脚本语法错误时的盲猜游戏更容易理解。比如,“syntax error: unexpected end of file”并不足以让你理解 Bash 脚本中的语法错误,对吧?

这个功能本身就可以为那些刚接触 Bash 脚本的新手省去很多头痛的问题。

Amber 是一个开源项目,采用 GPL 3.0 许可证。

在 Linux 上安装 Amber

要在 Linux 上安装 Amber 语言,你可以使用这个 Bash 脚本(这有点讽刺)。你需要有 sudo 权限。

linuxmi@linuxmi ~/www.linuxmi.com
 % curl -s "https://raw.githubusercontent.com/Ph0enixKM/AmberNative/master/setup/install.sh" | bash

Installing Amber... 🚀
[sudo] linuxmi 的密码: 
Amber has been installed successfully. 🎉
> Now you can use amber by typing `amber` in your terminal.

输出中的那些表情符号表明 Amber 的目标用户(或开发者)是 Z 世代的 Linux 用户。典型的系统管理员会使用带有颜色输出的 echo 命令 😉

Amber 有相当不错的文档,可以帮助你入门这个脚本语言。

The post Amber:用高级语言编写 Bash 脚本的新革命 first appeared on Linux迷.

]]>
https://www.linuxmi.com/amber-bash.html/feed 0
Ubuntu 上镜像 iPhone 屏幕,UxPlay 带来全新体验 https://www.linuxmi.com/uxplay-ubuntu-iphone.html?utm_source=rss&utm_medium=rss&utm_campaign=uxplay-ubuntu-iphone https://www.linuxmi.com/uxplay-ubuntu-iphone.html#respond Wed, 13 Mar 2024 11:51:04 +0000 https://www.linuxmi.com/?p=24224 想不想在 Ubuntu 桌面上镜像你的 iPhone 屏幕?现在在 Ubuntu 软件源中有一个免费 …

The post Ubuntu 上镜像 iPhone 屏幕,UxPlay 带来全新体验 first appeared on Linux迷.

]]>
想不想在 Ubuntu 桌面上镜像你的 iPhone 屏幕?现在在 Ubuntu 软件源中有一个免费的开源应用程序可以帮你实现这个目标。

如果你想在 Ubuntu 上镜像你的 iPhone 或 iPad,UxPlay 是一种简单的方法 — 而且它是免费的、开源软件。

这个应用叫做 UxPlay,安装后,你可以快速将你的 iPhone(或 iPad)屏幕与 Ubuntu 共享,还可以带有音频,而且你不需要在你的苹果设备上安装任何应用程序来使用它。

你苹果设备屏幕上显示的任何内容都会实时流到你的桌面上,显示在一个浮动窗口中,你可以自由地在桌面上移动或全屏显示。

它是如何工作的?

UxPlay 使用 AirPlay,这是苹果内置的屏幕共享技术 — — 无需越狱或有线连接,只需要一个支持 AirPlay 的设备(即 iPhone 4 或更高版本)和一个正常的网络连接。

现在,苹果在 2017 年重新设计了 AirPlay(AirPlay 2),但仍继续包含这个应用程序使用的“旧协议”,以在 Linux 上启用屏幕镜像。苹果可能会在将来的更新中删除旧的协议,但截至 iOS 17.x,它仍然存在并且可以正常使用。

如果你想将你的 iPhone 或 iPad 镜像到 Ubuntu 上,使用 UxPlay 是实现这一目标的简单方式 — — 而且它完全免费、开源,非常棒!

UxPlay 只能镜像你的屏幕(以及它的音频),所以你不能与所见之物进行交互。但镜像有许多用途:它可以帮助你在工作中进行协作、共享演示文稿、演示代码、艺术作品或其他内容,可以在流媒体或视频通话中进行观看/听取设备上的内容,等等。

由于 UxPlay 使用了硬件加速的 H.264 解码器(在可用时,如果没有,它会退回到软件解码)通过 GStreamer 插件,性能很好,视频流畅,几乎没有停顿、卡顿和丢帧 。

你可以将屏幕共享全屏显示

除了 AirPlay 镜像模式(用于投射屏幕及其有损压缩的 AAC 音频)之外,UxPlay 还支持 AirPlay 音频模式,用于苹果无损 (ALAC) 音频(意味着只有音频,没有视频),可以播放设备上的任何内容。

所以,如果你只想听 iPad 或 iPhone 上的某些内容,并通过桌面或笔记本电脑的扬声器听到它,使用该功能可以获得最佳的音频质量。

要与 Ubuntu 共享你的 iPhone/iPad 屏幕:

安装 UxPlay。在 Ubuntu 软件中心或应用中心中搜索它,或打开一个终端窗口,运行 sudo apt install uxplay 来安装它。

安装所需的 GStreamer 插件。没有这些插件,应用程序将无法工作。运行 sudo apt install gstreamer1.0-plugins-bad gstreamer1.0-libav 来安装它们。

通过在终端中运行 uxplay 来启动 UxPlay。

在你的 iPhone/iPad 上打开控制中心(从屏幕右上角向下滑动),点击屏幕镜像图标(重叠的方块),从列表中选择“UxPlay”。
是的,你现在可以在 UxPlay 中立即查看你的智能手机或平板电脑屏幕上显示的内容了。

当你完成时,通过你的 iPhone 断开连接,并关闭桌面上的 UxPlay 窗口(如果它没有自动关闭的话)。然后,在终端中按下键盘上的 ctrl + c 键来结束 UxPlay 进程。

UxPlay 不能做的事情

使用这个应用程序无法镜像 DRM 视频

有时会将 UxPlay 称为“iPhone 的 Scrpy”或“免费的 Vysor 替代品”,但它不是。与这两个应用程序不同,UxPlay 只是一个镜像工具,不允许你使用鼠标和键盘从计算机上与设备进行交互。

还有其他限制。你不能通过 UxPlay“看到”受 DRM 加密的苹果视频内容(例如 Apple TV 应用程序、亚马逊 Prime 和其他应用程序中的内容)。

最后,无法进行非镜像 AirPlay2 视频流传输。这意味着你不能打开一个应用程序,点击原生的“投射”图标,选择 UxPlay,并将视频流绕过你的设备,直接重定向到应用程序。

UxPlay 还可以做什么

想要进一步配置吗?

UxPlay 的 Github 页面提供了许多可用选项的详细信息,包括旋转屏幕、指定帧率(有助于提高性能)、禁用视频以进行仅音频流、选择特定的解码器等等。

如果你想“硬编码”选项而不必手动传递它们,你可以编辑工具的配置文件,否则只需根据需要运行它们即可。

一些有用的选项:

  • 设置分辨率:使用 -s 标志加上分辨率,例如,uxplay -s 1920×1080
  • 旋转屏幕:在连接之前传递 -r 加上 L 或 R
  • 进入全屏模式:在键盘上按 F11 键(再按一次退出)或传递 -fs

有趣的是,UxPlay 能够在树莓派 4B(以及更早版本)上使用 Video4Linux2 进行硬件加速解码,但这可能会因发行版而异。在树莓派 4 上的 Ubuntu 中,这应该会自动工作。

总结

这就是你可以将 iPhone 或 iPad 屏幕分享到运行 Ubuntu 的任何台式电脑或笔记本电脑的方法。

还有其他可用的选项,许多功能更强大,但大多数是付费软件,只能在 Windows 或 macOS 上使用,并涉及从 App Store 安装应用程序。

但是,对于一个简单的自由开源软件方法来说,这是无与伦比的。

Ubuntu 上镜像 iPhone 屏幕视频演示请用微信扫描关注以下视频号:

The post Ubuntu 上镜像 iPhone 屏幕,UxPlay 带来全新体验 first appeared on Linux迷.

]]>
https://www.linuxmi.com/uxplay-ubuntu-iphone.html/feed 0
Ubuntu 上安装 FreeNginx 的终极指南 https://www.linuxmi.com/ubuntu-freenginx.html?utm_source=rss&utm_medium=rss&utm_campaign=ubuntu-freenginx https://www.linuxmi.com/ubuntu-freenginx.html#respond Wed, 21 Feb 2024 11:59:49 +0000 https://www.linuxmi.com/?p=24080 FreeNginx 在 NGINX 核心开发者因内部冲突和政策变化而辞职后引起了很多关注,他启动了自 …

The post Ubuntu 上安装 FreeNginx 的终极指南 first appeared on Linux迷.

]]>
FreeNginx 在 NGINX 核心开发者因内部冲突和政策变化而辞职后引起了很多关注,他启动了自己的 FreeNginx 项目,一个重视社区贡献胜过公司利益的自由开源版本。

目前,这个项目还很新,你几乎找不到在使用上的任何差异,但未来有望迅速改进、修复问题,并引入令人兴奋的新功能。

如果你想尝试一下,那么请阅读本文的全部内容,了解如何使用实际示例从源代码在Ubuntu上安装FreeNginx。

相关:Nginx 新篇章:开发者拒绝妥协,启动 FreeNginx https://www.linuxmi.com/nginx-to-freenginx.html

如何在Ubuntu上安装FreeNginx

在撰写本文时,安装FreeNginx的唯一可用选项是通过Linux源代码;对于Windows用户,可以在下载部分找到压缩文件。

在本文中,我们将专注于在Ubuntu上安装FreeNginx,所以请逐一按照下面提到的每个步骤进行操作。

1、打开终端,并执行以下命令以更新系统仓库信息:

linuxmi@linuxmi ~/www.linuxmi.com/freenginx-1.25.4
 % sudo apt update

2、安装所需的软件包、依赖项和库,以及用于源代码编译的开发工具。

linuxmi@linuxmi ~/www.linuxmi.com
 % sudo apt install -y wget build-essential libpcre3 libpcre3-dev zlib1g zlib1g-dev libssl-dev libgd-dev libxml2 libxml2-dev uuid-dev

3、停止并移除系统中现有的NGINX,以避免以后可能出现的潜在冲突问题。

打开终端,并执行以下命令以更新系统仓库信息:

linuxmi@linuxmi ~/www.linuxmi.com/freenginx-1.25.4
 % sudo apt --purge remove nginx-*
linuxmi@linuxmi ~/www.linuxmi.com/freenginx-1.25.4
 % sudo apt autoremove

4、现在,访问官方的FreeNginx下载页面,并下载您希望安装的FreeNginx版本(主线版本、稳定版本或遗留版本)的源代码压缩包文件。

作为另一种选择,您还可以通过终端使用wget命令进行下载。

linuxmi@linuxmi ~/www.linuxmi.com
 % wget https://freenginx.org/download/freenginx-1.25.4.tar.gz

5、解压下载的压缩包文件,然后将其移动到提取的目录中。

linuxmi@linuxmi ~/www.linuxmi.com
 % tar -zxvf freenginx-*.tar.gz && cd freenginx*/

6、使用配置标志为 NGINX 配置文件、访问日志和错误日志路径以及一些 NGINX 模块配置自定义路径。

linuxmi@linuxmi ~/www.linuxmi.com/freenginx-1.25.4
 % ./configure --prefix=/var/www/html --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf --http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log --with-pcre --lock-path=/var/lock/nginx.lock --pid-path=/var/run/nginx.pid --with-http_ssl_module --with-http_image_filter_module=dynamic --modules-path=/etc/nginx/modules --with-http_v2_module --with-stream=dynamic --with-http_addition_module --with-http_mp4_module

7、配置完成后,继续使用以下两个命令编译 NGINX 源代码并安装它:

linuxmi@linuxmi ~/www.linuxmi.com
 % make

 

linuxmi@linuxmi ~/www.linuxmi.com
 % sudo make install

8、FreeNginx 现已成功安装;您可以检查其版本和配置选项。

linuxmi@linuxmi ~/www.linuxmi.com/freenginx-1.25.4
 % nginx -v
nginx version: freenginx/1.25.4
linuxmi@linuxmi ~/www.linuxmi.com/freenginx-1.25.4
 % nginx -V

9、现在,如果 Nginx 已经在运行,请停止它,然后在 /lib/systemd/system 路径下创建一个 Freenginx systemd 单元文件,用于管理 Freenginx。

linuxmi@linuxmi ~/www.linuxmi.com/freenginx-1.25.4
 % nginx -s stop
linuxmi@linuxmi ~/www.linuxmi.com/freenginx-1.25.4
 % sudo vi /lib/systemd/system/nginx.service

然后粘贴此脚本:

[Unit]
Description=The Freenginx HTTP and reverse proxy server
After=syslog.target network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target
        
[Service]
Type=forking
PIDFile=/var/run/nginx.pid
ExecStartPre=/usr/sbin/nginx -t
ExecStart=/usr/sbin/nginx
ExecReload=/usr/sbin/nginx -s reload
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
        
[Install]
WantedBy=multi-user.target

现在,按下 Esc 键退出编辑模式,然后输入 :,接着写入并执行 wq! 命令来保存文件。

完成!现在您可以使用 systemctl 命令来管理 FreeNginx,以下是一些可用于管理 FreeNginx 的 systemctl 命令示例:

命令 说明
sudo systemctl status nginx 检查 FreeNginx 的状态。
sudo systemctl enable nginx 在启动时自动启动 FreeNginx。
sudo systemctl start nginx 启动 FreeNginx 服务器。
sudo systemctl stop nginx 停止 FreeNginx 服务器。
sudo systemctl disable nginx 在启动时禁用 FreeNginx 的自动启动。

The post Ubuntu 上安装 FreeNginx 的终极指南 first appeared on Linux迷.

]]>
https://www.linuxmi.com/ubuntu-freenginx.html/feed 0
Linux命令教程:如何使用 LSOF 实时监控端口 https://www.linuxmi.com/linux-lsof-command.html?utm_source=rss&utm_medium=rss&utm_campaign=linux-lsof-command https://www.linuxmi.com/linux-lsof-command.html#respond Mon, 22 Jan 2024 00:25:44 +0000 https://www.linuxmi.com/?p=23881 LSOF(List Open Files)是一种用于 Linux/Unix 类操作系统的命令行监控工 …

The post Linux命令教程:如何使用 LSOF 实时监控端口 first appeared on Linux迷.

]]>
LSOF(List Open Files)是一种用于 Linux/Unix 类操作系统的命令行监控工具。LSOF 命令提供有关活动文件和当前正在访问它们的进程的信息。

LSOF 命令行工具对系统管理员和开发人员非常有利,允许他们:

  1. 确定当前正在使用特定文件或端口的进程,这在发生端口冲突时尤其重要
  2. 检测已删除但仍被进程打开的文件,这可能会导致不必要的空间消耗;LSOF 命令用于识别和解决此类情况
  3. 帮助有效地排除错误,例如“端口已在使用中”
  4. 跟踪网络活动并打开网络连接以进行监控
  5. 调查文件访问模式,有助于识别潜在的安全漏洞

在本教程中,您将学习如何使用 LSOF 命令来监控实时端口。

LSOF 命令的基本语法

LSOF命令的语法如下:

$ lsof [选项] [名称]

选项是与 LSOF 命令一起使用的标志。名称代表文件名、PID(进程 ID)、用户名或网络文件(IPv4、IPv6)。根据提供的选项,LSOF 命令显示与这些名称对应的打开文件的列表。

使用 LSOF 命令实时监控端口

LSOF 默认包含在许多 Linux 系统中。如果尚未安装,您必须手动下载并安装可用的软件包之一。要检查系统上的 LSOF 安装,请使用以下命令显示已安装的版本:

linuxmi@linuxmi ~/www.linuxmi.com> lsof -v

需要注意的是,要以适当的权限使用 LSOF 命令,有关进程和网络连接的一些信息可能需要提升的超级用户权限,并且您可能需要使用“sudo”以管理权限运行该命令。

列出网络进程信息

当您使用“-i”选项运行 LSOF 命令时,它会显示有关具有网络连接的进程的信息,例如侦听套接字或已建立的连接。

linuxmi@linuxmi ~/www.linuxmi.com> lsof -i

上一个命令显示有关进程名称 (COMMAND)、进程 ID (PID)、用户 (USER)、文件描述符 (FD)、连接类型 (TYPE)、本地和远程地址以及连接状态的信息。您应该看到以下输出:

COMMAND    PID    USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
gnome-sof 4244 linuxmi   22u  IPv4 121041      0t0  TCP linuxmi:56008->151.101.109.91:https (CLOSE_WAIT)
gnome-sof 4244 linuxmi   54u  IPv4 105799      0t0  TCP linuxmi:47418->151.101.109.91:https (CLOSE_WAIT)
gnome-sof 4244 linuxmi   56u  IPv4 121563      0t0  TCP linuxmi:41626->151.101.109.91:https (CLOSE_WAIT)

列出 TCP 连接

您可以根据特定条件(例如特定类型的连接或端口)过滤输出。例如,您可以使用“lsof -i tcp”仅列出与 TCP 连接关联的进程。

linuxmi@linuxmi ~/www.linuxmi.com> lsof -i TCP:1-1024

上面这个命令过滤有关在 1 到 1024 的指定端口范围内打开 TCP 连接的进程的信息。这对于识别哪些进程正在使用与公共服务关联的已知端口非常有用。

实时监控特定端口

使用LSOF,您可以实时监控特定端口。例如,您想要监控端口 443 上与“HTTP”相关的进程,该进程每 3 秒更新一次。为此,请使用以下命令实时监控端口 80:

linuxmi@linuxmi ~/www.linuxmi.com> lsof -i:443 -r3

实时监控 SSHD 端口 22

要监视在端口 22 上运行的所有 SSHD 连接,请运行以下命令:

linuxmi@linuxmi ~/www.linuxmi.com> lsof -i:22 -r3

该命令每3秒持续监控并显示22端口网络连接的实时信息。这对于跟踪实时发生的更改(例如新的 SSH 连接或断开连接)特别有用。

实时监控端口范围

要实时监控指定端口范围 1 到 1024 内打开 TCP 连接的进程信息,可以使用以下命令:

linuxmi@linuxmi ~/www.linuxmi.com> lsof -i TCP:1-1024 -r3

实时监控所有端口

您可以使用 LSOF 命令实时监控所有网络连接。例如,您想要连续运行监控并每 5 秒显示一次有关网络连接的实时信息。

linuxmi@linuxmi ~/www.linuxmi.com> lsof -i -r5

以下输出包含每 5 秒后实时显示的有关进程及其关联网络套接字的详细信息:

同样,您也可以使用 LSOF 命令仅监视“已建立”的连接:

linuxmi@linuxmi ~/www.linuxmi.com> lsof -i -E -r10

结论

在本教程中,我们学习了如何使用 LSOF 命令实时监控端口。该命令还可以帮助系统管理员和其他 Linux 用户监视网络连接,包括所有活动或开放的端口。我们希望本指南能够帮助您了解如何使用具有不同选项的 LSOF 命令并实时监控不同的端口和进程。

The post Linux命令教程:如何使用 LSOF 实时监控端口 first appeared on Linux迷.

]]>
https://www.linuxmi.com/linux-lsof-command.html/feed 0