Linux使用和基础操作 | 学习笔记

简介: 快速学习Linux使用和基础操作

开发者学堂课程【Linux企业运维实战 - 入门及常用命令Linux使用和基础操作】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/550/detail/7597


Linux使用和基础操作


Linux基础和帮助


以下是 Linux 的基本知识,把Linux装好以后可以用远程工具登录,也可以在本机直接登录,平时工作中很多情况下都是远程登录,如果之前远程登录过再次登录时登录的地址可能就不一样了,先确认一下地址,每次登陆都需要手动在图形界面上输入用户密码,比较麻烦,如果希望一打开就直接登陆,有一个拓展方法,那么就涉及到文本文件的修改,借助一个图形画工具,进入一个叫 gedit 的工具,类似于记事本,可以直接改文本文件,在这里可以直接改ETC的文件。  

CD 到 gdm 一个文件修改之后可以直接登录,首先CD到GDM然后输入 geit custom ,此时可以看到有许多空着的位置,找到有一个 demo 的位置,输入Automaticlogin=true,将它设置为 true,设置以后还涉及到以谁的身份登录,所以就要改为 automaticloginenable=true,然后输入 automaticlogin=root,这样就可以实现一进入图形界面就可以自动输入用户并登录,这样就不用每次都输入用户密码较为方便,

输入结果如下: AutomaticLoginEnable=true

AutomaticLogin=root

需要注意的是有一些地方需要大写,最终输入结果如下:

AutomaticLoginEnable=true

AutomaticLogin=root

更改之后保存,再保存之后先确认一下IP地址,可以通过ITA来查看位置,发现此时没有IP地址,只有ENS33,ENS33 是 windows7 上网卡的默认位置,可以发现这里没有IP地址,没有地址的原因就是网卡默认备机用的,可以通过 gedit 改一个文件,

这个文件比较深,通过以下路径修改:

gedit/etc/sysconfig/network scipts/ifcfg ens33, 其中If是接口的意思, cfg是配置的意思,这句话就是对ENS33配置文件的意思,打开之后有一个 on boot=no,将其改为改为 on boot=Yes,并保存,这样的话网卡自动开机时就保存了地址, 修改之后就可以查看地址了,可以通过 reboot 重新启动来查看,此时增加了几个小命令之后的效果,此时可以看到已经成功了,开机的时候用户就自动登录了。

在工作中最好不要这样做,在生活中可以这样做以求方便快速,这样就可以省去输密码的繁琐工作,现在 ifconfig 就可以查看到已经有地址了,还是之前的地址。

在 Leo 上获取的地址是128,在已经连过的界面后直接双击就可以连接了,打开100和128就可以看到已经连上去了,这样以后就不用每次都去机器上输入密码,同样的,也可以在6.9上把自动输入的文件改掉,GEDIT只是一个通行工具,只能在图形界面下使用,在字符界面下是使用不了的。

字符界面指的就是在黑白屏的情况下。图形界面下使用 GEDIT 是没有问题的,如何在图形界面下编辑页面文本,可以用一些字符文本工具来实现,比如NANO,NANO是一个比较简单的图形编辑工具,可以直接用来编辑文件,可以利用它实现刚才在字符界面下进行的更改,更改如下:

AutomaticLoginEnable=true

AutomaticLogin=root

由于是字符界面,所以这里的保存不能用鼠标来进行,只能通过按键来实现退出保存,可以看到页面左下角有一个EXIT和^X,他的意思就是说按住ctrl和x就是退出的意思,那么按住 ctrl 加X就可以看到系统提示是否将当前更改保存,然后Y就代表Yes,N就代表No,用键盘输入Y,系统提示是否将刚才修改的内容写入这个文件中,此时直接回车就可以将更改保存,如果不确定可以通过cat来查看文件文本内容,此时,文件就被写入进去,利用cat加文件路径回车就可以看到已经有内容了。

此时利用 reboot 来注销去重新启动可以看到已经重启了。以后进行管理工作的时候,就可以不需要坐在机器面前进行管理了可以通过IP地址网络连接,此时机器已经重启。

在 Linux 中,用户账号目前手上有2个可以用的账号,一个是root账号,是系统自带的账号,在安装系统时,只需要指定口令而不需要指定用户名是什么。

