Linux必备知识(八)

grep命令

grep是全局正则表达式打印的简称,主要用于在文件中搜索文本。

举个例子,我们查找 /etc/ssh/sshd_config文件

cat /etc/ssh/sshd_config | wc -l

我们看到有33行,查找某个文件可能还好,但如果更多行的话,就会比较麻烦。用grep则比较方便。

cat /etc/ssh/sshd_config | grep Port

屏幕上打印出包含Port的 “Port 22”这一行。

我们也可加入 -v 排除这一行

cat /etc/ssh/sshd_config | grep -v Port

前面的grep是将cat的输出输入管道,再由grep过滤输出,实际我们可以省略cat命令。

grep Port /etc/ssh/sshd_config

输出 Port 22 ,与前面使用cat是一致的,只是这句更简短。

再以一个文件characters.txt为例说明。

grep Turtle characters.txt

查找并在屏幕上输出文件中包含Turtle的行。 

grep -v Human characters.txt

输出排除包含Human的行。

grep -n Human characters.txt

加了参数 -n 查找显示包含Human的各行,并输出行号,这在很多时候是很有用的。

grep -c  Human characters.txt

输出包含Human的行数。 

grep是大小写敏感的,加上 -i 参数可以忽略大小写

grep -i human characters.txt

grep不一定只能查找某个特定的文件,可以查找多文件

grep gedit *

* 表示所有文件,这一句代表查找当前目录下的所有文件,哪些文件里包含 gedit文件,将之在屏幕上显示出来。

也可以加上行号显示:

grep -n gedit *

grep也可递归执行,比如我们知道我们文件系统中有某个文本,但不知在哪个文件,我们可以:

grep -r gedit git/personal/ansible/roles/

从git/personal/ansible/roles/开始递归查找所有包含 gedit 的文件。

再比如查看日志:

grep -ri Error /var/log


设置主机名

简单地输入hostname就可以查看主机名

hostname

可以查看主机名配置

cat /etc/hostname

大部分Linux发行版支持的命令

hostnamectl

这个命令不仅查看主机名,还能看到机器的额外信息。

要修改主机名,需要用到root权限,比如我们要修改成my-laptop

sudo hostnamectl set-hostname my-laptop

执行这条命令后,当前shell可能还是显示原来的主机名,这是因为该shell是之前打开的,新打开一个shell,就会显示新的主机名了。

我们可以强制在当前shell 显示新主机名,键入:

exec bash

有些主机是有域名的,比如是my-laptop.mydomain.com

sudo hostnamectl set-hostname my-laptop.mydomain.com

exec bash

执行了命令之后会发现shell中主机名还是 my-laptop,在shell中一般只显示第1段。

最后还有一点需要关注的是hosts文件,它不会自动修改,最好也修改下。

sudo vim /etc/hosts

我们看到这个文件里面还是

127.0.0.1 localhost

127.0.1.1 <老主机名>

..

改成新主机名

127.0.0.1 localhost

127.0.1.1 my-laptop.mydomain.com my-laptop

..

如果不用域名的话,就把中间的域名这段去掉即可。

127.0.1.1 my-laptop

127.0.1.1只要在这个网段就行,不一定要改成127.0.0.1。

配置了hosts文件后,系统就可以解释了。

ping my-laptop.mydomain.com

ping my-laptop


安装更新

各个发行版过程基本一致,先获取可用包列表索引到本地缓存,再去远端服务器去获取实际的软件包。

Ubuntu:

sudo apt update # 获取可用包列表索引

sudo apt dist-upgrade # 实际更新

实际上还有一个更新命令

sudo apt upgrade

不带dist的upgrade不会安装,它仅安装不需要删除或安装其他依赖包的更新。一般用dist-upgrade就好。

注意执行更新时,会给出一个确认,最好浏览一下它列出的清单,比如更新什么包,新装什么包,删除什么包等,确认确实是自己想做的。再回车选Y。

安装完成后,最后也再运行一遍 sudo apt update,确认都是最新的包了。
为确保更新的包都可用,重启一下比较保险。

sudo reboot

Centos:

centos用的更新命令是dnf,旧版本的centos可能用的是yum。所以要确认已有dnf:

which dnf

实际上新版本centos装有dnf的也存在yum,而实际它的yum就是dnf的一个软链接,可以验证一下:

which yum

总之,我们用的是dnf。

dnf实际不需要单独更新包存储库索引,它会查看包索引是否过时且会自动同步,所以只需一条命令:

sudo dnf update

会给出要安装的包,选 y 后继续。

第一次从特定存储库更新包的话,会给出签名密钥的提示,选择 y 继续。

最后重启:

reboot

ArchLinux:

同步存储库索引:

pacman -Syyy

S表示同步存储库索引,yyy基本表示强制同步啥的

实际安装:

pacman -Syu

同样,最好重启下:

reboot


sar命令

sar的意思是系统活动报告器,可以了解Linux系统的性能。

先安装:

sudo apt update

sudo apt install sysstat

注意 sysstat是sar实际的软件包。

接着,编辑配置文件 /etc/default/sysstat,默认是false的。

ENABLED=”true”

一般只需编辑这个配置文件就可以工作了。sar也存在其它配置文件,一般保持默认就好。比如:

  • /etc/cron.d/sysstat,默认配置是每10分钟给一个活动报告,每天结束时重置统计文件
  • /etc/sysstat/sysstat,可以配置一些额外配置

好了,根据默认配置,每10分钟运行一次,会在我们系统中产生一个数据文件。

ls -l /var/log/sysstat/

能看到有数据文件,如果还没有就等一下,会有的。该文件最后的数字就是当天日期。

然后分析该文件

sudo sar -u -f /var/log/sysstat/sa04

可以省略参数

sar -u

输出与前面是一致的。

另外用法:

  • sar -r  与内存有关的信息
  • sar -S 与swap有关的信息
  • sar -b 与输入输出有关的信息,在服务器速度慢时可以查下

其他用法请参考sar手册。

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注