跳过导航链接 | |
退出打印视图 | |
在 Oracle Solaris 11.1 中管理服务和故障 Oracle Solaris 11.1 Information Library (简体中文) |
以下过程说明如何使用运行控制脚本来停止或启动传统服务。此外还提供了有关添加或删除运行控制脚本的说明。
以下任务列表包括几个与使用运行控制脚本相关的过程。每行都包含一个任务、关于执行该项任务的时间说明,以及指向该任务的链接。
|
# /etc/init.d/filename stop
# /etc/init.d/filename start
# pgrep -f service
示例 2-19 使用运行控制脚本停止或启动服务
例如,可以通过键入以下命令来停止 PPPoE 服务器守护进程:
# /etc/init.d/pppd stop # pgrep -f nfs
然后,可以通过键入以下命令来重新启动 PPPoE 服务器守护进程:
# /etc/init.d/pppd start # pgrep -f ppp 101748 # pgrep -f ppp -d, | xargs ps -fp UID PID PPID C STIME TTY TIME CMD daemon 101748 1 0 Sep 01 ? 0:06 /usr/lib/inet/pppoed
如果要添加用来启动和停止服务的运行控制脚本,请将该脚本复制到 /etc/init.d 目录中。然后,在要从其中启动和停止服务的 rcn .d 目录中创建链接。
有关命名运行控制脚本的更多信息,请参见每个 /etc/rc n.d 目录中的 README 文件。以下过程介绍如何添加运行控制脚本。
# cp filename/etc/init.d # chmod 0744 /etc/init.d/filename # chown root:sys /etc/init.d/filename
# cd /etc/init.d # ln filename /etc/rc2.d/Snnfilename # ln filename /etc/rcn.d/Knnfilename
# ls /etc/init.d/*filename /etc/rc2.d/*filename /etc/rcn.d/*filename
示例 2-20 添加运行控制脚本
以下示例显示如何为 xyz 服务添加运行控制脚本。
# cp xyz /etc/init.d # chmod 0744 /etc/init.d/xyz # chown root:sys /etc/init.d/xyz # cd /etc/init.d # ln xyz /etc/rc2.d/S99xyz # ln xyz /etc/rc0.d/K99xyz # ls /etc/init.d/*xyz /etc/rc2.d/*xyz /etc/rc0.d/*xyz
通过在文件名开头加一个下划线 (_) 来重命名运行控制脚本可以禁用该运行控制脚本。系统不执行以下划线或点开头的文件。如果通过为文件添加后缀的方法来复制该文件,那么,带后缀和不带后缀的文件都将运行。
# cd /etc/rcn.d # mv filename_filename
# ls _* _filename
示例 2-21 禁用运行控制脚本
以下示例显示如何重命名 S99datainit 脚本。
# cd /etc/rc2.d # mv S99datainit _S99datainit # ls _* _S99datainit
以下过程说明如何充分利用 SMF 的优点来支持现有的运行控制脚本。有关更多信息,请参见 svcbundle (1M) 手册页。
开始之前
首先,确定脚本需要使用何种服务模型。如果脚本执行一些任务然后退出,而不启动任何长时间运行的进程,则它很可能是瞬态服务。如果脚本启动长时间运行的守护进程然后退出,则它是合同服务。有关服务模型的更多信息,请参见 svc.startd(1M) 手册页的“持续时间”部分。
下一步确定适用于服务的运行级别。这可以通过查看脚本链接到哪个目录来确定,例如 /etc/rc3.d 目录。
在此示例中,服务名称为 ex_svc。这是合同服务,运行级别为 3。
# svcbundle -o /tmp/ex_svc.xml -s service-name=ex_svc -s start-method=/lib/svc/method/ex_svc -s model=transient
验证在 /tmp/ex_svc.xml 中的清单内容是您所需的。
# cp /tmp/ex_svc.xml /lib/svc/manifest/site/ex_svc.xml
# /etc/init.d/ex_svc stop
从相应的 rc n.d 目录中删除指向运行控制脚本的链接。
# svcadm restart svc:/system/manifest-import