Linux 系统管理员通过使用权威的命令行脚本会变得更高效。这包括巧妙使用循环和知道如何使用 awk
、grep
和 sed
等的实用程序解析数据。通常这可以减少击键次数,降低用户出错率。
例如,假设需要为即将安装的 Linux 集群生成一个新的 /etc/hosts 文件。一般的做法是在 vi 或文本编辑器中添加 IP 地址。不过,可以通过使用现有 /etc/hosts 文件并将以下内容追加到此文件来实现。在命令行上运行:
# P=1; for i in $(seq -w 200); do echo "192.168.99.$P n$i"; P=$(expr $P + 1);
done >>/etc/hosts
200
个主机名(n001 到 n200)将由 IP 地址(192.168.99.1 到
192.168.99.200)来创建。手动填充这样的文件有可能会创建重复的 IP
地址或主机名,因此这是使用内置命令行消除用户错误的好例子。请注意,这是在 bash shell(大多数 Linux 发行版的默认值)内完成的。
再举一个例子,假设要检查 Linux 集群中的各个计算节点中的内存大小是否一样。通常,拥有一个发行版或类似的 shell 是最好的。但是为了演示,以下使用 SSH。
假设 SSH 设置为不使用密码验证。然后运行:
# for num in $(seq -w 200); do ssh n$num free -tm | grep Mem | awk '{print $2}';
done | sort | uniq
这样的命令行相当简洁。(如果在其中放入正则表达式情况会更糟)。让我们对它进行细分,详细讨论各部分。
首先从 001 循环到 200。使用 seq
命令的 -w
选项在前面填充 0。
然后替换 num
变量,创建通过 SSH 连接的主机。有了目标主机后,向它发出命令。本例中是:
free -m | grep Mem | awk '{print $2}'
这个命令的意思是:
- 使用
free
命令获取以兆字节为单位的内存大小。
- 获取这个命令的结果,并使用
grep
获取包含字符串 Mem
的行。
- 获取那一行并使用
awk
输出第二个字段,它是节点中的总内存。
在每个节点上执行这个操作。
在每个节点上执行命令后,200 个节点的整个输出就传送(|
d)到 sort
命令,以对所有内存值进行排序。
最后,使用 uniq
命令消除重复项。这个命令会导致以下情况中的一种:
- 如果所有节点(n001 到 n200)拥有相同的内存大小,则只显示一个数字。这个数字就是每个操作系统看到的内存大小。
- 如果节点内存大小不同,将会看到几个内存大小的值。
- 最后,如果某个节点上的 SSH 出现故障,则会看到一些错误消息。
这个命令并不是完美无缺的。如果发现与预期不同的内存值,您就不知道是哪一个节点出了问题,或者有多少个节点。为此需要发出另一个命令。
这个技巧提供了一种查看某些内容的快速方式,而且如果发生错误,您可以立刻知道。其价值在于快速检查。
分享到:
相关推荐
最实用的Linux 命令行和shell脚本编程宝典,是最常用的参考手册。
本文分享了Linux命令行的一些实用技巧。
NetTerm 详细说明包括命令行脚本。 NetTerm详细说明书,包括命令行调用脚本说明,脚本API,常用控制符等内容。 NetTerm 说明 命令行 脚本
命令行工具类用于在一个SQLite数据库中管理shell历史
Linux命令行和bash脚本编程圣经 Linux命令行和bash脚本编程圣经
linux脚本+命令总结
Autorip.sh 是一个 Linux/Unix 下的命令行脚本,用来抓取 DVD 数据的小工具,主要用来创建高质量的 DVD 备份,包括所有的字幕、音轨,无需任何配置。
命令行批量截图Node脚本
“你的rm -rf /*,我接盘了“——刚毕业的运维小姐姐总误删文件,我送了她一个命令行版 “回收站” 完整流程文章链接:https://blog.csdn.net/weixin_42350212/article/details/115628436
Linux 命令行和shell脚本编程宝典(清晰绝对完整版).pdf,绝对完整的版本,清晰度比160多M的还要好一些,有完整书签,在CSDN上花8分下载了4个part,结果解压不了,超级郁闷。辛苦找到的这个真正完整的可以分享给大家...
用命令行的方式看基金行情,摸鱼很难被发现。 加-n参数显示中文基金名,conf文件添加要显示的基金缩写和基金代码。
Linux运维-运维系统服务04-Shell脚本d7-Shell三剑客(下)-02awk命令行模式.mp4
shell脚本和命令行应用程序的实时、原生微型图形用户界面
Linux shell 命令行及脚本编程实例详解
Linux Shell命令行及脚本编程实例详解-刘艳涛的mobi版本
本文告诉大家如何通过命令行或通过脚本的方式协助用户开启旁加载的功能在 win10 的旁加载其实就是写入注册表,允许所有应用信任安装,所以只需要通过命令行写入注册
linux开发,运维必备,作为一本手头工具书很实用,不过有几处会有问题,不过影响不大
matlab开发-命令行工具监视或监视当前许可证。一个简单的awk脚本,用于处理许可证管理器日志文件中所使用的并发座位数。
Linux Shell命令行及脚本编程实例详解PPT 刘艳涛 清华大学出版社