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手册。