用shell脚本写一个服务的启动程序
4个回答
展开全部
#!/bin/sh -------不解释了
. /etc/rc.d/init.d/functions -------执行etc下rc.d下init.d文件夹里面的functions程序
exec=/usr/sbin/atd -------赋值
prog="atd" -------赋值
config=/etc/sysconfig/atd
[ -e /etc/sysconfig/$prog ] && . /etc/sysconfig/$prog -----如果/etc/sysconfig/下存在atd文件,就执行
lockfile=/var/lock/subsys/$prog ----赋值
. /etc/rc.d/init.d/functions -------执行etc下rc.d下init.d文件夹里面的functions程序
exec=/usr/sbin/atd -------赋值
prog="atd" -------赋值
config=/etc/sysconfig/atd
[ -e /etc/sysconfig/$prog ] && . /etc/sysconfig/$prog -----如果/etc/sysconfig/下存在atd文件,就执行
lockfile=/var/lock/subsys/$prog ----赋值
展开全部
一般在/etc/init.d目录下都是各种服务的启动脚本。你可以参考着自己的程序写。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#!/bin/bash
# The next lines are for chkconfig on RedHat systems.
# chkconfig: 35 98 02
# description: Starts and stops xxx Server
# The next lines are for chkconfig on SuSE systems.
# /etc/init.d/xxx
#
### BEGIN INIT INFO
# Provides: xxx
# Required-Start: $network $syslog
# Required-Stop:
# Default-Start: 2 3 5
# Default-Stop: 0 6
# Short-Description: Starts and stops xxx Server
# Description: Starts and stops xxx Server
### END INIT INFO
case $1 in
start) # 服务启动需要做的步骤
...
;;
stop) # 服务停止需要做的步骤
...
;;
restart) # 重启服务需要做的步骤
...
;;
status) # 查看状态需要做的步骤
...
;;
*) echo "$0 {start|stop|restart|status}"
exit 4
;;
esac
参考示例,其实写一个服务脚本很简单,只要满足参数1为start|stop|restart|status的脚本都可以,注意上面以#开头的那些行,分别满足redhat和suse的要求,按照格式写就行了
写完后用chkconfig 服务名 on即可加入开机自启动服务
追问
#!/bin/sh
. /etc/rc.d/init.d/functions
exec=/usr/sbin/atd
prog="atd"
config=/etc/sysconfig/atd
[ -e /etc/sysconfig/$prog ] && . /etc/sysconfig/$prog
lockfile=/var/lock/subsys/$prog
这是一个脚本头的内容,不懂各项是什么意思
追答
/etc/rc.d/init.d/functions这个脚本是给/etc/init.d里边的文件使用的,其实就是一些shell函数,提
供了一些基础的功能,并不是必需的,可以引用也可以不引用,如果引用了,那就可以使用下列的功能:
首先会设置umask,path,还有语言环境,然后会设置
success,failure,warning,normal几种情况下的字体颜色。
提供的重要方法:
checkpid:检查是否已 存在pid,如果有一个存在,返回0(通过查看/proc目录)
daemon:启动某个服务。/etc/init.d目录部分脚本的start使用到这个
killproc:杀死某个进程。/etc/init.d目录部分脚本的stop使用到这个
pidfileofproc:寻找某 个进程的pid
pidofproc:类似上面的,只是还查找了pidof命令
status:返回一个服务的状态
echo_success,echo_failure,echo_passed,echo_warning 分别输出各类信息
success,failure,passed,warning分别记录日志并调用相应的方法
action:打印某个信 息并执行给定的命令,它会根据命令执行的结果来调用 success,failure方法
strstr:判断$1是否含有$2
confirm: 显示 "Start service $1 (Y)es/(N)o/(C)ontinue?
[Y]"的提示信息,并返回选择结果
另外几行是与atd这个服务相关的一些语句,例如指定配置文件,可执行文件之类的,与你自定义的服务没有关系,可以删掉。
如果要进一步了解系统服务脚本的写法,可以参见这个网址:
http://refspecs.linux-foundation.org/LSB_3.2.0/LSB-Core-generic/LSB-Core-generic/iniscrptact.html
总之,一个服务脚本,可以简单到只有几行代码,也可以复杂到几百行,可以引入init-functions,以写出类似系统自带服务的那种效果(启动时有绿色的OK字样或红色的fail字样),也可以不引入,只要能完成启动、停止、重启动、查看状态这几个基本方法即可。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询