Linus系统启动过程
启动过程:5个阶段
- 内核的引导
- 运行init
- init程序的类型:
- SysV
- Upstart
- Systemd
- init程序的类型:
- 系统初始化
- 建立终端
- 用户登录系统
内核引导
- 计算机打开电源后,首先进行BIOS开机自检,按照BIOS中设置的启动设备来启动
- 操作系统接管硬件之后,首先读入
/boot
目录下的内核文件
运行init
- init进程是系统所有进程的起点,没有这个进程,系统中任何进程都不会启动
- init程序首先是需要读取配置文件
/etc/inittab
- 运行级别
- init进程的一大任务,就是去运行开机启动的程序
- Linux允许为不同的场合分配不同的开机启动程序,称为“运行级别”(run level)
- Linux系统有7个运行级别:
- 运行级别0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动
- 运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登录
- 运行级别2:多用户状态(没有NFS)
- 运行级别3:完全的多用户状态(有NFS),登录后进入控制台命令行模式
- 运行级别4:系统未使用,保留
- 运行级别5:X11控制台,登录后进入图像GUI模式
- 运行级别6:系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动
系统初始化
rc.sysinit
是一个bash shell
的脚本,主要完成一些系统初始化的工作,是每个运行级别都要首先运行的重要脚本,主要完成的工作有:激活交换分区、检查磁盘、加载硬件模块以及其它一些需要优先执行的任务
建立终端
- rc执行完毕后,返回init。此时基本系统环境已经设置好了,各种守护进程也已经启动
- init接下来会打开6个终端,以便用户登录系统
用户登录系统
- 一般来说,用户的登录方式有三种:
- 命令行登录
- ssh登录
- 图形界面登录
Linux关机
-
正确的关机流程为:sync>shutdown>reboot>halt
-
关机指令为:shutdown
sync #将数据由内存同步到硬盘中 shutdown #关机指令,可以man shutdown查看帮助文档 shutdown -h -10 'This server will shutdown after 10 mins' #10分钟后关机,并显示在登录用户的当前屏幕中 shutdown -h now #立马关机 shutdown -h 20:25 #在今天20:25关机 shutdown -h +10 #10分钟后关机 shutdown -r now #立即重启 shutdown -r +10 #10分钟后重启 reboot #重启,等同于shutdown -r now halt #关闭系统,等同于shutdown -h now 和 poweroff
Linux系统目录结构
-
查看系统目录:
ls /
-
树状目录结构
-
目录解释
/bin
:bin 是 Binaries (二进制文件) 的缩写, 这个目录存放着最经常使用的命令/boot
:存放的是启动 Linux 时使用的一些核心文件,包括一些连接文件以及镜像文件/dev
:dev 是 Device(设备) 的缩写, 该目录下存放的是 Linux 的外部设备,在 Linux 中访问设备的方式和访问文件的方式是相同的/etc
:etc 是 Etcetera(等等) 的缩写,这个目录用来存放所有的系统管理所需要的配置文件和子目录/home
:用户的主目录,在 Linux 中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的,如上图中的 alice、bob 和 eve/lib
:lib 是 Library(库) 的缩写这个目录里存放着系统最基本的动态连接共享库,其作用类似于 Windows 里的 DLL 文件。几乎所有的应用程序都需要用到这些共享库/lost+found
:这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件/media
:linux 系统会自动识别一些设备,例如U盘、光驱等等,当识别后,Linux 会把识别的设备挂载到这个目录下/mnt
:系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在/mnt/
上,然后进入该目录就可以查看光驱里的内容了/opt
:opt 是 optional(可选) 的缩写,这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的/proc
:proc 是 Processes(进程) 的缩写,/proc 是一种伪文件系统(也即虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。这个目录的内容不在硬盘上而是在内存里/root
:该目录为系统管理员,也称作超级权限者的用户主目录/sbin
:s 就是 Super User 的意思,是 Superuser Binaries (超级用户的二进制文件) 的缩写,这里存放的是系统管理员使用的系统管理程序/selinux
:这个目录是Redhat/CentOS
所特有的目录,Selinux 是一个安全机制,类似于 windows 的防火墙,但是这套机制比较复杂,这个目录就是存放selinux相关的文件的/srv
:该目录存放一些服务启动之后需要提取的数据/sys
:sysfs 文件系统集成了下面3种文件系统的信息:针对进程信息的 proc 文件系统、针对设备的 devfs 文件系统以及针对伪终端的 devpts 文件系统。该文件系统是内核设备树的一个直观反映。当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中被创建/tmp
:tmp 是 temporary(临时) 的缩写这个目录是用来存放一些临时文件的/usr
:usr 是 unix shared resources(共享资源) 的缩写,这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于 windows 下的 program files 目录/usr/bin
:系统用户使用的应用程序/usr/sbin
:超级用户使用的比较高级的管理程序和系统守护程序/usr/src
:内核源代码默认的放置目录/var
:var 是 variable(变量) 的缩写,这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件/run
:是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。如果你的系统上有 /var/run 目录,应该让它指向 run
Linux文件基本属性
- 对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定
- 修改文件或目录的所属用户与权限
chown
:change owner 修改所属用户与组chmod
:change mode 修改用户的权限
- 使用
ll
或者ls -l
显示一个文件的属性以及文件所属的用户和组-
示例
-
第一个字符代表这个文件是目录、文件或链接文件等
d
:目录-
:文件l
:链接文件(link file)b
:装置文件里面的可供存储的接口设备(可随机存取装置)c
:装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)
-
接下来的字符,以3个为一组,均为
rwx
三个参数的组合,r代表可读(read),w代表可写(write),x代表可执行(execute)
-
Linux文件属主和属组
- 对于文件来说,都有一个特定的所有者,也就是对该文件具有所有权的用户
- 同时在Linux系统中,用户是按组分类的,一个用户属于一个或者多个组
- 文件所有者以外的用户可以分为文件所属组的同组用户和其他用户
- 故Linux系统按文件所有者、文件所有者同组用户和其他用户来规定了不同的文件访问权限
更改文件属性
-
chgrp
:更改文件属组-
语法
chgrp [-R] 属组名 文件名
- 参数选项
-R
:递归更改文件属组,就是在更改某个目录文件的属组时,如果加上**-R
**的参数,那么该目录下的所有文件的属组都会更改
- 参数选项
-
-
chown
:更改文件所有者,也可以同时更改文件所属组-
语法
chown [–R] 所有者 文件名 chown [-R] 所有者:属组名 文件名
-
-
chmod
:更改文件的9个属性-
两种设置方法:数字和符号
-
linux文件的基本权限有9个,分别是owner/group/other三种身份各有自己的read/write/execute权限
-
权限分数对照:
r:4
w:2
x:1
-
语法:
chmod [-R] xyz 文件或目录
- 选项或参数
xyz
: 数字类型的权限属性,为rwx
属性数值的相加-R
: 进行递归的持续变更,以及连同次目录下的所有文件都会变更
- 选项或参数
-
-
符号类型改变文件权限
-
用u代表user,g代表group,o代表others,a代表all
-
用+代表加入,-代表除去,=代表设定
-
语法
-
Linux文件与目录管理
- 最顶级的目录为根目录
/
添加linux用户
sudo adduser [username]
//删除用户及个人文件
sudo deluser [username]
//删除用户
sudo userdel [username]
//查看所有用户
cat /etc/passwd
//删除文件夹
rm -rf /path/to/directory
//看硬盘容量
df -h