这个账号是一个管理员账号,也称为超级用户。权限很大,一般来说不建议直接用root 账号登录系统,在上课时,为了节省时间直接用 root 账号进行登录,在工作中不能直接用 root 账号进行登录可,能会造成误操作,还有一个帐号就是普通帐号,普通帐号权限相对有限,不能做一些管理操作,可以查看内容。

但是不能对其进行更改,所以他造成的伤害也有限,需要明确的是,root账号虽然权限大,并不是因为它叫 root ,普通账号之所以权限小,并不是因为他不叫root导致的,系统中判断是否是管理员,不是看名字,而是看唯一编号。

在Linux中每个用户都有一个唯一的用户编号叫 uid,普通账号和 root 账号,都有自己的唯一的用户编号,判断你是否是管理员,就看你的 UID 是否为0,如果是0就是管理员,不是0就不是管理员。

可以通过以下方式来指查看ID的 uid:-u,通过这种方式就可以直接查看它的UID。

CentOS 6和 CentOS 7每个用户的uid。默认的起始值是不同的。 CentOS 6,每个账户默认的 uid 是从500开始,root 账号是为0的,在7上 root 还是0,但是普通账号是从1000开始编的, 账号从1000开始增加,下一个账号就是1001,当然ID是可以指定的。只需要明确一点,在 Linux 上判断身份,不是看名字,而是看ID。当然,这是默认 root 为管理员。

终端是一组键盘显示器的设备,设备可以远程连接到主机上进行操作。在如今这种终端已经可以模拟成各种软件的形式了。最早的电脑是一个主机带很多个终端。

但现在反过来了,一个主机可以带很多个终端。右键单击即可创建新的终端,当然这个终端不是物理硬件,而是软件模拟出来的。所以现在的终端已经不是物理的显示器键盘了,是模拟出来的终端。所以现在用的更多的不是物理中断,而是逻辑上的虚拟中断。虚拟终端,包括还有图形终端。

现在正在使用的就是图形终端。图形终端,在 Linux 中默认只开了一个,而字符终端可以利用快捷键打开多个字符界面的终端。可以利用同时按住ctrl +alt +F2打开一个黑色界面。

这个界面之中,鼠标不能动。可以在不关闭这个中断的情况下,再切换一个终端。

用alt加F1,又回到原来的图形界面了。再按 ctrl 加alt加F2,又回到刚才的黑色界面。

再按alt加F3,就开了一个新的字符终端。同样的也可以按F4,F5,F6,按完之后,登陆完想知道当前按的是F几,,可以通过命令TTY来看到现在按的是F几,此时会发现,已经开了很多终端,甚至是不停身份登陆的,输入TTY以后,会出现TTy后加一个数字,后面的数字就是刚才按的F后的数字。

可以通过 Who 命令来查看,目前这个账号登陆了多少个终端。其中,如果有pts,就是指这些用户都是在本机登录的,是在机器面前登陆的。

而后面的地址是指是通过远程网络登录进去的。当然这个地址是 Windows 模拟出来的一个网卡地址。这个地址是在 Windows 上配置的,但这个地址也可以通过这个地址连接到当前的地址上。而且这个命令还可以看到登录时间。

现在正在连接,如果想知道是通过哪个终端登录的,可以使用命令TTY,此时显示的是完整的设备路径。

Dev下都是完整设备路径,此时就可以知道是通过哪个终端登陆,登陆时间等等。也还有一些命令和 who 相似,例如 Who Am I,也就是当前用户名。显示的是当前用户身份,但是Who AM I显示的不是很清楚。还有一个W命令,可以显示出谁在登陆,并且可以显示出他正在执行的命令。

如果在别的终端上打开一个 Gedit。还有一个命令就是W命令,W命令可以看见正在做的事,也就是可以看到正在执行什么程序,显示的更加详细,也可以在W命令下看见执行的这个命令。以上是简单的几条小命令。

终端分很多类,不需要掌握,只需要知道如何去查在哪个终端,终端的命名方式,使得他会生成相应的设备名称,至于用什么,只需要会查就行。通常来说带TT Y的就是指在本地登录,pts就是指在远程登录。虽然用的是图形界面,在工作中为了减少系统负载,一般不会启动图形。刚才的切换图形并没有关闭。

