Linux Runlevel 启动 脚本
Linux 操作系统自从开始启动至启动完毕需要经历几个不同的阶段,这几个阶段就叫做 Runlevel,同样,当Linux操作系统关闭时也要经历另外几个不同的 Runlevel,下面详细介绍一下 Runlevel,并展示一些小技巧来让Linux系统避免不必要的重启动。
Runlevel 可以认为是系统状态,形象一点,您可以认为 Runlevel 有点象微软的 Windows 操作系统中的正常启动(Normal)、安全模式(Safemode)和Command prompt only。进入每个 Runlevel 都需要启动或关闭相应的一系列服务(Services),这些服务(Services)以初始化脚本的方式放置于目录 /etc/rc.d/rc?.d/或者/etc/rc?.d下面。(?代表 Runlevel 的对应序号)。
在大多数的Linux发行版本中,通常有8个运行级别系统状态(Runlevel System State):
- 0 Halt the system 停机(千万不要把 initdefault 设置为0),机器关闭
- 1 Single user mode 单用户模式,与 Win9x 下的安全模式类似
- 2 Basic multi user mode 基本多用户模式,没有 NFS 支持
- 3 Multi user mode 完整的多用户模式,是标准的运行级
- 4 None 一般不用,在一些特殊情况下可以用它来做一些事情。例如在笔记本电脑的电池用尽时,可以切换到这个模式来做一些设置。
- 5 Multi user mode with GUI 就是X11,进到XWindow系统了
- 6 Reboot the system 重新启动(千万不要把initdefault 设置为6),运行 init 6 机器就会重启
- S, s Single user mode
不同的运行级有不同的用处,也应该根据自己的不同情形来设置。例如,如果丢失了 root 口令,那么可以让机器启动进入单用户状态来设置。在启动后的 lilo 提示符下输入:
init=/bin/sh rw (或者 linux 1;linux single)
就可以使机器进入运行级 1 ,并把 root 文件系统挂为读写。他会跳过所有系统认证,让你使用 passwd 程序来改变 root 口令,然后启动到一个新的运行级。
多数的桌面的 Linux 系统缺省的 Runlevel 是 5,用户登陆时是图形界面,而多数的服务器版本的 Linux 系统缺省的 Runlevel 是 3,用户登陆时是字符界面,Runlevel 为 1 和 2 除了调试之外很少使用,Runlevel 为 s 和 S 并不是直接给用户使用,而是用来 Single user mode 作准备。
显示当前运行模式:runlevel
$ runlevel
3 5
Runlevel命令的输出结果表明最初的运行模式是3,而现在的运行模式是5。
在运行模式中加入启动服务
要在某个运行模式中加入一个启动服务,首先要新建该服务启动脚本,然后把它放置于/etc/rc.d/init.d或者/etc/init.d/(根据你的 Linux版本有所不同),要将该启动脚本与运行模式关联起来,你需要这个运行模式的目录下建立一个与/etc/rc.d/init.d/下启动脚本的 symbolic link,文件名的前缀通常为SXX,XX为数字,这个数字是用来控制该运行模式下服务的启动顺序。脚本的执行顺序是按照数字大小升序执行,就是数字越小越先执行,下面就是一个在运行模式中加入启动服务具体的例子:
$ cp myservice /etc/rc.d/init.d/
$ ln -s /etc/rc.d/init.d/myservice /etc/rc3.d/S99myservice
这样,下次以Runlevel 3启动时,myservice就会自动启动。
以某个Runlevel启动
你可以自己制定启动时所进入的Runlevel,如果你的系统使用的是lilo,在启动命令中将相应的部分为:
LILO: Linux 5
如果你使用的是GRUB,在启动时你可以按住e键进入设置模式,相应的位置显示为:
kernel /vmlinuz ro root=/dev/hda1 5
Ubuntu 的运行级别
默认安装的 Ubuntu Linux 会直接到图形界面。不过很多时候我并不需要在图形界面上做事,字符界面的命令行就足够了。想起在RedHat里可以通过修改 /etc/inittab 来把默认运行级别(Runlevel)从 5 改到 3 来实现,不幸的是 Ubuntu 中并没有这个文件。但是,Ubuntu 也是可以兼容 inittab 的,不过需要自己手工建一个罢了。
Ubuntu 安装后默认的 Runlevel 为 2,这个可以用 runlevel 命令查看。因为 runlevel=2,所以在启动过程中自动执行 /etc/rc2.d/ 目录下的以S开头的脚本。Ubuntu之所以能直接启动到图形界面,是由于运行gdm所致。所以,只要把gdm的启动脚本禁用就可以了,方法就是把文件名的第一个字母 S 改成 K:
cd /etc/rc2.d
sudo mv S30gdm K30gdm
这是一种方法,而且非常简单。但更方便的方法是设定一个新的 Runlevel,让那个新的 Runlevel作为启动到字符界面。这样便于管理。Ubuntu没有/etc/inittab文件,只好新建一个了,内容只有一行:
id:3:initdefault:
这样下次启动时就会自动运行/etc/rc3.d/目录下的脚本,而不再是/etc/rc2.d/中的。所以接下来要进入到/etc/rc3.d/中,看看gdm的启动脚本文件名:
ls -l *gdm
如果是以 S 打头的,把文件名改成以 K 打头的就行了。
Linux Runlevel 启动 脚本的更多相关文章
- linux nginx 启动脚本
linux nginx 启动脚本 [root@webtest76 ~]# vi /etc/init.d/nginx #!/bin/bash # nginx Startup script for the ...
- linux开机启动脚本
linux开机启动脚本 linux 开机启动脚本 用户自定义开机程序(/etc/rc.d/rc.local) 操作最简单,方便.每次都自己启动PHP啊,Nginx啊 烦死了,其他方式还要弄shell啊 ...
- linux 简易启动脚本
#/bin/bash pid=`ps -ef | grep 'testDemo' | grep -v grep |awk '{print $2}'` in start) nohup java -j t ...
- Linux java 启动脚本
#!/bin/bash export LANG=en_US.UTF8 start(){ ulimit -n 65535 #find the jars jar_lib=`ls -1 lib/*.jar` ...
- linux 开机启动脚本或者服务
https://blog.csdn.net/zhuchunyan_aijia/article/details/53811368
- linux 的开机启动脚本顺序
linux 开机启动脚本顺序 linux 开机启动脚本顺序. 第一步:启动内核 第二步:执行init (配置文件/etc/inittab) 第三步:启动相应的脚本,并且打开终端/etc/init.d ...
- linux自启动、定时启动脚本
linux开机自启动 想让一个程序.脚本开机自启动,可以在/etc/rc.d目录下面找到rc.local文件,编辑该文件,在尾部加上需要运行的命令即可. 如: #cd /etc/rc.d #sudo ...
- linux开机启动
开机过程指的是从打开计算机电源直到LINUX显示用户登录画面的全过程.分析LINUX开机过程也是深入了解LINUX核心工作原理的一个很好的途径. 启动第一步--加载BIOS 当你打开计算机电源,计算机 ...
- linux系统初始化——启动脚本是如何工作的
启动脚本是如何工作的 Linux 使用的是基于 运行级(run-levels) 概念的称为 SysVinit 的专用启动工具.它在不同的系统上可能是完全不一样的,所以不能认为一个脚本在某个 Linux ...
随机推荐
- eclipse中的窗口切换快捷键
Ctrl+Shift+F6 很简单,如果以后改用IDEA的话就没用了,但这个窗口切换确实很复杂,看起来也操作比较快.
- css3 animation实现风车转动
项目中经常有用到动画效果,比如Loading.风车转动等等.最简单的办法是使用gif,但是gif在半透明背景下有白边,体验不友好,好在现在可以使用css3的anmiation来实现动画效果,极大的提升 ...
- 用Windows PowerShell 控制管理 Microsoft Office 365
如果想要通过PowerShell控制管理Office365,首先要安装Microsoft Online Services Sign-In Assistant 7.0,链接如下 Microsoft On ...
- 与VS集成的若干种代码生成解决方案[博文汇总(共8篇)]
http://www.cnblogs.com/artech/archive/2010/11/17/CodeGeneration.html [第1篇] 通过CodeDOM定义生成代码的结构 我 不知道大 ...
- 如何解决Oracle RAC 安装集群软件或数据库时无法自动识别节点
在节点一 grid用户下: $ORACLE_HOME=/u01/app/11.2.0/grid/ [grid@orarac1 /]$ cd /u01/app/11.2.0/grid/oui/bin [ ...
- 多节点ListView的加载效率
据说实际场景中node数量达到4k~6k,ListView就崩溃了.(怎么个崩溃法未知) 小试了一下,10w个node毫无压力.(win7 vs2010 .net2.0) 有意思的地方在于,动态添加如 ...
- SetForegroundWindow激活窗口
在Window98以下,如果程序要激活自己,只需要简单的调用SetForegroundWindow即可达到目的.但到Win98以后,再也没有这么简单了. 新建一个简单的工程,加进一个Timer控件,设 ...
- Dephi 和 Pascal 的关系
Pascal是一个有影响的面向对象和面向过程编程语言,由尼古拉斯·沃斯在1968年9月设计,在1970年发行,作为一个小型的和高效的语言,意图鼓励使用结构化编程和数据结构进行良好的编程实践. Delp ...
- Python中对字节流/二进制流的操作:struct
前言 前段时间使用Python解析IDX文件格式的MNIST数据集,需要对二进制文件进行读取操作,其中我使用的是struct模块.查了网上挺多教程都写的挺好的,不过对新手不是很友好,所以我重新整理了一 ...
- R语言-数据结构
1.向量 向量是用来存储数值型.字符型或逻辑性数据的一维数组,用函数c()创建向量 a <- c(1,2,5,6,4) b <- c("one","two&q ...