背景:
之前编写了一些脚本,下载了一些开源软件,想把它们做成系统服务,通过 service your_prog_name start 这样的方式来后台运行,并在开机时自动启动。
在了解了 daemon 命令之后,我发现使用它来编写这样的脚本非常方便,相关示例如下:

具体配置:
只需要将 your_prog_name 替换为你真正的脚本或执行文件的名称,将 prog_path 设置为具体的路径,以及其它的部分参数如执行用户 prog_user,以及 proc_conf 与 options 等即可。
# vim /etc/init.d/your_prog_name

#!/bin/bash
#
# chkconfig: -
# description: Starts and stops the your_prog_name daemon. . /etc/init.d/functions prog_name="your_prog_name"
prog_path="/path/to/${prog_name}"
prog_user="your_prog_user"
prog_conf="/path/to/your_prog_conf"
pidfile="/path/to/${prog_name}.pid"
options="-c ${prog_conf}" lockfile="/var/lock/subsys/${prog_name}" [ -x "${prog_path}" ] || exit
[ -r "${prog_conf}" ] || exit start(){
echo -n $"Starting ${prog_name}: "
daemon --user ${prog_user} ${prog_path} ${options}
retval=$?
prog_pid=$(pidof ${prog_path})
[ ! -z "${prog_pid}" ] && echo ${prog_pid} > ${pidfile}
echo
[ $retval -eq ] && touch ${lockfile}
return $retval
} stop(){
echo -n $"Stopping ${prog_name}: "
killproc -p ${pidfile} ${prog_name}
retval=$?
echo
[ $retval -eq ] && rm -f ${lockfile}
return $retval
} case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
sleep
start
;;
status)
status -p ${pidfile} ${prog_name}
;;
*)
echo $"Usage: $0 {start|stop|restart|status}"
exit
esac
exit $?

Script

# chmod +x /etc/init.d/your_prog_name
# chkconfig your_prog_name on

转自于:http://heylinux.com/archives/3364.html

在 CentOS 上编写 init.d service script [转]的更多相关文章

  1. Azure的CentOS上安装LIS (Linux Integration Service)

    Azure上虚拟化技术都是采用的Hyper-v,每台Linux虚拟机都安装了LIS(Linux Integration Service).LIS的功能是为VM提供各种虚拟设备的驱动.所以LIS直接影响 ...

  2. 在CentOS上使用Nginx和Tomcat搭建高可用高并发网站

    目录 目录 前言 创建CentOS虚拟机 安装Nginx 安装Tomcat 安装lvs和keepalived 反向代理 部署网站 搭建数据库 编写网站项目 解决session一致性 注意 参考资料 前 ...

  3. Centos上的安装openoffice+unoconv+swftools (转)

    ############################## #    swftools的安装     # ############################## 1.安装所需的库和组件 yum ...

  4. 在 CentOS 上安装和配置 OpenNebula

    转自:http://www.aikaiyuan.com/4889.html 我们提到的云计算一般有三种类型:软件即服务(Software as a Service, SaaS),平台即服务(Platf ...

  5. CentOS上部署Apache、MySQL和PHP

    centos上yum安装很方便,下面介绍编译安装的方式. 第一步要在CentOS上安装gcc.g++等开发工具 可以从系统光盘上安装,或者 #yum groupinstall "Develo ...

  6. SLAM+语音机器人DIY系列:(二)ROS入门——6.编写简单的service和client

    摘要 ROS机器人操作系统在机器人应用领域很流行,依托代码开源和模块间协作等特性,给机器人开发者带来了很大的方便.我们的机器人“miiboo”中的大部分程序也采用ROS进行开发,所以本文就重点对ROS ...

  7. CentOS上部署JAVA服务【转】

    http://www.th7.cn/Program/java/201511/686437.shtml 本文将介绍如何在CentOS上运行Java Web服务,其中将包括如何搭建JAVA运行环境.如何开 ...

  8. Centos上Apache重启,mysql重启,nginx重启方法

    转载:http://www.3lian.com/edu/2012/04-01/24278.html Centos上Apache重启,mysql重启, nginx 重启方法 1.重启 apache se ...

  9. 在CentOS上把MySQL从5.5升级到5.6(转)

    http://www.th7.cn/db/mysql/201408/66064.shtml 在CentOS上把MySQL从5.5升级到5.6 摘要:本文记录了在CentOS 6.3上,把MySQL从5 ...

随机推荐

  1. git出现: not a git repository

    使用用git add . 出现这样错误: fatal: not a git repository (or any of the parent directories): .git 意思是说:.git没 ...

  2. scrapy框架原理学习

    Scrapy框架原理: 参考出处:https://cuiqingcai.com/3472.html 整个Scrapy的架构图: Scrapy Engine: 这是引擎,负责Spiders.ItemPi ...

  3. python 的内存回收,及深浅Copy详解

    一.python中的变量及引用 1.1 python中的不可变类型: 数字(num).字符串(str).元组(tuple).布尔值(bool<True,False>) 接下来我们讲完后你就 ...

  4. Linux reboot与init 6区别

    Reboot与init 6的区别 - flyingcloud_2008的专栏 - CSDN博客https://blog.csdn.net/flyingcloud_2008/article/detail ...

  5. asp.net mvc 自定义全局过滤器 验证用户是否登录

    一般具有用户模块的系统都需要对用户是否登录进行验证,如果用户登录了就可以继续操作,否则退回用户的登录页面 对于这样的需求我们可以通过自定义一个独立的方法来完成验证的操作,但是这样代码的重复率就大大提高 ...

  6. react的项目坑

    首先在构造页面时 应该将页面的结构分析好. 在处理数据异步时 将数据结构进行完全的简单结构化. 使用redux时 注意返回的数据是深拷贝还是浅拷贝 否则会产生 数组不为空但是没有值的问题 使用自制数据 ...

  7. C#复习笔记(3)--C#2:解决C#1的问题(实现迭代器的捷径)

    实现迭代器的捷径 从这个题目上可以看到C#1实现一个迭代器模式的话是多么的痛苦,我自己也写过不下40行的代码来实现一个迭代器,C#中的迭代器模式是通过IEnumerable和他的泛型等价物IEnume ...

  8. [转帖]cmd批处理常用符号详解

    cmd批处理常用符号详解 https://www.jb51.net/article/32866.htm 很多符号 还是不清楚的.. 批处理能够极大的提高 工作效率 需要加强深入学习.   1.@一般在 ...

  9. [2018.05].NET Core 3 and Support for Windows Desktop Applications

    .NET Core 3 and Support for Windows Desktop Applications Richard 微软官网的内容...net 3.0 升级任务 任重道远 https:/ ...

  10. Jenkins系统上的时间不正确问题

    很简单,点击系统管理,选择执行脚本命令: 打开 [系统管理]->[脚本命令行]运行下面的命令 System.setProperty('org.apache.commons.jelly.tags. ...