快捷搜索:  as  2018  FtCWSyGV  С˵  test  xxx  Ψһ  w3viyKQx

澳门24小时官网:用红帽子的chkconfig管理Init脚本



你的治理对象中多了个简单但异常有用的东东。

我爱好发明新的 UNIX 敕令,尤其是那些关于系统治理的。当我得知红帽子宣布 chkconf澳门24小时官网ig 这个对象,我想起了在 IRIX --一个从 SGI而来的 UNIX 变种--下的 chkconfig。IRIX 的 chkconfig 用来激活/禁止系统初始化的时刻的办事,无需编辑,重命名或是移动 /etc 中的 init 脚本。

类似,Red Hat 设计 chkconfig 的目的便是用来治理系统初始化的时刻启动的办事。不过,在我仔细涉猎手册并作了些测试后,我很快发明 Red Hat 扩展了chkconfig,经由过程治理 init 脚本的符号连接得以终极节制启动关闭时的系统义务,真是节省光阴!

当你的 linux 澳门24小时官网启动时, 它显示的第一个进程是 init 。假如你曩昔没看到过显示 init 进程, 输入:

# ps -ef | grep init

/etc/inittab中阐明的义务在init之后就会启动, 不过其它的义务启动很简单。例如,默认环境下 Red Hat 的 /etc/ini澳门24小时官网ttab 对 Ctrl-Alt-Delete 键序设置了一个 trap,当这些键在节制台模式下(不是 xdm)同时按下 ,就会运行 shutdown 敕令。 在启动的时刻,init 基于 /etc/inittab 的设置选项设定这个特点,不过在这个键序发生的时刻才会履行。

id:runlevel:action:process

id 代表用户定义的独一的标志

runlevel 可以使0-6的组合 或者为空

action 来自一个关键词keyword 描述init若何对待process

process 是要履行的敕令

描述 action 字段的各类关键字可以在 inittab 的手册中找到。常用的关键字,不是整个,UNIX 平台包括这些:

initdefault 定义一个系统启动落后入的运行级

wait 会被履行一次的进程 (当进入运行级的时刻)。init 进程将等待这个进程被终止

boot 定义一个启动的时刻履行的进程

bootwait 与 boot 类似 ,不过 init在继承运行前等待进程的终止

sysinit 定义一个进程在 boot的时刻履行,在任何 boot或者bootwait inittab 条款的前面履行。

runlevel 字段指明系统状态。例如,运行级 0 代表系统关机,运行级 6 代表系统重启 。不幸的是,不是所有的 Linux 宣布都遵照同样的运行级定义 。在 Red Hat 中,默认环境下支持下面这些

0. 系统挂起

1. 但用户Single-user mode

2. 多用户,没有NFS

3. 完备的多用户Complete multiuser mode

4. 用户自定义

5. X11 (XDM 登录)

6. 从新启动

每一个运行级在 /etc/rc.d 下都有个响应的目录。如运行级 5,目录便是 /etc/rc.d/rc5.d 。包孕启动这个运行级的时刻运行的相关义务的相关文件。在 Red Hat 中, 这些文件一样平常都是 shell 脚本的符号连接,可以在 /etc/rc.d/init.d 中找到。

让我们用一个简单的例子看一下这些器械, 下面这两个例子行来自我们的 inittab 文件:

id:3:initdefault:

l3:3:wait:/etc/rc.d/rc 3

在 Red Hat 系统中这很范例。一旦 init 被启动 ,读取 /etc/inittab 。 从第一行,我们知道 init 将在系统启动后从运交运行级3。一旦我们到了那个运行级 ,第二行奉告 init 去运行脚本 /etc/rc.d/rc 3 并且在履行前等待终止。

