Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Linux简介 #1

Open
suhao opened this issue May 17, 2022 · 0 comments
Open

Linux简介 #1

suhao opened this issue May 17, 2022 · 0 comments

Comments

@suhao
Copy link
Member

suhao commented May 17, 2022

Linux内核最初只是由芬兰人李纳斯·托瓦兹(Linus Torvalds)在赫尔辛基大学上学时出于个人爱好而编写的。

Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。

Linux简介

Linux发行版本

Linux的发行版说简单点就是将Linux内核与应用软件做一个打包。

目前市面上较知名的发行版有:Ubuntu、RedHat、CentOS、Debain、Fedora、SuSE、OpenSUSE、TurboLinux、BluePoint、RedFlag、Xterm、SlackWare等。

Linux应用领域

今天各种场合都有使用各种Linux发行版,从嵌入式设备到超级计算机,并且在服务器领域确定了地位,通常服务器使用LAMP(Linux + Apache + MySQL + PHP)或LNMP(Linux + Nginx+ MySQL + PHP)组合。

特性

开放、多用户、多任务、用户界面(shell、系统调用编程界面、图像用户界面)、设备独立性、丰富网络功能(internet/文件传输/远程访问)、可靠系统安全、良好可移植性

Linux系统启动过程

内核引导

当计算机打开电源后,首先是BIOS开机自检,按照BIOS中设置的启动设备(通常是硬盘)来启动。操作系统接管硬件以后,首先读入 /boot 目录下的内核文件。

image

运行init

init 进程是系统所有进程的起点,你可以把它比拟成系统所有进程的老祖宗,没有这个进程,系统中任何进程都不会启动。

init 程序首先是需要读取配置文件 /etc/inittab。

image

许多程序需要开机启动。它们在Windows叫做"服务"(service),在Linux就叫做"守护进程"(daemon)。init进程的一大任务,就是去运行这些开机启动的程序。

但是,不同的场合需要启动不同的程序,比如用作服务器时,需要启动Apache,用作桌面就不需要。Linux允许为不同的场合,分配不同的开机启动程序,这就叫做"运行级别"(runlevel)。也就是说,启动时根据"运行级别",确定要运行哪些程序。

image

Linux系统有7个运行级别(runlevel):

  • 运行级别0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动
  • 运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登陆
  • 运行级别2:多用户状态(没有NFS)
  • 运行级别3:完全的多用户状态(有NFS),登陆后进入控制台命令行模式
  • 运行级别4:系统未使用,保留
  • 运行级别5:X11控制台,登陆后进入图形GUI模式
  • 运行级别6:系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动

系统初始化

  • init的配置文件执行: si::sysinit:/etc/rc.d/rc.sysinit:调用执行了/etc/rc.d/rc.sysinit(bash shell的脚本),主要是完成一些系统初始化的工作,例如:激活交换分区,检查磁盘,加载硬件模块以及其它一些需要优先执行任务
  • l5:5:wait:/etc/rc.d/rc 5:以5为参数运行/etc/rc.d/rc(shell脚本),去执行/etc/rc.d/rc5.d/目录下所有的rc启动脚本
    • 启动脚本通常是K或S开头的连接文件,真正的rc启动脚本放在etc/rc.d/init.d目录下
    • 以S开头的启动脚本,将以start参数来运行
    • 以K打头的连接脚本,而且已经处于运行态了(以/var/lock/subsys/下的文件作为标志),则将首先以stop为参数停止这些已经启动了的守护进程,然后再重新运行。此时init改变运行级别时,所有相关的守护进程都将重启
    • 系统运行级中有哪些守护进程,可以通过chkconfig或setup中的'Syste Services'来自行设定

image

建立终端

rc执行后,基本系统环境已经设置完成,各种守护进程也已经启动,此时返回到init中,init会打开6个终端,以便用户登录系统。

1:2345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2
3:2345:respawn:/sbin/mingetty tty3
4:2345:respawn:/sbin/mingetty tty4
5:2345:respawn:/sbin/mingetty tty5
6:2345:respawn:/sbin/mingetty tty6

在2、3、4、5的运行级别中都将以respawn方式运行mingetty程序,mingetty程序能打开终端、设置模式。

同时它会显示一个文本登录界面,这个界面就是我们经常看到的登录界面,在这个登录界面中会提示用户输入用户名,而用户输入的用户将作为参数传给login程序来验证用户的身份。

