查看原文
其他

在杂乱中开始Linux的学习

Cloud研习社 Cloud研习社 2023-06-06

01

为什么需要ip地址

上一篇文章我们用ssh连接到了Linux系统,用到了ip地址,为什么要用ip地址呢?

互联网上的计算机,都会有一个唯一的32位地址,ip地址。我们访问服务器,就必须通过这个IP地址。这就像我们社会上,每个大楼都有一个确定的地址一样,陌生人找这个大楼,就通过这个唯一的地址来找到它。

同样,局域网里也有预留的IP地址 192/10/172开头,局域网的ip地址也是唯一的。

对于虚拟机的NAT模式,电脑宿主机的ip在局域网是唯一的,选择了nat模式创建虚拟机,虚拟机就是一个新的局域网(私有网络)。【如果对于VMware的设置有问题,或者你装的虚拟机无法上网,或者无法连接到虚拟机,请公众号留言寻求我们的技术支持】

在linux上的软件服务有很多,但是linux系统只有一个或两个ip地址,那怎么找到对应的服务呢。其实,服务就像大楼里的一个一个的房间,每个房间提供不同的服务,我们找到大楼以后,想找对应的房间是通过房间号来找的,对于linux上的服务也一样,每个服务有自己的编号,在IT领域我们叫做端口号(等同于大厦里的房间号)。

上一篇文章我们用ssh连接到了Linux系统,用到了ip地址,但是没有写明端口号,这是为什么呢?因为ssh默认的端口号是22,他会自动去找服务端(Linux系统)的22端口。只有在服务端不使用默认端口的情况我们才会去明确指定端口号。【对于常见服务的端口号要牢记,面试中经常用到,工作中也经常用到,在后续的学习中请注意总结】关于ssh的相关详细介绍我们会在《中小型web集群架构》部分介绍。

在连接linux的时候,有的小伙伴会连不上,我们今天来看看怎么解决?

远程连接服务故障排查:

1.     两个主机之间是否畅通,看物理网络是否通畅(网线网卡,ip地址):ping 10.0.0.136

2.     如果ip地址可以ping通,然后再查看服务是否正常:

telnet 10.0.0.136 22

如果上面的不正常,可以尝试下面的两种方法,看看问题能不能排除:

a.服务器端防火墙阻挡 

[root@localhost ~]# systemctl stop firewalld

b.端口没有开放,服务器端对应的服务没有启动(netstat)

[root@localhost ~]# systemctl start sshd

下面我们来总结一下ssh连接故障排查的思路和步骤:

02

SSH连接故障排查

第一步:物理链路是否有问题,比喻为“道路是否修通”(客户端执行)

方法1:ping 10.0.0.136

排查客户端到服务端线路问题,ping是常用的网络连通性检查工具(路是否通)

方法2:tracert -d 10.0.0.136

路由跟踪命令,也可以检查路是否畅通,-d是不进行反向解析   

第二步:ssh服务是否有问题,比喻为“道路是否开通”(客户端执行)

方法1:telnet 10.0.0.136 22

判断ssh服务器默认的22端口是否打开了。(客户端执行)一看端口是否打开,二看端口是否改变了,三看防火墙、selinux问题

方法2:nmap 10.0.0.136 -p 22

也能达到和telnet相同的效果,但nmap仅在Linux中使用

第三步:是否被防火墙阻挡,服务是否正常。即是不是实行了交通管制。(服务端查看)

一方面:

systemctl stop firewalld

Linux 防火墙firewalld,可能好心办了坏事,阻挡了远程连接,学习环境建议关闭防火墙,生产环境按照需求开启。

另一方面要检查服务是否启动:

systemctl start sshd


03

Linux的命令格式

command [-options] parameter1 parameter2 命令     选项       参数1       参数2

详细说明如下:

  • command:命令的名称,为可执行的命令或可执行文件(如shell脚本)

  • 中括号 []:这里面是可选项,通畅可选项之前会有“-”号,如-h,有时也会用选项的完整名称,此时用'--'号,例如--help· parameter1 parameter2是依附在选项后面的参数,或是command的参数。

  • 命令,选项,参数之间用空格分隔,不论是几个空格,系统全部视为一个空格。

  • 命令太长的时候可以用\来换行,【绝对不能用回车来换行,命令行下,回车代表执行】

注意:Linux是大小写敏感的系统,例如:LS和ls绝对是不一样的。

关于大小写:

