用shell脚本写一个服务的启动程序

 我来答
雷飙AN
2014-02-26 · TA获得超过133个赞
知道答主
回答量:59
采纳率:0%
帮助的人:23.8万
展开全部
#!/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 ----赋值
小米飞猫
2014-02-26 · 专注于IT监控领域技术
小米飞猫
采纳数:1651 获赞数:4811

向TA提问 私信TA
展开全部
一般在/etc/init.d目录下都是各种服务的启动脚本。你可以参考着自己的程序写。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
秒懂百科
2020-12-25 · TA获得超过5.9万个赞
知道大有可为答主
回答量:25.3万
采纳率:88%
帮助的人:1.2亿
展开全部

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
动力不强
推荐于2017-11-26 · TA获得超过554个赞
知道小有建树答主
回答量:445
采纳率:0%
帮助的人:366万
展开全部
#!/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字样),也可以不引入,只要能完成启动、停止、重启动、查看状态这几个基本方法即可。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式