如果想彻底关掉图形界面,可以运行一个秘密来将其关闭,可以通过 init 3 来关闭图形界面,进入字符界面。 敲下回车就会有变化。Init 0就是指直接关机。这种切换叫模式切换。

这种切换还有一个查看命令 Run level,可以看到当前的工作模式。前面的5代表刚才的模式。意思就是是从什么模式切过来的。要想运行图形工具,还得把图形界面打开,也可以回到图形界面。利用命令 Init 5 就可以切换到图形界面。

刚才是从3到5,现在从5到3即可。再次切换到字符界面后,把图形界面打开,可以换一种方式,将图形界面打开之后,换成Start X。

登录进来之后可以发现开启了一个图形界面。这种命令不是一种模式切换,只是认为开启了一个图形界面,不认为是模式切换,Start X只是切换了图形。需要注意的是,图形相当于是在 Linux 中的一个软件,并不是一个必须的东西。

不同于 Windows 的是,图形界面对于 Windows 是必须的,一开机就必须有图形,图形是 Windows 核心的东西,而对于 Linux,就相当于一 个软件。在 Linux 中输入 Start X,相当于是把软件启动了,认为不是一种模式切换。偶尔开启图形界面的时候可以用。如果想把图形界面关掉,可以使用ctrl加C将其关闭。Control + C在Windows中,就是中断一个程序的意思,使用Control + C就把这个图形界面关闭了。

所以 Start X 只是相当于一个图形工具,而不是模式切换。而模式切换不仅是打开了图形界面,还有启动其他的一些工作,开启了其他服务。而Start X只是启动图形界面而不进行其他工作。Store X 只是启动模型,其他什么都不会启动。而另外一种不只是把图形打开,还会运行其他服务。在演示时进行了大量切换操作。在工作中尽量少切换。

因为这种切换工作量较大,容易造成死机。 Linux 可以进行切换,但 Windows 不能进行切换。以上是简单的命令。现在在T T Y1上,在进行切换时,按 Ctrl alt F2,如果已经在字符界面下就可以不用按Ctrl,就切换到另一个终端上了。如果快捷键不起作用,或者笔记本损坏,或是笔记本热键冲突,可以通过命令来切。

可以通过ChVt后面加上数字,就表示切换到字符界面的第几个终端。ch就是change 的意思,T就是 terminal。重点掌握T T Y。

在控制 Linux 时有几种方式,第一种是图形界面。如果要启动图形界面有2种方式。

表面上类似,但细节上有重大差别。普通用户为什么能开启Start X,因为 Start X 只是一个软件,不涉及到其他很多服务的启动,不需要很多权限,所以普通用户就能够开启。打开图形界面之后,图形界面有底层协议工具,安装 Linux 之后,有2种图形风格,还可以安装其他的一些图形方式。 CLI 在日常工作中使用更频繁。

cli 是命令行接口,简单的说就是字符界面。基于命令行的接口,实际上运行时会自动与后台有一个程序提供支持。敲命令的时候,自动把输入的字符串进行执行。

严格来说,冯诺依曼体系,计算机只能识别01体制,计算机不理解英文单词。背后一定有人将单词转换为计算机能够识别的语言,也就是翻译者 Shell 程序,把用户输入的单词转化为计算机能够识别的命令。 Shell本身翻译为壳,Shell程序本身有很多种。类型也很多,相当于一个翻译,有中文翻译,英文翻译。

有 Sh csh tcsh ksh bash GPL zsh,众多系统类型只需要掌握常用的即可。在 linux中,默认使用的是Bash, bash 相当于在 sh 基础上的一个增强版,只需要掌握 bash。

Bash 程序已经在用户登录时在后台运行了, 这也就是为什么命令能够识别的原因,在敲入命令时,bash 一直在监控命令。

bash 是系统默认的命令类型,可以通过以下命令来确定系统中的 bash 的存在:echo $bash,这个命令可以用来确定当前用的 Shell 程序是什么。此时对应的是一个程序, Bin 这个命令是2进制的意思,也就是放到二进制程序,也就是 binary 。对于系统支持的类型,有一个文件中记录着系统支持的所有 Shell 程序。也可以选择其他系统类型。