# 大小写敏感[root@studyclub ~]# LS job.sh -bash: LS: command not found[root@studyclub ~]# LS job.sh-bash: LS: command not found

关于空格:

# 多少个空格无所谓,只要有空格就行[root@studyclub ~]# ls -l job.sh-rwxrwxrwx 1 root root 68 Mar 17 11:28 job.sh[root@studyclub ~]# ls -l job.sh-rwxrwxrwx 1 root root 68 Mar 17 11:28 job.sh


04

命令初体验

  • 查看日期与时间命令:date

date命令,用来显示或设置系统的日期与时间,在显示方面,使用者可以设定需要显示的格式,格式设定为一个加号后面接数个标记 。若是不以加号作为开头,则表示要设定时间,而时间格式MMDDhhmm[[CC]YY][.ss],其中 MM 为月份,DD 为日,hh 为小时,mm 为分钟,CC 为年份前两位数字,YY 为年份后两位数字,ss 为秒数。

语法格式:

date [选项] [+格式化字符串]

常用的选项:

-d  字符串 :显示字符串所指的日期与时间。字符串前后必须加上双引号;

-s  字符串 :根据字符串来设置日期与时间。字符串前后必须加上双引号;

-help:在线帮助;

-version:显示版本信息。


格式化字符串:

%H   小时,24小时制(00~23)

%M  分钟(00~59)

%s   从1970年1月1日00:00:00到目前经历的秒数

%S   显示秒(00~59)

%T   显示时间,24小时制(hh:mm:ss)

%X   显示时间的格式(%H:%M:%S)

%Z   显示时区,日期域(CST)

%a   星期的简称(Sun~Sat)

%A   星期的全称(Sunday~Saturday)

%h,%b 月的简称(Jan~Dec)

%B    月的全称(January~December)

%c    日期和时间(Tue Nov 20 14:12:58 2012)

%d    今天的日期(日)

%x,%D 日期(mm/dd/yy)

%j     一年的第几天(001~366)

%m    月份(01~12)

%w     一个星期的第几天(0代表星期天)

%W    一年的第几个星期(00~53,星期一为第一天)

%y     年的最后两个数字(1999则是99)

%Y      年的全称

%F     查看完整日期

实例讲解:

设置系统时间:

[root@studyclub ~]# date -s "2021/4/21 13:45:43"

查看系统时间:

[root@studyclub ~]# dateWed Apr 21 14:04:36 CST 2021

查看当前日期:

[root@studyclub ~]# date +%F # full date2021-04-21

查看今年是哪一年:

[root@studyclub ~]# date +%Y # year2021

查看今年是哪一年(只显示年份的后两位):

[root@studyclub ~]# date +%y # year21

查看现在是几月份:

[root@studyclub ~]# date +%m # month04

查看今天几号

[root@studyclub ~]# date +%d # day21

查看现在是几时

[root@studyclub ~]# date +%H # hour14

查看现在是几分

[root@studyclub ~]# date +%M # minute08

查看现在是多少秒

[root@studyclub ~]# date +%S # second14# 特别提醒,如果这个地方是小写的%s,则显示的是从1970年1月1日到现在的秒数

组合格式化和单格式化参数对比:

[root@studyclub ~]# date +%Y-%m-%d2021-04-21[root@studyclub ~]# date +%F2021-04-21# 可见,上面两个命令参数不同,但效果一样

组合格式化显示完整时间:

[root@studyclub ~]# date +%H:%M:%S14:10:10

以当前日期为参考,显示前面的几天、后面的几天的日期,或前后几个月、几年的日期。

[root@studyclub ~]# dateWed Apr 21 14:08:17 CST 2021[root@studyclub ~]# date +%F -d "-1day" #显示当前日期前一天的日期2021-04-20[root@studyclub ~]# date +%F -d "+1day" #显示当前日期后一天的日期2021-04-22[root@studyclub ~]# date +%F -d "+1month" #显示当前日期一个月后的日期2021-05-21[root@studyclub ~]# date +%F -d "+1year" #显示当前日期一年后的日期2022-04-21
# 总结减号“-” 代表从当前日期向过往的日期计算加号“+” 代表从当前日期向以后的(未来的)日期计算
  • 查看日历的命令:cal

cal(名称源于英文单词Calendar)。用来显示当前日历或通过参数指定日历。cal后面如果只有一个参数,则表示年份,如果有两个参数,则表示月份和年份。

语法格式:

cal [参数] [月份] [年份]

常用参数:

-1          仅查看当前月的日历

-3          查看近三个月的日历(上个月,当前月,下个月)

-s          Sunday,星期天作为每周的第一天

-m         Monday,星期一作为每周的第一天

-y  year,显示当年的日历

-V  version,查看cal的版本

实例讲解:

查看当年日历(下面两个命令效果等同):

[root@studyclub ~]# cal -y[root@studyclub ~]# cal -y 2021
January February March Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa 1 2 1 2 3 4 5 6 1 2 3 4 5 6 3 4 5 6 7 8 9 7 8 9 10 11 12 13 7 8 9 10 11 12 1310 11 12 13 14 15 16 14 15 16 17 18 19 20 14 15 16 17 18 19 2017 18 19 20 21 22 23 21 22 23 24 25 26 27 21 22 23 24 25 26 2724 25 26 27 28 29 30 28 28 29 30 3131 April May June Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa 1 2 3 1 1 2 3 4 5 4 5 6 7 8 9 10 2 3 4 5 6 7 8 6 7 8 9 10 11 1211 12 13 14 15 16 17 9 10 11 12 13 14 15 13 14 15 16 17 18 1918 19 20 21 22 23 24 16 17 18 19 20 21 22 20 21 22 23 24 25 2625 26 27 28 29 30 23 24 25 26 27 28 29 27 28 29 30 30 31 July August September Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa 1 2 3 1 2 3 4 5 6 7 1 2 3 4 4 5 6 7 8 9 10 8 9 10 11 12 13 14 5 6 7 8 9 10 1111 12 13 14 15 16 17 15 16 17 18 19 20 21 12 13 14 15 16 17 1818 19 20 21 22 23 24 22 23 24 25 26 27 28 19 20 21 22 23 24 2525 26 27 28 29 30 31 29 30 31 26 27 28 29 30
October November December Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa 1 2 1 2 3 4 5 6 1 2 3 4 3 4 5 6 7 8 9 7 8 9 10 11 12 13 5 6 7 8 9 10 1110 11 12 13 14 15 16 14 15 16 17 18 19 20 12 13 14 15 16 17 1817 18 19 20 21 22 23 21 22 23 24 25 26 27 19 20 21 22 23 24 2524 25 26 27 28 29 30 28 29 30 26 27 28 29 30 3131

查看2022年10月份的日历

[root@studyclub ~]# cal 10 2022 October 2022 Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1516 17 18 19 20 21 2223 24 25 26 27 28 2930 31

查看近三个月的日历

[root@studyclub ~]# cal -3 March 2021 April 2021 May 2021 Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 1 2 3 1 7 8 9 10 11 12 13 4 5 6 7 8 9 10 2 3 4 5 6 7 814 15 16 17 18 19 20 11 12 13 14 15 16 17 9 10 11 12 13 14 1521 22 23 24 25 26 27 18 19 20 21 22 23 24 16 17 18 19 20 21 2228 29 30 31 25 26 27 28 29 30 23 24 25 26 27 28 29 30 31

查看当月日历(两个命令都可以实现):

[root@studyclub ~]# cal[root@studyclub ~]# cal - April 2021 Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 1011 12 13 14 15 16 1718 19 20 21 22 23 2425 26 27 28 29 30
  • 查看内核版本号:uname

uname,用来获取服务器和操作系统的相关信息

常用参数:

-r          release,查看linux内核版本

-m        machine,查看cpu类型

-a       (最常用) 查看所有信息,包括:内核名称,主机名,内核版本号,内核版本,硬件名,处理器类型,硬件平台类型,操作系统名称

示例演示:

[root@studyclub ~]# uname -aLinux studyclub 3.10.0-957.el7.x86_64 #1 SMP Thu Nov 8 23:39:32 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux[root@studyclub ~]# uname -r3.10.0-957.el7.x86_64[root@studyclub ~]# uname -mx86_64


课后练习:

  1. 总结回顾ssh的故障排查过程

  2. 练习date(重点掌握)、cal、uname的用法

  3. 扩展学习:了解一下IP地址的分类

  4. 更早内容回顾:请总结安装VMware的时候,你的vmware软件的网络是怎么设置的?并总结成文。



《Linux基础及进阶》:

001 - Linux初体验

002 - 在杂乱中开始Linux的学习






看完本文有收获?请分享给更多人


推荐关注「Cloud研习社」,带你从零开始掌握云计算技术!

微信号|bjdream-1


Cloud研习社 · 



您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存