性能文章>【译】那些没有人教你的最重要的Linux命令(高手私藏篇)>

【译】那些没有人教你的最重要的Linux命令(高手私藏篇)转载

2年前
474035

无论你是Sysadmin、Developer、DevOps、Security还是Ops......有效使用Linux及其工具可以说是一项必须掌握的基本技能。

毕竟,Linux是全球大多数服务器和应用程序的支柱。

“47%的专业开发人员使用基于Linux的操作系统。”

在过去的几个月里,我阅读了许多类似“你必须知道的20个Linux命令”或“Linux生存指南”的文章。我发现几乎所有这些东西的问题在于,它们都针对初学者,教授lsecho的使用。我相信我的大多数受众至少熟悉Linux命令行提供的基本命令。

这篇文章不会是那样的。

我将记录并展示我在工作中每天使用的私家收藏命令表。这个精心策划的列表超越了完整的初学者,而是专注于命令,这些命令将帮助你进一步推动,提高效率,并管理Linux系统及其重要工具。

这将分为两个部分:

  • Linux工具—基本的Linux工具以及如何最好地利用它们。
  • AdHoc命令—AdHoc命令在紧要关头非常有用。

Linux工具

实用工具

rsync

用于将文件和目录复制到目标,类似于cp命令。然而,它也允许复制到远程位置,并可以提供进度条,这通常用于备份

# Example Usage
$ rsync -vap --ignore-existing <source_file> <destination_file>
#  Key flags:
v = verbrose, r = recursive, p = preserve permissions, g = group, o = owner, a = archive, --progress = progresss bar

mkpasswd

mkpasswd是一个简单但非常有用的命令,它会在指定长度上生成一个复杂的随机密码。

$ mkpasswd -l 8
> iwF1g2Lo

screen

screen是一个全屏窗口管理器;它创建一个运行shell的单个窗口,并允许多个screen窗口单个会话中运行。当您远程运行一项长任务并担心SSH会话掉落并破坏一切时,这是最有益的。screen将通过断开连接继续,即使窗口不可见,也会继续运行您的命令。

# Example Usage
$ screen # Start a screen session
$ screen -ls # List running services
$ screen -r # Attach to session

Ldapsearch

如果你经常使用LDAP数据库,那么Ldapsearch是必须的。该工具打开与LDAP服务器的连接,并允许你搜索、查找和调试数据库中的条目。

# Example Usage
$ ldapsearch -x -W -D <username | less
# Key Flags
-x = simple authentication, -W = prompt for password, -D = Use distinguished binddn name to bind to LDAP directory

监控工具

Uptime

正常运行时间返回服务器运行时间、当前时间、用户数量和内存使用平均值的指标。如果您的服务器出现问题,这通常是第一个调用端口。

“w”—是的,一封信。这是正常运行时间和谁命令一个接一个运行的绝佳组合。$ w

wall

Wall是任何系统管理员的方便命令;它允许您向当前已登录系统的每个人的终端发送消息。这对于全系统公告非常有用。

$ wall "Maintenance scheduled for 13:30"
Broadcast message from Joel@localhost: Maintenance scheduled for 13:30

top

显示CPU和关键内存使用量以及CPU使用指标的进程自动刷新列表。

$ top
 

ncdu

ncdu命令为磁盘使用提供了快速、方便的视图。您可以使用它快速轻松地查看哪些目录正在使用最多的磁盘空间。

$ ncdu

lsof

lsof是一个用于一个基本目的的单一命令:LiSt Open Files。当遇到安装问题时,这特别有用,比如说正在使用文件。此命令快速识别哪些文件正在使用哪些进程。

$ lsof

网络工具

Netcat

Netcat或nc主要用于端口扫描,但实际上是系统管理员用于任何任务的后口袋里的绝佳实用工具。Netcat可以支持端口扫描、文件复制、端口转发、代理服务器和托管服务器......可以肯定地说,它用途非常广泛。

# Example Usage:
$ nc -vz <host> <port> # Checks the connection between two hosts on a given port
$ nc -l 8080 | nc <host> 80 # Creating a proxy server

Netcat是如此可定制,以至于我无法将所有可能性包含在一个帖子中,因此如果您想了解更多信息,我会链接我最喜欢的关于@sahityamaruvada撰写的关于以下主题的媒体文章。

NetStat

Netstat返回各种网络详细信息,如路由表、网络连接、会员资格、统计数据、标志等。

# Example Usage 
$ netstat -a # List all network ports
$ netstat -tlpn # List all listening ports
# Key Flags
-s = Show statistics, -v = verbrose, -r = show routing tables, -i display interface table, -g = show group memeberships

Nslookup

用于获取有关互联网或本地网络服务器的信息。它查询DNS以查找名称服务器信息,可用于网络调试。

# Example Usage
$ nslookup medium.com/tags/devops
# Key Flags
-port = Change port number for connection, -type = Change type of query. -domain = Sets search list to name

TCPDump

用于捕获和分析进出系统的流量。这是一个强大而多功能的工具,专门用于调试和故障排除网络问题,但也可以用作安全工具。

# Example Usage
$ tcpdump
$ tcpdump -i <interface> <ipaddress or hostname> <port>

Ad-Hoc Commands

完美打印API响应

在使用API时,从终端读取JSON数据可能会非常令人沮丧。如您在下面看到的那样,即使一个小数据集在显示到命令行时也会很快变得一团糟,因此很难阅读。

$ cat test.json
{"title":"Person","type":"object","properties":{"firstName":{"type":"string"},"lastName":{"type":"string"},"age":{"description":"Age in years","type":"integer","minimum":0}},"required":["firstName","lastName"]}
 

幸运的是,Python有一个答案。通过将您的输出管道到python,我们可以调用JSON工具模块。这将很好地打印出JSON文档,它更容易阅读,眼睛也更好。

$ cat test.json | python -m json.tool
{
    "properties": {
        "age": {
            "description": "Age in years",
            "minimum": 0,
            "type": "integer"
        },
        "firstName": {
            "type": "string"
        },
        "lastName": {
            "type": "string"
        }
    },
    "required": [
        "firstName",
        "lastName"
    ],
    "title": "Person",
    "type": "object"
}

也值得参考JQ,这是一个命令行JSON接口

$ jq . file.json

通过apt搜索可用的软件包

$ apt-cache seach <keyword>

任意两个命令的分别输出

# Example usage of comparing output of two ls commands
$ diff -u <(ls -l /directory/) <(ls -l /directory/) | colordiff

将Unix时间戳转换为可读格式

# Convert Unix timestamp to human readable
$ date -d 1656685875
Fri, 01 Jul 2022 14:31:15 +0000
# Current time as UNIX timestamp
$ date "+%s"

压缩Git并提交

$ git log # See how many commits you've made
$ git rebase -i HEAD~x # x = number of commits you've made
# Make changes on the text editor, keeping the last commit as pick and changing the rest to sqash
# Edit the commit messages as you'd like, preferbly removing ones from previous commits
$ git push --force-with-lease

列出所有系统服务

$ systemctl -l -t service | less

我希望你从这个列表中学到了一些东西;由于Linux在服务器上很受欢迎,掌握它可能非常有用,不信你可以看看这个统计数据:

在前100万台网络服务器中,96.3%正在运行Linux。

原文作者:Joel Belton

点赞收藏
Pyqdzzj

怀抱着空杯心态,接纳、学习新技术、新领域!

请先登录,查看3条精彩评论吧
快去登录吧,你将获得
  • 浏览更多精彩评论
  • 和开发者讨论交流,共同进步

为你推荐

从 Linux 内核角度探秘 JDK MappedByteBuffer

从 Linux 内核角度探秘 JDK MappedByteBuffer

日常Bug排查-连接突然全部关闭

日常Bug排查-连接突然全部关闭

5
3