可以通过 cat/etc/shells 命令来查看。查看到系统支持的所有 Shell 程序后,直接执行就可以对其进行使用。有进程的管理员就能够看到。

一旦切换之后,运用的命令语句就不一样了。如果换了一个Shell后执行命令,系统会提示不存在,如果退回之前的 Shell 程序就可以被执行。

因为不同的 Shell,内置识别的命令是不同的。翻译不同的翻译,识别不同的语言。不同的 Shell 支持的命令不一样。如果想创建一个文件,用 LS 可以列出当前文件列表,如果想创建一个列表,就可以通过以下方式来生成文件:

>fl

这个文件是一个空文件,用如下命令来查看文件大小:

ll fl

但是这种方法只适合于 Bash shell。如果切换到其他的 Shell 用同样的方法就是一个无效的命令。

既然命令有很多,所以不需要掌握太多的命令。所以只需要掌握基本的 bash Shell就可以了。

Shell 是 Linux 系统的用户界面。提供了用户与内核进行交互操作的一种接口,它接收用户输入的命令,并把它送入内核去执行。当用户在 Bash 输入命令后,Shell会捕获这个命令并转化为计算机能够识别的命令来操作。

中间需要一个翻译者。Shell  相当于一个接口,但是接口藏于后台看不见,用户只需要输入命令就行。

谁有可以接收指令做转换,Shell 接收命令以后发送到内核,也算作一个命令解释器,也是一种高级程序设计语言,也可以实现稍微复杂的逻辑关系。系统中,有许多单一的简单的小工具,要想完成复杂的事,就需要把它们连接起来,就要通过shell 来实现。执行命令时,加大括号是严谨的做法,也可以不加。 默认在 linux 中使用的是  bash

Aix系统是用在小型机上的系统。他用的是 ksh shell,如果想用 bash Share,可以直接将其安装上去就行了。

