作为一名软件工程师,我做过的最明智的投资就是学习 Linux。因为,在日常工作中,我们会经常与 Linux 系统打交道。而今天,作为一名 30 多岁的工程师,我仍受益于几年前我碰巧学过的那些知识,所以技术学习需要不断积累,不积跬步无以至千里。另外,在另一篇
博客文章
中,我将更详细地解释为什么 Linux 对于软件开发人员来说更加务实。
在本文中,我将分享一些小众却十分有用的 Linux 命令。如果你使用 Macbook,那刚刚好。因为我推荐的大多数命令也能应用于 OSX 系统。
10.file
返回给定信息的类型。例如,你可以输出图像的尺寸信息:
file logo.png
返回:
> PNG image data, 16 x 16, 8-bit/color RGBA, non-interlaced
9.iotop, powertop, nethogs
你将如何监控 Linux 系统中发生的状况? 这三个命令可以解决你的燃眉之急。
-
Iotop
:通过磁盘写入对进程排序,并显示程序写入到磁盘的数量与频次。
-
Powertop
:监控程序的电源使用情况。如果你无法及时充电时,这个命令就很重要了。
-
Nethogs
:列出每个进程所使用的带宽。
8.tee
将数据重定向到给定文件和屏幕上。例如,添加一个新的条目到 hosts 文件:
echo "127.0.0.1 foobar" | sudo tee -a /etc/hosts
7.pidof, kill 和 pkill
这三条重要的命令将帮助你控制系统中运行的程序。
Pidof
:输出正在运行程序的进程 ID。例如,以下命令将输出 nginx 的进程 ID:
pidof nginx
你还可以通过
kill
命令,以及相应的数字来终止 nginx 进程:
kill -USR2 $(pidof nginx)'
pkill
是一个快捷命令,可以按照进程名称终止所有的进程:
pkill -f nginx
6.tmux
如果你还没有安装 tmux 的话,我极力推荐你安装它。Tmux 是一款优秀的终端中的窗口和会话管理器。
译者注:
如果你想详细了解 Tmux,参见
本篇文章
。
5.tree
以树状结构列出目录内容。同时,通过设置相应的参数还可以只显示目录名称:
tree -d
4.find
当我们在指定目录下寻找具体文件时,这个命令将帮你大忙。我将在这里介绍几个简单的用例:
示例 1
- 列出所有的 CSS 文件(包括子目录):
find . -type f -name "*.css"
示例 2
- 列出所有的 CSS 与 HTML 文件:
find . -type f \( -name "*.css" -or -name "*.html" \)
3.htop
Htop 是一个著名的进程查看器。它拥有漂亮、多彩的命令行界面,以及一些实用的字母快捷键:
-
\
- 增量进程过滤器;
-
/
- 搜索进程;
-
,
- 选择排序标准;
-
k
- 终止进程;
-
u
- 筛选某一特定用户进程;
-
t
- 显示/隐藏树形结构;
-
-
和
+
- 展开/折叠选定的进程树;
-
H
- 显示/隐藏用户线程。
2.chroot
这个命令的神奇之处在于,它可以帮助你在指定目录中打开新的
TTY
。那么,你就可以创建一个文件夹,在其中设置新的 Linux 系统,并随时切换到该“子系统”。