在过去的十年中,Linux 已经从一个 替代操作系统 对于爱好者来说,它是一个必不可少的工具,可以为世界上一些最强大的软件基础设施提供支持。
随着此类服务的范围每天都在扩大,对精通这些系统的管理人员的需求也在增加。 通过 Linux Hands On 系列,我们正试图离达到这个水平的旅程更近一些。
自过去两周以来,我们一直在从头开始介绍 Linux 终端。 我们从 基本的 Linux 命令 第一部分在虚拟机上安装 Linux,然后我们在此基础上构建 中级 Linux 命令 在第二部分中简要介绍了 Linux 进程以及如何查看和杀死它们。
本周,我们终于要加强我们的比赛了!
你会学到什么
- 通过命令别名提高生产力
- 根据卷和文件类型检查磁盘使用情况
- 通过网络下载文件
- 网络故障排除基础
- 服务以及如何管理它们
- 用户访问控制/会话管理
- 关闭并重新启动系统
本周我们将介绍高级终端命令。 这些命令围绕着您在系统管理期间大部分时间需要的东西,我们还有一些命令可以帮助您减少周转时间并提高生产力。
1. 命令别名
所以我们要介绍的第一点是别名,这将影响帖子的生产力部分。 你经常会发现自己不时重复肯定的命令。 在这些情况下,我在第一部分中介绍了命令历史记录技术。 命令历史记录会注意到通过避免键入命令实际上可以帮助您节省时间,它会在您滚动时得到补偿。 使用命令别名可以避免所有这些麻烦。 当您处理特别难以输入的命令以及您没有在终端上使用自动完成插件时,别名会派上用场。
在创建别名之前,让我们看看如何列出它们。 别名(在 Linux 终端的上下文中)是传统终端命令的简写。 然而,这不仅仅适用于 Linux 终端命令。 您几乎可以为任何可以想象的命令设置别名。
这是一个例子。 为了提交到 git repo,我们使用带有 -m 标志的 git commit。 平均而言,假设您每周至少使用此命令 10 到 20 次。 输入整个内容毫无意义,这就是混叠发挥作用的地方。 通过使用像 gitcmt 这样的别名,您可以省去输入整个内容的麻烦。 再加上几个月和几年的节省,您就可以多花几个小时。 打动你不是吗?
好的,让我们看看如何检查和创建别名。
为了列出已经存在的别名,您只需发出 别号 命令没有任何标志并按回车键。 并且别名列表将返回给您。
这些别名大多是适用于系统所有用户的系统级全局别名。

现在我们知道如何查看系统上的所有别名,让我们继续创建一个。
创建别名的语法如下。
别名 ALIASNAME="ACTUAL_COMMAND_NAME"
所以在我们的例子中,我们要做的是为 echo 命令设置一个别名,只是为了演示目的。
只需输入以下内容并按回车键即可。
别名 ec="echo"

现在而不是使用 回音,我们可以简单地输入 ec 代替。
但是请注意,此别名只会持续一个会话,这意味着如果您关闭终端并重新打开它,它将不再起作用。 为了使其永久化,您需要编辑存储在的 shell 配置文件 在〜/ .bashrc
在 nano 中打开文件,将命令放在此文件中,如下面的屏幕截图所示,然后退出。

退出后发出以下命令:
源〜/ .bashrc

完成此操作后,您的命令别名将是永久的。
现在让我们看看如何取消命令别名。 相反的效果是通过发出 无别名 命令
无别名 命令不仅会从当前会话中删除别名,还会从 shell 配置文件中删除别名。

2. whereis 命令
很多时候,人们在编写软件时,会维护两种不同的环境。 类似于生产服务器设置的开发环境和根据用户需要的常规本地环境。 为了保持这两个空间相互隔离/分开,大多数人要么使用 Docker 或 vagrant 之类的东西,但有些人也更喜欢手动方法。 如果你属于后半部分,很可能你在同一台机器上有重复的二进制文件或不同版本的相同二进制文件。 下一个命令可帮助您列出特定二进制文件的所有安装。 该命令称为 whereis,它将列出存储特定二进制文件及其文档的位置。
这是语法 哪里 命令:
BINARY_NAME 在哪里
现在我们已经看到了语法,让我们看看如何使用 whereis 命令:

如您所见,它列出了 git 二进制文件存储在系统上的位置。
当您在构建某些东西时遇到兼容性问题时,这个命令无论多么简单都会有很大的帮助。
3.服务命令
后台长时间运行的操作在 Linux 中称为服务。 Linux 操作系统附带了许多服务,您可以通过导航到 /etc/init.d 目录来找到这些服务。 虽然我们无法介绍如何创建自定义服务,因为这超出了本文的范围,但在 StackOverflow 上进行简单搜索肯定会指导如何创建一个服务。 但是,我们将讨论管理服务。 其中包括启动、停止重启和检查服务的状态。
的语法 服务 命令如下:
服务 SERVICE_NAME 启动
对于此示例,我们将使用 sshd的 服务是一个安全的外壳服务器 OpenBSD系统.
要启动服务,我们使用 service start 后跟服务名称 (这里是sshd).
服务 sshd 启动
让我们在下面看看它的实际效果。 如果按回车键,终端上没有显示任何内容,则表示它运行成功。

现在让我们检查相同服务的状态。 为此,我们将使用 状态 选项以及服务命令。 如下所示。
服务 sshd 状态
这将显示服务是否处于活动状态以及其他有用的详细信息。

现在我们知道如何启动服务并检查其状态,让我们看看如何停止它。
为此,我们使用 stop 选项和 service 命令。 如果您现在检查状态,它会告诉您它处于非活动状态。
服务 sshd 停止

现在是最后一部分,我们将重新启动服务。 为此,出人意料的是,我们将使用重新启动选项。
服务的sshd重新启动

我们一起走吧。
4. df 命令
由于本系列的这一部分涉及学习如何通过终端管理 Linux 系统,让我们学习我们在使用操作系统时执行的最常见任务之一。 我们将看到如何直接从终端检查磁盘空间。 为此,我们将使用 df 命令。 它代表 磁盘文件系统 它用于显示文件系统上可用的磁盘空间量。
让我们从 df 命令的语法开始:
df [选项]... [文件]...
让我们看看 df 命令的作用。 默认情况下,在不提供任何选项的情况下,df 命令将以不太可读的格式列出各个卷的大小。

所以为了避免这种情况,我们将使用 -h 标志,代表人类可读的格式。 输入以下命令
df -h

现在,如您所见,它已在 M千兆字节和 G千兆字节。 df 命令支持的选项还有很多,我建议您使用 man 命令查看它们。
5. du 命令
我们看到了如何检查机器的磁盘空间统计信息,但这只是实现完全控制的一步。 我们查看单个文件占用的空间如何。 为此,我们使用 du 命令来估计文件使用的磁盘空间。
du 命令的语法如下:
du [选项]... [文件]...
默认情况下,没有提供任何选项,我们可以看到该命令以不可读的格式列出了它们占用的文件和空间。

为了让它们更有意义,让我们使用 -h 再次选项,它将以人类可读的格式显示事物。
杜 -h
正如您在下面看到的,现在它以我们熟悉的单位列出了所有类型的文件占用的空间。

我们还可以继续检查目录中特定文件类型占用的大小,使用 -s 旗帜。 让我们检查当前目录中的文本文件。
杜 -s *.txt

6. passwd 命令
完全控制系统的下一步实际上是能够更改密码。 我的意思是,如果系统管理员被锁在自己的机器之外,那有什么好处呢? 很酷,所以我们将看看如何更改密码,为此我们使用 passwd文件 命令。
下面是 passwd 命令的语法:
密码 [选项] [用户]
现在这里是我们如何使用 passwd 命令:
passwd文件

