文章目录
一.linux远程连接
我们安装的Linux服务器都是在VMware中运行,不知道大家有没有觉得不方便,每次需要Ctrl+Alt切换到真机,在我们今后的工作中,我们的服务器都是在企业自己的机房,而且连接服务器数量会很多,我们需要通过一定的工具来帮助我们连接服务器。
常见的ssh工具有SecureCRT,Xshell,MobaXterm等。
这里我们以Xshell为例,官网上不是免费的,可以到网上下载破解版,下载好后直接安装,没有什么特殊要求,傻瓜式安装。
shh协议用来连接ssh客户端和服务端(虚拟机),其实连接时windows上的xshell程序和客户端上的sshd程序连接。输入命令ssh,可以看到一个sshd,它就是服务端程序。打开etc下的ssh文件可以查看sshd的配置文件(cd /etc/ssh)。
二.shell介绍
Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核 去执行。
实际上Shell是一个命令解释器,它解释由用户输入的命令并且把它们送到内核。不仅如此,Shell有自己的编程 语言用于对命令的编辑,它允许用户编写由shell命令组成的程序。Shell编程语言具有普通编程语言的很多特点,比 如它也有循环结构和分支控制结构等,用这种编程语言编写的Shell程序与其他应用程序具有同样的效果。
我们可以使用shell实现对Linux系统的大部分管理例如: 文件管理、用户管理、权限管理、磁盘管理、软件管理、网络管理……
shell是一个程序,可以称之为壳程序,用于用户与操作系统进行交互。用来区别与核,相当于是一个命令解析器.
shell种类:
Bourne SHell(sh)
Bourne Again SHell(bash)
C SHell(csh)
KornSHell(ksh)
zsh
三.bash介绍
各个shell的功能都差不太多,在某些语法的表达方面有些区别,Linux预设就是bash。这里主要介绍bash
1.bash功能:
1.记录历史命令:bash可以记录曾经的命令,保持在~/.bash_history文件中,只保存上次注销登录之后的命令
2.tab键自动补全:使用tab见可以自动补全命令或者目录
3.alias命令别名:可以使用alias ll='ls -al’来设置命令的别名
4.工作控制:可以将某些任务放在后台去运行
5.程序脚本:可以执行shell脚本文件
6.通配符:在查找相关文件或者执行相关命令时,可以使用通配符
7.内建命令type:可以使用type 命令来查看某个命令是否为内建在bash当中的命令
2.bash变量
bash中变量有两种,分别是环境变量和自定义变量,可以理解为全局变量和局部变量,在理解他们的区别前,需要知道副程序和子程序。举个例子,当前的bash我们称之为父程序,而在这个bash下执行的任何程序,都称之为子程序。那全局变量和局部变量的区别就是,全局变量在子程序中仍然有效,局部变量只在当前程序中生效。(注意,一旦退出父程序这个bash的话,无论是全局变量还是局部变量都失效了,再次打开bash时,该变量是不存在
3.文件开机运行环境变量文件加载顺序
/etc/profile → /etc/profile.d/*.sh → ~/.bash_profile → ~/.bashrc → [/etc/bashrc])
在shell中设置的变量,无论是环境变量还是自定义变量,在bash中注销登录之后,就失效了。下次登录时,是没有这些变量的,如果想要这些变量永久生效,是需要如下配置文件的,bash在启动时,会读取这个配置文件,来设置当前shell的各种变量。shell分为两种,分别是login shell和nonlogin shell,这里先说login shell;login shell是需要输入用户名和密码的,一般情况下,login shell在登录之后,会去读取两个文件,来设置当前shell的环境变量,分别是
/etc/profile:这个配置文件是默认配置文件,是系统整体的设置
/.bash_profile或者/.bash_login或者~/.profile:这个是用户的自定义设置文件
说明:shell在读取/etc/profile中的文件之后,会去读取用户自定义的设置文件,按照顺序读取上文中所说的自定义设置文件,只要找到其中任何一个,就不再继续。在用户自定义的配置文件中,都会调用~/.bashrc这个文件,来配置当前的这个shell
注意:/etc/profile或者~/.bash_profile都是在登录的时候才去读取,如果将自己的一些设置到这些文件之后,一般都需要重新登录一次shell才会生效,也可以使用source这个命令,来读取配置文件的内容到当前的这个shell。
四.终端与控制台
Linux终端与控制台
1.终端Terminal
(1)什么是终端?
终端就是处理计算机主机输入输出的一套设备,它用来显示主机运算的输出,并且接受主机要求的输入,典型的终端包括显示器键盘套件,打印机打字机套件等。
(2)终端的本质。
其实根本上也就一句话,能接受输入,能显示输出,就这就够了,不管到了什么时代,终端始终扮演着人机接口的角色,所谓Terminal,即机器的边缘!
只要能提供给计算机输入和输出功能,它就是终端,而与其所在的位置无关
2.控制台Console
(1)什么是控制台
显示系统消息的终端就叫控制台,Linux 默认所有虚拟终端都是控制台,都能显示系统消息。
另外,对于那些专门用来模拟终端设备的程序,我们也可以称之为控制台Console,像gnome-terminal,urxvt,mlterm,xterm等软件,都可以称之为控制台,
总结:控制台是终端的特例,是终端的真子集,它是虚拟的终端。
(2)终端与控制台的区分
物理终端:直接连接在主机上的显示器、键盘鼠标统称。在实际机架式服务器部署中,一般是多台服务器共享一套终端,简称KVM(Keyboard键盘,video显示器,mouse鼠标)
虚拟终端(tty):附加在物理终端之上,用软件方式虚拟实现,CentOS默认启用6个虚拟终端,可以通过快捷键来切换,切换方式:Ctrl-Alt-F[1–6], 对应的文件是/dev/tty#。 系统默认是有7个虚拟终端(即6个文本模式终端1个图形化模式终端),也可以有多个,需要进行相应的设置。
可以通过tty命令来查看当前的虚拟终端号。tty是teletype writer的简称。
虚拟终端之间没有区别,是为了方便用户登录而设计的,比如:你用某个用户使用tty1登录,可以用另一个用户使用tty2登录。也可以使用同一个用户在不同的虚拟终端之间来回切换 进行其他操作。
切记,在用远程连接工具中不能切换,只能在vmware中打开虚拟机使用Alt+CtrlF[1–6]快捷键进行切换。
图形模式终端快捷键:
CentOS 6:Ctrl+Alt+F7
CentOS 7:在哪个虚拟终端启动,即图形化虚拟终端位于当前终端,一般在第一个终端。其余6个为文本模式虚拟终端;
伪终端(pty):两种应用场景,
第一在图形界面下打开的命令行接口,我们经常使用Ctrl+Alt+T打开的那个实际上就是一个 伪终端
第二基于ssh协议或telnet协议等远程打开的命令行界面,是运维工程师用的最多的一种连接服务器的方式。pts(pseudo-terminal slave)是pty的实现方法。用Xshell远程连接虚拟机后,输入tty命令
串行终端ttyS:与机器的串口对应,每一个串口对应一个串行终端,串口对应的是物理终端。在当前终端再运行下一个终端
五.命令提示符
命令提示符是指再操作系统中,提示进行命令输入的一种工作提示符。
在我们启动系统后会进入到一个登陆界面:
上面的内容:
1、CentOS Linux 7 (Core)
显示当前Linux的名称(CentOS)与版本(7)
2、Kernel 3.10.0-1127.e17.x86_64 on an x86_64
显示LInux核心的版本( 3.10.0-1127.e17.x86_64),并且运行在 x86_64系统上
3、admin login:root
amin 是主机名,我们使用root账号来登录,root用户在Linux系统中代表无穷的权利。
4、Passwd
这一行是在输入root敲回车后才会出现,而且输入密码时不会有任何显示,所以不要以为自己键盘坏了。
5、Last login:Thu Ju1 2 11:03:37 from 192.168.126.1
在输入正确密码登录后,系统会显示上一次的登录信息
6、[root@admin ~]#
这一行是正确登录之后显示出来的命令行模式,在[]内,最左边的root表示当前登录用户,@之后的admin是主机名,最右侧的~指的是当前用户所在的目录,#则是我们讲的命令提示符
以上内容中前两行内容来源于/etc/issue文件
在LInux系统中,命令提示符有两种
[root@admin ~]# ------->root用户提示符
[dxk@admin ~]$ ------->普通用户提示符
六.安卓与苹果:
安卓是基于Liunx开发的,苹果是基于UNIX开发的,所以苹果开发的软件都是基于硬件的,而安卓手机开发的软件都基于内核程序
七.命令初始
命令+选项+参数(例如:date -s 20200805,参数可以是一个参数也可以是多个参数)选项包括短选项(-)和长选项(–)
例如需要查看cat帮助时需要输入长选项(–),还有输入命令cat -n和cat --number一样,只是一个是短选项,一个是长选项。
ls -l打印出文件信息表解释(以root目录为例):
第一列:-:普通文件 d :目录 s: 套接字文件 l:链接文件(相当于快捷方式)
第二列:rw-------:权限,r读的权限,w:写的权限,-没有权限,x执行权限。. :SELINUX上下文关系
1:文件引用数(链接+程序)
第一个root:属主,第二个root:数组
1616列:文件的大小,1616后面:文件创建时间,创建时间后面:文件名
命令的本质:
执行一个二进制文件,这个文件里面是程序,执行一个命令就是开启了一个进程。
查看进程:ps -ef |grep 进程名字
实例:(1)执行命令的本质是执行文件
(2)执行命令时,是通过加载坏境变量查找文件位置的
(1)创造一个hello命令,先vim hello 写入echo hello world,之后用chmod +x hello 给hello 这个文件加一个可执行权限,先用./hello(.表示当前目录)执行命令
(2)如果此时切换到根目录下在执行./hello,执行不了,为什么呢?因为根目录不在环境变量里。如果此时将hello文件移动到/usr/local/bin下,此命令是否可以执行呢?答案是可以的。
八.操作系统发展历史
手工操作(没有操作系统):此时通过卡带写入,然后一个一个卡带插入,插入–》cpu处理–》换另一个卡带继续,这个阶段因为cpu运算快与一个一个插入卡带慢,导致cpu资源空闲,所以需要解决这个矛盾。
联机批处理操作系统:在此前的机基础上加入监督程序与磁带机,磁带机的作用的是将卡带一个一个的给内存,然后内存一个一个的给cpu,省掉了一个一个插入卡带的过程,节省了时间,cpu运行完一个卡带,接着会在监督程序的监督下继续将第二个卡带放到磁带上。此时还存在一个问题,就是一个程序运行完要输出,还有要接着输入,输入输出过程也比较缓慢,cpu运行还是快,这个之间也存在时间差。类似于i/o阻塞。
脱机批处理(已经很接近现代的操作系统):将输入输出与主机分开,加入卫星机,卫星机操控输入输出,卫星机只管往高速磁带中多条输入,以及管理输出,高速磁带在往内存中转移。不足:每次主机内存中只存放一道作业,每当它运行期间发出输入输出请求后,告诉的cpu便处于等待低速i/0完成状态,致使cpu空闲(高速磁带与内存之间的问题,一次只能往内存中放一个程序)。
**多道程序系统:**一个程序处理过程中遇到问题了,可以先放到缓存中,不需要之前等待。之前是必须要等到这个程序什么时候问题解决了在继续运行,直到这一个运行完才能运行下一个程序,此时就可以将这个有问题的程序搁置,先运行第二个程序,也就是两个进程可以同时进行,提高了效率(中断机制)。
**多道批处理系统:**将批处理与多道结合在一起。不足:一旦程序运行起来就不能干涉,交互,直到程序处理完。比如一个程序运行起来你需要给指令,但是这个系统就不允许,类似于有些程序让你选择yes或者no之后才能继续运行。
分时系统:由于CPU速度不断提高和采用分时技术,一台计算机可同时连接多个用户终端,而每个用户可在自己的终端上联机使用计算机,好象自己独占机器一样。它的实现原理就是,每个任务都有一定时间运行时间,多个任务在短时间内相互切换,各自有各自的时间段,就可以进行多用户。若某个作业在分配给它的时间片内不能完成其计算,则该作业暂时中断,把处理机让给另一作业使用,等待下一轮时再继续其运行 由于计算机速度很快,作业运行轮转得很快,给每个用户的印象是,好象他独占了一台计算机 而每个用户可以通过自己的终端向系统发出各种操作控制命令,在充分的人机交互情况下,完成作业的运行。不足:每一个程序还是比起独自跑完花费的时间长,其实时间已经很短了,但是用到航天等重要领域还是延时比较高。于是就出现了分时操作系统。