当用户刚刚登录时,有一个提示服务的提示信息,提示信息有一定的格式。[没有特殊要求可以换成{, root 就是当前用户名,CentOS 6 就是主机名,主机名不全,只显示的是最前面的主机名。可以通过命令 Hostname 来显示完整的主机名。

空格后的波浪符表示的是当前在哪个文件夹里。这一点与 windows 不同, Windows 直接就显示出来在哪个路径下。 CD 表示可以直接进入到某个文件夹。在CentOS 6中显示的不是完整路径,而是最后的路径名。

如果进入到ETC一下,最后就是ETC。以上就是提示符的格式信息。提示符可以根据自己的格式来修改,了解提示符信息能够便于自己工作。

将来做运维工作的时候,可能会在多个机子上切换,可能会混乱在哪个机子上操作,测试机和生产机需要严格区分清楚。为了避免生活中出现的一些状况,可以直接在测试时对提示服务信息进行修改。格式是由PS1变量来进行定义的,在这之中保存了当前提示符信息的定义。

u代表的就是用户名,H 对应的就是主机名。W就是当前的目录,就是如果想详细了解PS1详细格式,可以去查看 bash 的帮助,去搜索 ps1,在这之中,有许多关于它的用法。在PS1中进行修改,就可以对提示符信息进行修改。

例如对其进行以下修改:

PS1=”{\u@\H\t}”

如果是H就是完整的主机名。如果uid为零就是#,如果不是0就是空格,修改过后可以看到提示符信息中显示出时间来了。但是有一个问题就是如果退出之后再重新进入提示服务,信息又变成了之前的情况,无法保存住。

所以要想修改永恒,就必须保存在文件中。先新建一个文件,文件名无所谓,但后缀一定是S H。

可以通过以下命令:

nano/etc/profile.d/env.sh

回车之后将修改的内容粘贴进去,用 ctrl 加X重新退出。此时出现语法错误,再重新修改为

PS1={\u@\H\t}

退出之后发现命令不存在。所以此时语法还是存在错误,检查发现是由于带了空格,需要加上双引号。需要修改为

PS1=“”{\u@\H \t}”

再退出,可以看到此时修改成功。当然现在是以 root 身份登录,也可以用普通用户登录。为了更明确,建议修改提示符格式时,加入一些颜色。

便于更明显查看。尤其是两个版本都是相同的颜色,所以需要进行区分。33表示字体颜色,41表示背景颜色。 1和5分别表示闪烁和粗体显示。

执行以下命令

PS1=”\[\e[1;5;41;33m\]][\u@\h \w]\\$\[\e[Om\]”

加了颜色之后,可以更区别不同主机下执行的命令。为了更好的区分6和7,可以刚才的方式更改刚才的文件,找出颜色后进行更改。将其更改为

PS1=”\[\e[1;31m\]][\u@\h \w]\\$\[\e[Om\]”

34表示蓝色,35表示粉色,36表示绿色。总共就是31到37几个颜色。

退出之后,查看颜色,修改完毕。表示颜色的数字只有31到37,蓝色不太清楚,喜欢什么颜色都可以自己更改。

为了防止下次再开启的时候文件丢失,所以快速做了一个备份,做完备份之后,如果机器损坏,就可以快速恢复。\0M必须加,如果不加,后面输的命令都会带上颜色。 0表示颜色到此为止。 0M表示把颜色截止。

前面表示颜色,中间表示带颜色的字符,后面表示颜色到此为止。在命令提示符中加上时间,就可以在之后查看在什么时间输入的命令。

在 Linux 中执行的命令可以分成2类。 一部分是内部命令,一部分命令是外部命令。所谓内部命令,就是指内部命令和 Share 密切结合。系统一登录就会运行bash,运行就是已经加载到内存当中了。通过命令可以看到 bash 的文件,其中的数字表示的是它的大小。这个命令当中,除了自身带有的翻译功能。这个命令里面自身还带有一些内置的工具。

开机用户一登录就自动开启了 bash,也就是一些。程序已经在内存中运行了,这种命令就叫做内部命令,例如,enable 就是一个内部命令。 这些命令是集成在 Shell里面的,不同的 Shell 系统集成的命令是不同的。

命令 enable 列出的命令对应的就是所有的内部集成的命令。内部命令是集成在 Shell 里面的。 Shell 只要一启动,这些命令就加载到内存当中了。既然在内存中,因此只要运行一个内部命令,速度是很快的。

但是很多命令不在内存中,而是在磁盘中。在bin下有许多文件绿色的代表的是可执行文件,这些文件都是可以运行的程序。程序不会自动加载到内存里面,而是用户执行时它才会从磁盘上加载到内存中进行使用。这些文件对应的就叫做外部命令。

如何确定一个命令是内部命令还是外部命令,可以通过命令 type 来确定。如果能显示出路径来,就是一个外部命令。内部命令是集成在bash里面的,没有路径。所以使用 Type 时,不会显示出路径。而type命令本身就是一个内部命令。

由此发现,内部命令的效率更高。外部命令是放在磁盘中某个特定目录中的文件,能够运行外部命令,说明系统已经找到了这个命令。系统是根据默认路径搜索的,这个路径保存在 Path 中。内部命令效率相对更高,也可以对内部命令进行管理,对其进行禁用或启用。例如对type命令进行禁用就可以通过以下语句

Enable -n type

 通过以上方式就对type这个命令进行了禁用。内部命令放在内存中,系存中,如果有个命令既是内部命令,又是外部命令。系统会优先使用内部命令。所以搜索时会先看是否是内部命令。如果不是,就按照 path 中的默认路径来查找,如果还是没查找到,系统就会报出命令不存在的语句。

禁用之后 Enable 中就没有这个命令了。在禁用之前 Enable 中是有这个命令的。还有一个方法,就是通过Help来查看,其中带*的表示该命令已经被禁用。

如果想对命令进行启用直接执行就可以了。执行之后在Help中已经没有*了。在系统中敲命令的时候,系统会先判断它是否是内部命令。如果是直接从内存中运行。如果不是,就会在 path 中查找这个命令。

Path 的搜索顺序如下

/usr/local/$sbin:/usr/local/$bin:/usr/local/bin:/root/bin

如果要把 Yes 命令从之前的目录放到path路径下的第一个目录中,将来Yes在运行时。在第一个目录中找到了,就不会在之后的目录中查找了。

CP是复制的意思,可以把一个文件复制到另外一个目录下。把一个文件复制到另外一个目录下之后,文件大小是一样的。此时发现时间不正确,时间不正确是一个严重的问题。单机操作中,时间错误并不是大问题,在集群环境中,大规模的集群环境时间是必须正确的。

时间不准确,可以先找到一个服务器,让他的时间和该服务器的时间相同。通过以下命令可以实现让该设备的时间和远程主机的时间相同。

Ntpdate172.20.0.1

同步之后如果出现off set同步成功。通过 date 来重新再次确认一下时间是否正确。

而data本身是一个外部命令。把Yes程序复制到另外一个目录中。现在再次敲 Yes 也可以运行,但是不知道这个Yes是哪一个Yes。再次利用命令 Type,可以查看到 Yes 还是 bin 下的 Yes。但是如果按照正常的搜索顺序,理论上找的应该是path中的第一个目录。

这是因为外部命令第一次运行时把这个命令找到,为了下次再运行更快一点会把它记录到内存中,这个命令叫 Hash。把路径记录到内存中,再次运行 Yes 时不会按照path路径搜索,而会直接运行。但如果是第一次运行,就要按照顺序查找。可以通过hash 来查看已经缓存到内存中的一些命令。被缓存的这些命令都是外部命令。但是退出以后 Hush 就会空了,再次运行 Yes 就需要依次查找了。因为该文件是复制过来的,如果不想要可以通过RM-F+它的路径来删除。

之后有一个问题原始文件中还存在Yes,再次运行Yes,就会报错。因为上次运行hash已经保存到内存中了,在运行时还是按照老路径来找,把文件删了就找不到了。可以通过 hash-dname 命令来清除Name缓存。

此时把 Yes 删了就行了。删除之后再次运行,Yes 就还是按照之前的方式来运行。Hash -l显示 harsh 缓存,把对应的路径和名字显示出来。但路径和名字不一定是同名的。可以通过hash -p path name来将命令全路径path起别名为Name。通过该命令可以把命令Yes改名为 No。hash-t name可以打印其真实路径。Hash -r可以清除缓存。

清除之后hash中就没有数据了。对于外部命令也有查看其路径的一个方法。就是用which命令。 Which命令可以查看外部命令的路径,但存在一个问题。对于有双重路径的文件,Which显示的是只是一个路径。

想查看该文件的所有路径可以通过Which -a来显示。

目前来讲执行的命令有2种情况:一种是内部命令,一种是外部命令。

而对于外部命令,也存在2种情况:一种是命令已经被缓存到内存中,另一种是还没有被执行过,所以内存中不存在。

相关文章
|
2月前
|
机器学习/深度学习 Ubuntu Linux
Linux基础操作(持续更新)
Linux基础操作(持续更新)
|
2月前
|
Linux
Linux文件的基础操作
Linux文件的基础操作
24 0
|
2月前
|
Ubuntu Unix Linux
Linux下的系统编程——基础操作(一)
Linux下的系统编程——基础操作(一)
47 0
Linux下的系统编程——基础操作(一)
|
2月前
|
缓存 Unix Linux
Linux学习笔记
Linux学习笔记
254 0
|
3月前
|
缓存 监控 Linux
Linux 学习笔记十九:常见监控工具
Linux 学习笔记十九:常见监控工具
Linux 学习笔记十九:常见监控工具
|
3月前
|
安全 Linux 数据安全/隐私保护
Linux 学习笔记十八:SELinux 相关概念
Linux 学习笔记十八:SELinux 相关概念
|
3月前
|
Linux 开发工具 索引
Linux 学习笔记索引
Linux 学习笔记索引
|
3月前
|
小程序 Linux 数据安全/隐私保护
Linux学习笔记十六:日志管理
Linux学习笔记十六:日志管理
|
3月前
|
存储 Linux 数据库
Linux学习笔记十三: 数据备份与恢复
Linux学习笔记十三: 数据备份与恢复
|
3月前
|
监控 Linux
Linux学习笔记十二:Linux 工作管理
Linux学习笔记十二:Linux 工作管理
Linux学习笔记十二:Linux 工作管理