现在显然出于安全原因,Linux 和 Unix 不会在控制台上以星号的形式显示密码,因为通过了解密码的长度,您可以更接近暴力破解它,但请相信我的话并尝试一下,它有效。
好吧,让我们继续前进。
7. wget 命令
接下来让我们看看如何直接从终端下载文件。 如果你已经对自己说“他会为 UI 留下什么东西吗?”,谢谢,但我会尽量不这样做。
要从 Internet 下载文件,我们将使用代表 web get 的 wget 命令。 它是一个命令行实用程序,用于通过网络下载文件。 使用 wget 命令非常容易。 您只需要在 wget 命令之后指定要下载的文件的 URL。
为了结构起见,这里是语法:
wget URL_OF_FILE
这是一个示例用法。

wget 的有趣之处在于,如果由于网络问题或其他原因而失败,它可以恢复下载。
8 谁指挥
对于系统管理员来说,访问控制是另一个重要角色。 他们需要管理对主系统的访问并检查和监视当前登录者的活动。下一个命令将帮助您检查当前登录到系统的人。 该命令被称为 谁 这是它的语法。
谁[选项]...[文件][我是]
让我们看看 who 命令是如何工作的:

现在,由于我在单用户机器上并且现在只有我在使用它,因此您可以在屏幕截图中看到的唯一用户是我。 但是假设您管理一个有 100 个用户同时登录的生产服务器,那么您会在同一个列表中看到他们。 确保使用 man 命令测试了所有可用的选项。
9. ping 命令
好吧。 使用下一个命令,我们将检查远程主机是否在线。 为此,我们使用 ping 命令。 在最原始的技术解释中,这意味着命令将发送 ICMP 回声请求 向主机发送数据包以检查其可用性。 如果主机可用,它将以确认响应,如果不可用,则数据包将被丢弃。 让我们看看如何使用 ping 命令。
语法非常简单。
ping [-LRUbdfnqrvVaAB] [-c 计数] [-m 标记] [-i 间隔] [-l 预加载] [-p 模式] [-s 数据包大小] [-t ttl] [-w 截止时间] [-F 流标签] [-I 接口] [-M 提示] [-N nioption] [-Q tos] [-S sndbuf] [-T 时间戳选项] [-W timeout] [hop ...] 目的地
这是一个示例用法。
ping google.com

此命令主要用于解决网络问题。 ping 命令的输出包含几个不同的统计信息。 首先,它包含 ICMP 序列号,告诉数据包编号。 除此之外,它还包含 TTL 指定数据包生存时间的字段,即在实际被丢弃之前它可以跳到的路由器数量。
10.关机命令
好了,我们终于到了这部分的结尾。 让我们通过学习如何从终端关闭系统来正式结束这个。 我们还将看到如何直接从终端本身重新启动系统。 现在由于这个命令实际上关闭了机器,我将在我的服务器上展示一个演示,我将通过我的主机使用安全外壳访问它。 以下是关闭命令的语法:
关机[-akrhPHfFnc] [-t秒]时间[消息]
要关闭机器,我们只需发出 关闭 命令没有任何选项。 为了重新启动它,您可以使用 -r 旗帜。 这就是它的样子 -r 旗。
关机-r

好吧,除了您的系统会关闭这一事实之外,在演示中实际上没有什么可“看到”的。 您可以查看上面的视频,其中显示我的服务器在执行命令后实际关闭。
结论
好的,伙计们,我们已经结束了 Linux Hands On 系列的第 3 部分。 部分1 涵盖了非常基础的知识,然后我们在它的基础上构建 部分2 在第 3 部分中,我们专注于 Linux 的系统管理方面。 与往常一样,我强烈建议您尝试这些高级 Linux 终端命令,而不仅仅是阅读帖子或观看视频。 我高度重视的一件事是熟练程度,这伴随着广泛的实践。 确保您这样做,如果您遇到错误或有疑问,请在评论部分或 Twitter 上写信给我们。 下周我会在这个系列的最后部分再次见到你,男孩,这会很有趣吗? 当我去起草第 4 部分时,花一些时间练习这些命令。 直到下一次! 快乐编码!
发表评论
有话要说关于这篇文章? 添加您的评论并开始讨论。