用户登录系统

image

对于运行级别为5的图形方式用户来说,他们的登录是通过一个图形化的登录界面。登录成功后可以直接进入KDE、Gnome等窗口管理器。

文本方式登录时,当我们看到mingetty的登录界面时,我们就可以输入用户名和密码来登录系统了

Linux的账号验证程序是login,login会接收mingetty传来的用户名作为用户名参数。然后login会对用户名进行分析:如果用户名不是root,且存在/etc/nologin文件,login将输出nologin文件的内容,然后退出。

这通常用来系统维护时防止非root用户登录。只有/etc/securetty中登记了的终端才允许root用户登录,如果不存在这个文件,则root可以在任何终端上登录。

/etc/usertty文件用于对用户作出附加访问限制,如果不存在这个文件,则没有其他限制。

图形模式与文字模式的切换方式

Linux预设提供了六个命令窗口终端机让我们来登录,可以按下Ctrl+Alt+F1~F6来切换他们。如果你安装了图形界面,默认情况下是进入图形界面的。进入命令窗口界面后再返回图形界面只要按下Ctrl + Alt + F7 即可。

tty1:默认第一个登录的窗口

Linux关机

在linux领域内大多用在服务器上,很少遇到关机的操作。毕竟服务器上跑一个服务是永无止境的,除非特殊情况下,不得已才会关机。

正确的关机流程为:sysnc > shutdown > reboot > halt

  • sysnc:将数据由内存同步到磁盘
  • shutdown:关机指令
  • reboot:重启
  • halt:关闭系统

Linux系统目录结构

查看目录结构的命令是:ls /

image

image

  • bin:binary缩写,存放常用的命令,例如常用的ls命令等
  • boot:启动linux使用的核心文件,包括连接文件和镜像文件
  • dev:device缩写,存放外部设备
  • etc:存放系统管理所需的配置文件和子目录
  • home:用户主目录,一个用户对应一个目录
  • lib:存放系统级别的动态链接库,类似windows系统的dll文件,所有应用程序都可能需要
  • lost+found:大部分时候为空,系统非法关机会存放一些文件
  • media:系统自动识别的一些设备,如U盘、光驱等,linux会将识别的设备挂载到此目录
  • mnt:用户临时挂载文件系统,例如光驱,默认为空
  • opt:主机额外安装软件目录,例如数据库等,默认为空
  • porc:虚拟目录,映射系统内存,可以直接访问此目录来获取系统信息;此目录内容在内存中
  • root:系统管理员/超级权限的用户主目录
  • sbin:super user binary,系统超级权限管理员使用的系统管理程序
  • srv:存放服务启动后需要提取的数据
  • sys:系统文件
  • tmp:存放一些临时文件
  • usr:用户应用程序或文件,类似windows系统下的program files目录
  • usr/bin:系统用户使用的应用程序
  • usr/sbin:超级管理员使用的比较高级的管理程序和系统守护程序
  • usr/src:内核源码默认存放位置,开源爱好者之家
  • usr/x11r6:x-window目录
  • usr/doc:文档大本营
  • usr/include:开发编译应用所需头文件
  • usr/lib:常用动态库/静态库
  • usr/local:提供给用户使用的usr目录,安装软件最核酸
  • usr/man:帮助文档存放目录
  • var:存放着不断扩充的东西,例如经常被修改的文件,日志等

Linux远程登录

Linux作为服务器使用时,一般部署在机房。此时我们需要远程登录到Linux服务器来管理和维护系统。我们可以通过ssh服务实现远程登录,默认端口为22。

image

image

image

我们也可以使用密钥认证机制远程登录Linux,这样就不用输入密码了:

  • 创建root/.ssh目录并设置权限:mkdir /root/.ssh chmod 700 /root/.ssh
  • 创建认证文件:vim /root/.ssh/authorized_keys,复制写入SSH2 Public Key文件内容
  • 设置putty选项的ssh->auth:选择SSH Private Key即可

image

Linux文件基本属性

Linux系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限。为了保护系统的安全性,Linux系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定。

在Linux中我们可以使用ll或者ls –l命令来显示一个文件的属性以及文件所属的用户和组,如:

[root@www /]# ls -l
total 64
dr-xr-xr-x   2 root root 4096 Dec 14  2012 bin
dr-xr-xr-x   4 root root 4096 Apr 19  2012 boot
……
  • 第一个字母标识文件属性,如d为目录,-为文件,/为链接文件,b为可随机存取装置文件,c为一次性存取装置文件(如串口,键盘,鼠标等)
  • 后续跟着三组[rwx]参数组合:r代表可读,w为开写,x为可执行,-代表无权限

image

文件属主和属组

用户在Linux系统中按组分类,用户可以属于一个或多个组。

  • 属主:文件所有者
  • 属组:文件所有者同组用户
  • 其他用户:文件所有者不同组的其他用户

更改文件权限

  • chgrp: 更改文件属组
  • chown:更改文件属主,也可以同时更改文件属组
  • chmod:更改文件的9个属性,rwx*owner/group/others
    • 可以以字符形式改变:-rwxrwxrwx
    • 可以以数字形式改变:r=4,w=2,x=1,分别将权限相加即可,如7=rwx
    • 可以以符合类型改变:u=user,g=group,o=others,a=all,如chmod u=rwx,g=rx,o=r filename

Linux文件和目录管理

Linux目录时树状结构,最顶级目录为根目录(/)。其他目录可以挂载添加到树种,解除挂载可以移除它们。

  • 绝对路径:路径的写法,由根目录/写起,例如/usr/share/doc
  • 相对路径:路径写法不由\写起,例如由/usr/share/doc跳转到usr/share/man路径时,可以执行:cd ../man

目录常用命令

  • ls:列出目录
  • cd:切换目录
  • pwd:显示目前的目录,print working directory缩写
  • mkdir:创建一个新目录
  • cp:复制文件/目录
  • rm:删除文件/目录

文件常用命令

  • cat:由第一行开始显示文件内容
  • tac:从最后一行开始显示
  • nl:显示时输出行号
  • more:一页一页显示文件内容
  • less:类似more,增加可以往前翻页
  • head:只看头几行
  • tail:只看尾几行

Linux用户和用户组管理

Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。

用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问;另一方面也可以帮助用户组织文件,并为用户提供安全性保护。

  • useradd:添加用户账号
  • userdel:删除账号
  • usermod:修改账户
  • passwd:修改用户口令
  • groupadd:增加用户组
  • groupdel:删除用户组
  • groupmod:修改用户组
  • newgrp:切换用户所在组
  • newusers/pwunconv/chpasswd:批量增加用户,newusers < users.txt pwunconv chpasswd < passwd.txt pwconv

Linux磁盘管理

  • df:列出文件系统的整体磁盘使用量
  • du:检查磁盘空间使用量
  • fdish:磁盘分区
  • mkfs:格式化磁盘
  • fsck:磁盘检验,检查和维护不一致的文件系统
  • mount:挂载磁盘
  • umount:卸载磁盘

Linux的vi和vim

所有的 Unix Like 系统都会内建 vi 文书编辑器,其他的文书编辑器则不一定会存在。但是目前我们使用比较多的是 vim 编辑器。

vim 具有程序编辑的能力,可以主动的以字体颜色辨别语法的正确性,方便程序设计。

什么是vim?

Vim是从 vi 发展出来的一个文本编辑器。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。

image

vim的使用

基本上 vi/vim 共分为三种模式,分别是一般模式、编辑模式与指令列命令模式。 这三种模式的作用分别是:

  • 一般模式:以 vi 打开一个档案就直接进入一般模式了(这是默认的模式)。在这个模式中, 你可以使用『上下左右』按键来移动光标,你可以使用『删除字符』或『删除整行』来处理档案内容, 也可以使用『复制、贴上』来处理你的文件数据
  • 编辑模式:在一般模式中可以进行删除、复制、贴上等等的动作,但是却无法编辑文件内容的! 要等到你按下『i, I, o, O, a, A, r, R』等任何一个字母之后才会进入编辑模式。注意了!通常在 Linux 中,按下这些按键时,在画面的左下方会出现『INSERT 或 REPLACE 』的字样,此时才可以进行编辑。而如果要回到一般模式时, 则必须要按下『Esc』这个按键即可退出编辑模式
  • 指令列命令模式:在一般模式当中,输入『 : / ? 』三个中的任何一个按钮,就可以将光标移动到最底下那一行。在这个模式当中, 可以提供你『搜寻资料』的动作,而读取、存盘、大量取代字符、离开 vi 、显示行号等等的动作则是在此模式中达成的!

image

image

shell前端软件包管理器

RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant