Linux必备知识(十)

Ping命令

ping是一个重要的命令,用于测试服务器是否在线。协议是ICMP,internet控制消息协议,ping相当于icmp请求,服务器给出icmp回应。基本用法:

ping 13.214.215.52

如果服务器在线,就会有回应。当然也可以ping域名

ping blog.kelemi.top

在Linux下,ping会不停地进行,停止的话,按ctrl+c中止。

在windows下,ping不会一直执行,一般只ping四个包就停止,这是他们之间的区别。

可以指定发几个包,比如6个

ping -c 6 blog.kelemi.top

可以查看丢包情况,当然越低越好。ping通常作为查找网络故障的第一步。但ping不能告诉我们更多的情况,一般还要再用其他工具查找故障。

有时我们需要确定我们是否在线,一般ping 谷歌DNS或阿里DNS就好。

ping -c 5 8.8.8.8或 ping -c 223.5.5.5


wget命令

linux服务器一般没有图形界面,从internet上下载软件不太方便,而wget则可以帮助我们实现这个需求。

首先确认系统是否有wget。

which wget

没有的话,需要先安装,比如 sudo dnf install wget。

我们来下载新版wordpress试试,首先在wordpress官网上找到,并复制下载链接,比如是 https://wordpress.org/latest.zip,我们可以下载

wget https://wordpress.org/latest.zip

可以加上一些选项:

wget -O wp.zip https://wordpress.org/latest.zip

大写O表示下载后改名为wp.zip

wget -P /home/kelemi/Downloads https://wordpress.org/latest.zip

默认wget下载到当前目录,大写P选项更改下载的目录。

前面是下载小文件,有时候需要下载大文件,比如下载几GB的操作系统镜像,需要比较长的时间,过程因为网络或其他原因中断了,我们肯定不希望从头开始。可以使用 -c选项。

wget https://mirrors.aliyun.com/ubuntu-releases/focal/ubuntu-20.04.5-desktop-amd64.iso

中间网络中断了,我们重新连上网络想继续下载, 则可以加上 -c选项

wget -c https://mirrors.aliyun.com/ubuntu-releases/focal/ubuntu-20.04.5-desktop-amd64.iso

wget也可以从文件中读取下载列表,我们建立一个文件,fetch-list.txt。这个文件为两行:

https://mirrors.aliyun.com/ubuntu-releases/focal/ubuntu-20.04.5-desktop-amd64.iso
https://wordpress.org/latest.zip

然后我们可以执行

wget -i fetch-list.txt

将自动下载ubuntu和wordpress这两个文件中列的链接内容。


df与du命令

本节来查看存储空间的情况。

df

不带任何参数的df输出存储空间的情况,一般我们都带上 -h 参数将相应数字对人类友好的信息:

df -h

可以看到有文件系统,大小,已用空间,可用,已用空间百分比以及挂载的文件目录位置。

我们可以增加一个参数 -T,会多显示一个列,该列显示挂载的文件系统类型,比如根目录挂载的文件系统为 ext4,启动文件为 vfat类型,还有一些tmpfs的类型。

df -h -T 

当然各参数也可以合并:df -hT

tmpfs文件系统列出目前对我们没什么意义,要排除它。

df -hT -x tmpfs

使用 -x 选项排除tmpfs系统,如果你愿意,也可以排除ext4,比如df -hT -x ext4,总之用 -x 可以排除任何你想隐藏的行。当然也可以参数合起来,比如 df -hTx temps

再来看一下与df配合的用例

watch df -hTx temps

watch命令表示重复执行,上面这条命令执行后,一旦插入外部存储比如U盘,马上就显示出来。

df命令能让我们方便查看磁盘占用情况,但有时我们需要知道文件或目录占用的空间,就需要du出马了。

du /home/kelemi

会输出该目录下每个文件的原始大小,有点乱。可以像df一样,加 -h 选项。-h 可以让数字让人更容易理解,不过还是很乱。我们需要控制显示的深度。

du -h –max-depth 1 /home/kelemi

这样就限制深度就是一级,显示出来就比较清晰,当然也可以设深度为2或其他数字。对于显示选定目录的大小,还有更好的命令

du -hs /home/kelemi

-s 表示是摘要。也可以同时显示多个目录的大小

sudo du -hs /home/kelemi /etc

将显示这两个目录的占用大小。我们还可以加上 -c 参数,将各个目录的总和统计出来。

sudo du -hsc /home/kelemi /etc

上面的命令实际用处不大,下面这个是有用的

du -hsc /home/kelemi/*

列出当前目录的列表及统计。

有一个比较好的包是ncdu,它可以方便协助列出文件夹的大小,而且默认按大小排序。安装好ncdu包后,运行

ncdu


head与tail命令

head和tail命令用于查看文件头和结尾。第一个示例查看syslog

head /var/log/syslog

默认情况下,head输出文件的前10行,可以用 head /var/log/syslog | wc -l 验证一下。同样的,tail命令是显示文件的后10行。

tail /var/log/syslog

可以指定显示的行数

cp /var/log/syslog .
head -n 25 syslog

我们先将syslog拷贝一个副本,可不想直接在生产日志直接操作。-n 25 表示显示25行。可以验证下 head -n 25 syslog | wc -l ,结果是25行。tail也是同样的可以指定行数。

tail -n 25 syslog

head可以组合在其他命令,比如我们想查找syslog中的ssh记录的前10行。

cat syslog | grep ssh | head

也可以再进行一次统计 cat syslog | grep ssh | head | wc -l

tail命令也一样可以这么操作。但tail有个特别的用法是 -f 这是head中没有的,用于实时跟踪文件的内容。

tail -f /var/log/syslog

当系统日志有新内容,将实时显示在屏幕上。比如我们可以另开一个窗口运行 :sudo systemctl restart sshd,在实时窗口就能看到日志。当然实际并非实时,一般是隔几秒更新一次。这在有些时候是非常有用的,比如我们系统有个auth.log日志,用于监视用户登录的情况并记录错误信息。

tail -f /var/log/auth.log

显示最后10行,然后不停止,一直在监视该文件。我们有个小技巧,可以回车几行,这样就能与原来的日志有清晰分隔。然后另开窗口,用户尝试登录系统,并故意输错密码,可以看到实时查看文件的窗口能看到相应登录的错误信息。

发表评论

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