日归档:2016 年 1 月 19 日

Linux7(CentOS,RHEL,OEL)和Oracle RAC环境系列–4-target(图形界面和字符界面)

systemd可以创建不同的状态,状态提供了灵活的机制来设置启动时的配置项。这些状态是由多个unit文件组成的,状态又叫做启动目标(target)。 unit文件可以控制服务、设备、套接字和挂载点,这些文件存放在下面的两个目录下: /etc/systemd/system/ /usr/lib/systemd/system/ 其中/etc/systemd/system/的优先级更高。 如果需要创建自己的unit,可以修改第一个目录中的文件来进行自定义配置,而第二个目录中的文件是package安装时保存的备份。 比如在Linux7.2(CentOS,RHEL,OEL)12.1.0.2和12.2beta版本的Oracle GI程序就需要自己手工创建ohasd的服务(这是bug),后续文章陆续会讲解到。 目录/etc/systemd/system/目录中只有很少的配置文件,在这里面配置的服务优先级高于配置在/usr/lib/systemd/system/中的服务: 基本target中,只有微码服务: sysinit的目标: 缺省目标: 多用户字符界面的目标(runlevel 3): 而/usr/lib/systemd/system下面定义的unit就太多了: 从Linux7开始,不使用inittab作为启动配置文件,其内容仅仅是个说明: 从上面的说明不难看出,systemd不使用inittab作为配置文件,因此在这里添加的服务将不会生效 systemd使用’targets’代替了runlevels,我们常用的两个targets(启动到图形界面和启动到字符界面): 其中,multi-user.target类似于以前的runlevel 3,也就是字符界面的多用户模式 graphical.target就是以前的runlevel 5,即图形界面模式。 可以使用systemctl get-default来查看缺省的target,也可以使用systemctl set-default来设置缺省的target。 . 查看当前正处在哪个target中: 查看默认target: 也就是当前运行在多用户字符集面的模式。 查看当前所有的运行级别的定义: 这里我们看到了熟悉的 运行级别的身影: 查看当前的正处在哪个target中: 可以看到当前处在runlevel的运行界别类似于以前的level 3 ,即字符界面启动的 我们切换到图形界面启动的运行级别(类似于以前的runlevel 5): 这时候我们可以看到关键字:graphical.target 查看当前缺省的运行级别: … 继续阅读

发表在 Installation and Deinstall, Linux, ORACLE 12C, RAC | 标签为 , , , , , | 留下评论

Linux7(CentOS,RHEL,OEL)和Oracle RAC环境系列–3-systemd(d.bin和ohasd守护进程)

Linux的系统启动大致有3种主要模式: (1)Linux5和以前的版本:SystemV style的runlevel式启动 (2)Linux6中:以upstart(例如,在ubuntu中)代表的event-based启动方式 (3)Linux7中:以systemd模式并行启动的模式 . 前面两种启动模式的大致都有如下过程: 1,内核引导(内核被载入内存并运行,初始化所有的设备驱动程序和数据结构等) 2,启动/sbin/init,它是一个由内核启动的用户级进程 3,由/sbin/init启动其他用户级的进程或服务(这些进程大多数是各种daemon进程,即各种服务进程),最终完成系统启动的全部过程 所以,init始终是第一个进程,其PID始终为1,它是系统所有进程的父进程. . 第三种方式就是Linux7中采用的sytemd的方式,systemd不通过init脚本来启动,而是采用一种并行启动服务的机制(用缓存机制解决服务的依赖关系)。 这种方式的特点是与 sysvinit 完全兼容、更清晰的服务依赖关系、开机系统初始化服务并行启动、更少的shell开销。 systemd使用 socket 和 D-Bus 来开启服务,提供基于守护进程的按需启动策略 每个服务就是一个 unit,对应于运行级别,systemd有一个 target (multi-user.target)。 . 在Linux4和5中: 在Linux6中: 在Linux7中已经不适用init进程启动了: 这里面的3个“/usr/bin/ssh-agent /etc/X11”进程是Linux7中配置了自动启动VNC。 . 这3种模式的不同在于: 1,SystemV style的runlevel式启动 在Linux5和以前的版本,init进程会读取/etc/inittab的内容,/etc/inittab中包含了很多启动其他用户进程和服务的指令。 因此,/etc/inittab的内容就决定系统进入哪一个runlevel,然后去/etc/rcN.d/(N代表runlevel的数字表示)去找相应的启动脚本。 即: /sbin/init => … 继续阅读

发表在 Installation and Deinstall, Linux, ORACLE 12C, RAC | 标签为 , , , , , | 留下评论