你从未用过的 10 条 Linux 命令?

本文介绍十个较少被提及的Linux命令,包括pgrep、pstree、bc等,它们在特定场景下能发挥重要作用,有助于提高工作效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Brock 老兄写了一篇文章《你从未用过的 10 条 Linux 命令(10 Linux commands you've never used)》,虽然标题有点过于绝对和主观,不过文章还是不错的。其实,无论你是否听说过或者使用过这些命令,都值得我们再来重温一遍。不是吗?

这 10 条 Linux 命令依次是:

  1. pgrep:比如,你可以使用 pgrep -u root 来代替 ps -ef | egrep '^root ' | awk '{print $2}',以便抓取属于 root 的 PID。
  2. pstree:我觉得这个命令很酷,它可以直接列出进程树,或者换句话说是按照树状结构来列出进程。
  3. bc:这个命令在我的系统中没有找到,可能需要安装。这是用来执行计算的一个命令,如使用它来开平方根。
  4. split:这是一个很有用的命令,它可以将一个大文件分割成几个小的部分。比如:split -b 2m largefile LF_ 会将 largefile 分割成带有 LF 文件名前缀且大小为 2 MB 的小文件。
  5. nl:能够显示行号的命令。在阅读脚本或代码时,这个命令应该非常有用。如:nl wireless.h | head
  6. mkfifo:作者说这是他最喜欢的命令。该命令使得其他命令能够通过一个命名的管道进行通信。嗯,听起来有点空洞。举例说明,先创建一个管道并写入内容: mkfifo ive-been-piped ls -al split/* | head > ive-been-piped
    然后就可以读取了:head ive-been-piped
  7. ldd:其作用是输出指定文件依赖的动态链接库。比如,通过 ldd /usr/java/jre1.5.0_11/bin/java 可以了解哪些线程库链接到了 java 依赖(动态链接)了哪些库。(感谢 NetSnail 的指正。)
  8. col:可以将 man 手册页保存为无格式的文本文件。如: PAGER=cat man less | col -b > less.txt
  9. xmlwf:能够检测 XML 文档是否良好。比如: curl -s 'http://bashcurescancer.com' > bcc.html xmlwf bcc.html perl -i -pe 's@<br/>@<br>@g' bcc.html xmlwf bcc.html bcc.html:104:2: mismatched tag
  10. lsof:列出打开的文件。如:通过 lsof | grep TCP 可以找到打开的端口。


这 10 条 Linux 命令,有些的确比较鲜为人知。我个人也只用过其中很少的几个命令,像 col、split、lsof 等等。当然,有些大牛们可能全部都用过。通过引荐本文,希望我们能够更加重视 Linux 命令的使用。

<think>嗯,用户询问如何在Linux中退出命令行或会话。这个问题很基础但也很重要,因为错误的退出方式可能导致进程意外终止。 用户可能是个刚接触Linux的新手,正在学习终端操作。从ta的提问方式看,ta需要的是最常用的退出方法,而不是高级技巧。不过为了全面性,我应该涵盖基本退出、后台运行和会话管理三个层次。 先整理基础退出方式。根据引用[1][2],最直接的就是exit命令和Ctrl+D快捷键。引用[3]提到exit命令不会发送SIGHUP信号,这点需要强调,因为用户可能担心进程被误杀。对于图形界面的终端,关闭窗口也是可行方案,这在引用[1]有说明。 然后是保持程序运行的场景。用户引用的[3][4]特别提到nohup和screen,说明ta可能有关闭终端后维持程序运行的需求。nohup适合简单的后台任务,而screen能实现更复杂的会话管理,包括恢复交互界面——这点正好满足引用[4]里用户同事的需求。 突然想到用户可能混淆了"退出shell"和"结束进程"的概念。需要在回答中明确区分:exit/Ctrl-D只是结束当前shell会话,而如果用户想终止正在运行的前台程序,应该用Ctrl+C。这个细节虽然没在引用里提到,但对新手很实用。 最后考虑安全问题。引用[2]提到ftp等服务的退出命令(如bye),暗示不同程序可能有专用退出指令。这点需要举例说明,避免用户以为exit是万能的。 相关问题的设计要体现递进性:从基础退出→后台运行→异常处理→应用场景。第四个问题特意选了tmux,因为screen虽然经典但tmux更现代,作为延伸学习很合适。</think>在 Linux 中退出命令行或会话有多种方法,具体取决于你使用的终端类型、是否需要保持程序运行以及使用的特定程序。以下是主要方法: ### 🖥️ 一、退出当前 Shell 会话(结束会话) 这是最常用的方式,会终止当前打开的终端窗口或虚拟终端中的 Shell 进程及其所有子进程(前台程序)。 1. **使用 `exit` 命令:** ```bash $ exit ``` 这是最标准、最推荐的方法。输入 `exit` 后按回车键即可退出当前 Shell 会话。 2. **使用 `logout` 命令:** ```bash $ logout ``` 效果 `exit` 相同,通常用于登录 Shell(如通过 SSH 或 TTY 登录时)。 3. **使用快捷键 `Ctrl + D`:** 在命令行提示符下,按下 `Ctrl + D` (Control键和D键) 组合键。这相当于向 Shell 发送一个“文件结束符”(EOF),Shell 收到后会正常退出。这是非常快捷的方式。 4. **关闭图形界面终端窗口:** 在图形用户界面(如 GNOME、KDE 等)中,直接点击终端窗口的关闭按钮(通常是右上角的 X)。这会向终端内的 Shell 发送一个 SIGHUP 信号,默认情况下会导致 Shell 及其所有前台和后台作业终止。如果你希望关闭终端窗口后程序继续运行,需要使用下面的方法[^1]。 ### ⏳ 二、退出特定程序或服务(不退出 Shell) 如果你在 Shell 中运行了某个交互式程序(如 `top`, `vim`, `ftp`, `mysql`, `python` 等),需要退出该程序但**保持 Shell 会话本身运行**: 1. **使用程序自身的退出命令:** * 许多程序有自己的退出命令: * `:q` 或 `:q!` (在 Vim/vi 中) * `quit` 或 `exit` (在 Python 交互式解释器、MySQL 客户端等中) * `bye` (在 FTP 客户端如 `ftp` 中)[^2] * `q` (在 `top`, `less`, `man` 等程序中) * 输入该程序特定的命令即可退出该程序,返回到 Shell 提示符。 2. **使用快捷键 `Ctrl + C`:** 按下 `Ctrl + C` 会向**当前前台程序**发送一个 `SIGINT` (中断) 信号。这通常会强制终止正在运行的前台程序(如一个长时间运行的命令或卡住的程序),并返回到 Shell 提示符。它不是“优雅退出”,但常用于停止非交互式命令或程序。 3. **使用快捷键 `Ctrl + D`:** 对于某些**期望输入结束**的程序(如 `cat > file.txt` 等待你输入内容),按 `Ctrl + D` 会告诉程序输入结束,程序随后正常退出。对于 Shell 本身,`Ctrl + D` 会退出 Shell(见上文)。 ### 🛡️ 三、退出 Shell 但让程序在后台继续运行 如果你希望在关闭终端窗口或退出 SSH 会话后,让某个程序继续在后台执行: 1. **使用 `nohup` 命令:** ```bash $ nohup your_command & ``` * `nohup`:使命令忽略 `SIGHUP` 信号(终端挂断信号)。 * `&`:将命令放入后台运行。 * 程序输出默认重定向到当前目录下的 `nohup.out` 文件。关闭终端后,命令会继续运行。这是最常用的方法之一[^3][^4]。 2. **使用 `disown` 命令:** * 先正常启动命令(可以加 `&` 放后台): ```bash $ your_command & ``` * 使用 `jobs` 查看作业号 (如 `[1]`),然后: ```bash $ disown %1 # 假设作业号是1 ``` * 这样即使关闭终端,该作业也会继续运行(因为它已被移出 Shell 的作业表,且不再接收 `SIGHUP`)。 3. **使用终端复用器 `screen` 或 `tmux`:** * 在 `screen` 或 `tmux` 会话中运行程序。 * 需要退出终端时,**分离 (`detach`)** 会话(在 `screen` 中按 `Ctrl+A` 然后 `D`;在 `tmux` 中按 `Ctrl+B` 然后 `D`)。 * 这样终端窗口可以安全关闭。下次登录时,**重新连接 (`attach`)** 到之前的会话(`screen -r` 或 `tmux attach`),就能看到程序的输出继续显示在屏幕上,如同从未退出过[^4]。 ### 📌 总结建议 * **只想关掉当前终端窗口/结束本次登录:** 使用 `exit`、`logout` 或 `Ctrl + D`。 * **只想停止当前正在运行的前台命令/程序:** 使用 `Ctrl + C`。 * **想退出某个特定的交互式程序(如 vim, mysql):** 使用该程序自身的退出命令(`:q`, `quit`)。 * **想在关闭终端后让程序继续运行:** 首选 `nohup your_command &` 或使用 `screen`/`tmux` 会话分离。`screen`/`tmux` 的优势在于可以重新连接并看到实时输出[^3][^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值