Sun Solaris 开机自启配置
1. 运行级别定义(rc0.d — rcS.d)
Linux/Solaris
系统启动相关目录、脚本说明:
init
: 系统启动超级进程inittab
: 进程启动配置init.d
: 启动脚本存放目录rc0---rc6
: 运行级别目录rcS
: 单用户模式启动脚本
Linux/Solaris
中rc0.d
, rc1.d
, rc2.d
, rc3.d
, rc4.d
, rc5.d
rc6.d
和 rcS.d
分别对应特定的运行级别目录:
rc0.d
: 硬件维护模式或关机(运行级别 0)rc1.d
: 单用户模式(运行级别 1)rc2.d
: 多用户模式,没有网络服务(运行级别 2)rc3.d
: 多用户模式,带网络服务(运行级别 3)rc4.d
: 未分配 (可以由用户自定义)rc5.d
: 图形界面模式(运行级别 5)rc6.d
: 重启(运行级别 6)rcS.d
: 单用户模式启动脚本
Solaris运行级别配置文件如下:
rc2.d
下的启动脚本
在这些目录中,通常包含以 K
开头的符号链接和以 S
开头的符号链接。K
表示 "Kill"
,即停止对应的服务,而 S
表示 "Start"
,即启动对应的服务。这些符号链接指向 /etc/init.d/
目录中的服务脚本,从而实现对服务的管理。
如 Solaris
rc2.d
运行级别下的启动脚本如下:
kalami@solaris:/etc/rc2.d$ ls
README S01rsyslog S02atd S02exim4 S02openbsd-inetd S02vsftpd S03lightdm S05rc.local
S01bootlogs S02acpid S02cron S02hddtemp S02speech-dispatcher S03avahi-daemon S03network-manager S05rmnologin
S01motd S02anacron S02dbus S02ntp S02ssh S03bluetooth S04saned
init.d
目录下的自启动脚本文件
kalami@solaris:/etc/init.d$ ls
acpid checkfs.sh hddtemp lm-sensors networking rc.local sendsigs udev-finish
alsa-utils checkroot-bootclean.sh hostname.sh motd network-manager rcS setcom.sh umountfs
anacron checkroot.sh hwclock.sh mountall-bootclean.sh nfs-common README setcom.sh-- umountnfs.sh
atd console-setup kbd mountall.sh ntp reboot single umountroot
avahi-daemon cron keyboard-setup mountdevsubfs.sh openbsd-inetd rmnologin skeleton urandom
bluetooth dbus killprocs mountkernfs.sh pppd-dns rpcbind speech-dispatcher vsftpd
bootlogs exim4 kmod mountnfs-bootclean.sh procps rsyslog ssh x11-common
bootmisc.sh halt lightdm mountnfs.sh rc saned udev
2. 脚本命名字典规则
系统自启动脚本文件名解析:
kalami@solaris>cd /etc/rc2.d/
kalami@solaris>ls
README S01rsyslog S02atd S02exim4 S02openbsd-inetd S02vsftpd S03lightdm S05rc.local
S01bootlogs S02acpid S02cron S02hddtemp S02speech-dispatcher S03avahi-daemon S03network-manager S05rmnologin
S01motd S02anacron S02dbus S02ntp S02ssh S03bluetooth S04saned
以 S02vsftpd
为例:
S
表示start
,K
表示kill
。S02vsftpd
中的02
表示启动顺序,启动顺序不仅取决于数字,还取决于字母(就是数字字母组合)。所以完整的启动顺序应该是字典中的顺序决定。vsftpd
为脚本名词,通过名称知道启动什么服务。
注意: 脚本的启动顺序为数字字母组合,所以启动顺序的先后取决于字典值的先后顺序。
3. 开机自启脚本配置
以ntp
服务为例,演示如何配置开机自启。
【1】. ntp服务开机自启配置
创建ntp
服务启动脚本, 编辑/etc/init.d/ntp
文件,内容如下:
#!/bin/sh### BEGIN INIT INFO
# Provides: ntp
# Required-Start: $network $remote_fs $syslog
# Required-Stop: $network $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop:
# Short-Description: Start NTP daemon
### END INIT INFOPATH=/sbin:/bin:/usr/sbin:/usr/bin. /lib/lsb/init-functionsDAEMON=/usr/sbin/ntpd
PIDFILE=/var/run/ntpd.pidtest -x $DAEMON || exit 5if [ -r /etc/default/ntp ]; then. /etc/default/ntp
fiif [ -e /var/lib/ntp/ntp.conf.dhcp ]; thenNTPD_OPTS="$NTPD_OPTS -c /var/lib/ntp/ntp.conf.dhcp"
fiLOCKFILE=/var/lock/ntpdatelock_ntpdate() {if [ -x /usr/bin/lockfile-create ]; thenlockfile-create $LOCKFILElockfile-touch $LOCKFILE &LOCKTOUCHPID="$!"fi
}unlock_ntpdate() {if [ -x /usr/bin/lockfile-create ] ; thenkill $LOCKTOUCHPIDlockfile-remove $LOCKFILEfi
}RUNASUSER=ntp
UGID=$(getent passwd $RUNASUSER | cut -f 3,4 -d:) || true
if test "$(uname -s)" = "Linux"; thenNTPD_OPTS="$NTPD_OPTS -u $UGID"
ficase $1 instart)log_daemon_msg "Starting NTP server" "ntpd"if [ -z "$UGID" ]; thenlog_failure_msg "user \"$RUNASUSER\" does not exist"exit 1filock_ntpdatestart-stop-daemon --start --quiet --oknodo --pidfile $PIDFILE --startas $DAEMON -- -p $PIDFILE $NTPD_OPTSstatus=$?unlock_ntpdatelog_end_msg $status;;stop)log_daemon_msg "Stopping NTP server" "ntpd"start-stop-daemon --stop --quiet --oknodo --pidfile $PIDFILElog_end_msg $?rm -f $PIDFILE;;restart|force-reload)$0 stop && sleep 2 && $0 start;;try-restart)if $0 status >/dev/null; then$0 restartelseexit 0fi;;reload)exit 3;;status)status_of_proc $DAEMON "NTP server";;*)echo "Usage: $0 {start|stop|restart|try-restart|force-reload|status}"exit 2;;
esac
创建开机自启动配置脚本,创建/etc/rc2.d/S02ntp
即可,其中的S02ntp
中的 ntp
与 /etc/init.d/ntp
文件名称要一致。