本文共 2652 字,大约阅读时间需要 8 分钟。
从今天开始,我们来学习进程和服务管理的相关内容。
进程是系统中正在运行的程序,它是操作系统资源分配和调度的基本单位。在 Linux系统中,并非每个程序只能对应一个进程,有的程序启动后可以创建一个或多个进程,例如提供Web服务的httpd程序,当有大量用户同时访问web页面时,httpd程序可能会创建多个进程来提供服务。
在进程的运行过程中,通常会在 3种基本状态之间转换:运行态、就绪态、等待态(阻塞态)。
运行态是指当前进程已分配到CPU,它的程序正在处理器上执行时的状态。处于运行态的进程个数不能大于CPU的数目,在一般单CPU机制中,任何时刻处于运行态的进程最多有一个。
就绪态是指进程已具备运行条件,但因为其他进程正占用CPU,所以暂时不能运行而等待分配CPU的状态。一旦把CPU分给它,立即就可以运行。在操作系统中,处于就绪态的进程数目可以是多个。
等待态(阻塞态)是指进程因等待某种事件发生(如等待某一输入、输出操作完成,等待其它进程发来的信号等)而暂时不能运行的状态。此时即使CPU空闲,等待态的进程也不能运行。系统中处于这种状态的进程也可以是多个。
与使用数字标记用户账号、组账号类似,Linux系统中的进程也使用数字进行标记,每个进程的身份标记号称为PID。如在Linux系统的启动过程中,“/sbin/init”是内核加载运行的第一个程序,相应的init进程对应的pid号永远为1。
2、服务的概念
在Linux中有一些特殊的程序,启动后就会持续在后台执行,等待用户或其它软件调用,这种程序称为服务。Linux系统中提供了很多服务,这些服务依照其功能可以区分为系统服务与网络服务。
某些服务的服务对象是Linux系统本身,或者是Linux系统中的用户,这类服务称为系统服务。Linux系统中更多的服务是用来提供给网络中的其他客户端调用,这类服务统称为网络服务。例如提供远程登录的sshd服务,提供网站浏览功能的httpd服务等。
二、init进程与系统运行级别
init服务是 Linux系统中第一个被执行的程序,它主要负责建立系统使用环境,并确保系统正常运行。
init服务运行以后将陆续执行系统中的其它程序,不断生成新的进程,这些进程称为 init进程的子进程,反过来说init进程是这些进程的父进程。这些子进程也可以进一步生成各自的子进程,依此不断繁衍下去,最终构成一棵枝繁叶茂的进程树,共同为用户提供服务。所以,init进程是维持整个Linux系统运行的所有进程的始祖,init进程是不允许被轻易终止的。
init服务的配置文件是 /etc/inittab,init进程运行后将按照该文件中的配置内容设置系统的运行级别。
/etc/inittab文件的主要内容如下图所示。
在 Linux系统中,将各种服务程序相互组合构成不同的搭配关系,分别满足不同的系统需求,在系统运行时,采用的每一种服务搭配称之为“运行级别”(类似于Windows系统中的正常启动、安全模式、不带网络的安全模式等概念)。默认的系统运行级别包括七种,其功能和服务各不相同。
- 0:关机状态,使用该级别时将会关闭主机。
- 1:单用户模式,不需要密码验证即可登录系统,多用于系统维护。
- 2:字符界面的多用户模式(不支持网络)。
- 3:字符界面的完整多用户模式,大多数服务器主机运行在此级别。
- 4:未分配使用。
- 5:图形界面的多用户模式,提供了图形桌面操作环境。
- 6:重新启动,使用该级别时将会重启主机。
如果系统中安装了图形桌面环境,默认的系统运行级别是 5。
不同的运行级别代表了系统不同的运行状态,在每种状态下所运行的服务或程序都有所区别,明确当前所处的运行级别将有助于管理员对一些应用故障的排除。若未能确知当前所处的运行级别,可以使用 runlevel命令进行查询,输出结果中分别包含切换前的级别和目前的级别。
例:查看系统的当前运行级别 ,若之前未切换过运行级别,第一列将显示“N”。
[root@localhost ~]# runlevel
当用户需要将系统转换为其它的运行级别时,可以使用 init命令进行,只要使用与运行级别相对应的数字(0~6)作为命令参数即可。
例:为节省服务器资源,将运行级别由图形模式( 5)切换为字符模式(3),并确认状态。
[root@localhost ~]# init 3
[root@localhost ~]# runlevel
再如,切换到运行级别0,即相当于关闭Linux系统。
[root@localhost ~]# init 0
[root@localhost ~]# init 6
init命令只能临时切换运行级别,要实现永久切换必须修改配置文件 /etc/inittab。
这个文件中的绝大多数内容都是注释,起实质作用的只有最后这一行:
这一行决定了系统的默认运行级别。默认运行级别一般建议设置为 5或3,千万不要设置为0或6,否则将导致系统无法启动。由于Linux主要是作为服务器操作系统,Linux服务器平时一般都是放置在数据中心机房中,由管理员对其进行远程管理。对Linux系统的管理操作一般都是在字符界面下通过命令完成的,很少用到图形界面,而且图形界面也要消耗更多的系统资源,同时也会导致系统不稳定,所以大多数情况下系统的运行级别都是被设置为3。
在运行级别 1所代表的单用户模式下,系统处于最原始的状态,所有网络服务都未启动,所有人都可以直接以root用户身份并且无需输入密码即可登录系统,所以单用户模式常被用于修复各种系统故障。下面我们以破解root用户密码为例来介绍下单用户模式的使用。
首先将系统重启,在系统启动到倒数计时那一步时按回车键出现引导菜单,选择“ kernel”行,按“e”键进入命令编辑状态。
然后在 auto rhgb quiet后面输入引导模式,这里输入1,用来告诉GRUB当启动这个操作系统时,传递参数1给操作系统,使系统在这次启动时进入单用户模式。按回车确认之后,又返回到上面的那个界面,按b重启系统即可进入单用户模式。
进入单用户模式后,可以执行passwd命令修改root用户密码,修改完之后再执行reboot命令重启系统,这个就不细说了。
转载地址:http://wpivo.baihongyu.com/