在 /etc/rc.d 目录的 rc 脚本收到 3 作为一个参数。 这个 3 相称于运行级 3。结果 rc 脚澳门24小时官网本履行 /etc/rc.d/rc3.d 目录中的所有脚本。它首先用参数 "stop" 履行所有 K(代表 "kill"杀掉落进程或者办事)打头的脚本,接下来,它运行所有以字母 S 打头的脚本,带有参数 "start" 启动进程或者办事。 着末要指明,K 和 S 脚本的履行顺序是基于排序的;名为 S90mysql 的脚本将在 S95httpd 之前履行。

[root]# find /etc/rc.d -name '*crond' -print

/etc/rc.d/init.d/crond

/etc/rc.d/rc0.d/K60crond

/etc/rc.d/rc1.d/K60crond

/etc/rc.d/rc2.d/S40crond

/etc/rc.d/rc3.d/S40crond

/etc/rc.d/rc4.d/S40crond

/etc/rc.d/rc5.d/S40crond

/etc/rc.d/rc6.d/K60crond

[root]# find /etc/rc.d -name '*crond' -exec file {} ;

/etc/rc.d/init.d/crond: Bourne shell script text

/etc/rc.d/rc0.d/K60crond: symbolic link to

../init.d/crond

/etc/rc.d/rc1.d/K60crond: symbolic link to

../init.d/crond

/etc/rc.d/rc2.d/S40crond: symbolic link to

../init.d/crond

/etc/rc.d/rc3.d/S40cron澳门24小时官网d: symbolic link to

../init.d/crond

/etc/rc.d/rc4.d/S40crond: symbolic link to

../init.d/crond

/etc/rc.d/rc5.d/S40crond: symbolic link to

../init.d/crond

/etc/rc.d/rc6.d/K60crond: symbolic link to

../init.d/crond

这注解在 init.d 中找到的 crond 是一个 shell 脚本,找到的所有其他的文件都是对 crond 脚本的符号连接。

调剂 chkconfig 的项险些和列呈现在的设置一样轻易。款式:

chkconfig [--level ]

例如,假如我们抉择在运行级 2 禁止crond,

# chkconfig --level 2 crond off

[root]# find /etc/rc.d -name '*crond' -print

/etc/rc.d/init.d/crond

/etc/rc.d/rc0.d/K60crond

/etc/rc.d/rc1.d/K60crond

Listing 1. Oracle Script

#!/bin/sh

#chkconfig: 2345 80 05

#description: Oracle 8 Server

ORA_HOME=/usr/home/oracle/product/8.0.5

ORA_OWNER=oracle

if [ ! -f $ORA_HOME/bin/dbstart ]

then

echo "Oracle startup: cannot start"

exit

fi

case "$1" in

"start")

su - $ORA_OWNER -c $ORA_HOME/bin/dbstart

su - $ORA_OWNER -c "$ORA_HOME/bin/lsnrctl start"

;;

"stop")

su - $ORA_OWNER -c $ORA_HOME/bin/dbshut

su - $ORA_OWNER -c "$ORA_HOME/bin/lsnrctl stop"

;;

esac

-----------------------------------------------------

应用这个脚本,Oracle 8 可以以参数 "start" 启动,以 "stop" 参数竣事。它相符 init 脚本的最小要求可以和 /etc/rc.d/rc 脚本联合应用。

把脚本放到 /etc/rc.d/init.d 中并运行(以 root) :

chmod +x /etc/rc.d/init.d/oracle

使你的脚本可履行。假如你担心通俗用户不雅察这个脚本,你可以设定更严格的文件权限 。只要这个脚本可以被 root 作为零丁的脚本运行就可以。

留意脚本中的两行注释:

#chkconfig: 2345 80 05

#description: Oracle 8 Server

chkconfig 必要这些行来抉择若何实现初始运行级添加办事,若何设定启动和竣事顺序的优先级。这些行指明脚本将为运行级 2、3、4、5 启动 Oracle 8 办事。别的, 启动优先权将被设定为 80 而竣事优先权设定为 05。

您可能还会对下面的文章感兴趣: