ubuntu 配置服务service

1、在/etc/init.d/ 下以管理员权限新建文件,在本例中为location_server.

2、使用以下模板修改启动脚本的内容

[php]  view plain copy
  1. #!/bin/bash  
  2. ### BEGIN INIT INFO  
  3. #  
  4. # Provides:  location_server  
  5. # Required-Start:   $local_fs  $remote_fs  
  6. # Required-Stop:    $local_fs  $remote_fs  
  7. # Default-Start:    2 3 4 5  
  8. # Default-Stop:     0 1 6  
  9. # Short-Description:    initscript  
  10. # Description:  This file should be used to construct scripts to be placed in /etc/init.d.  
  11. #  
  12. ### END INIT INFO  
  13.   
  14. ## Fill in name of program here.  
  15. PROG="location_server"  
  16. PROG_PATH="/opt/location_server" ## Not need, but sometimes helpful (if $PROG resides in /opt for example).  
  17. PROG_ARGS=""   
  18. PID_PATH="/var/run/"  
  19.   
  20. start() {  
  21.     if [ -e "$PID_PATH/$PROG.pid" ]; then  
  22.         ## Program is running, exit with error.  
  23.         echo "Error! $PROG is currently running!" 1>&2  
  24.         exit 1  
  25.     else  
  26.         ## Change from /dev/null to something like /var/log/$PROG if you want to save output.  
  27.         $PROG_PATH/$PROG $PROG_ARGS 2>&1 >/var/log/$PROG &  
  28.     $pid=`ps ax | grep -i 'location_server' | sed 's/^\([0-9]\{1,\}\).*/\1/g' | head -n 1`  
  29.   
  30.         echo "$PROG started"  
  31.         echo $pid > "$PID_PATH/$PROG.pid"  
  32.     fi  
  33. }  
  34.   
  35. stop() {  
  36.     echo "begin stop"  
  37.     if [ -e "$PID_PATH/$PROG.pid" ]; then  
  38.         ## Program is running, so stop it  
  39.     pid=`ps ax | grep -i 'location_server' | sed 's/^\([0-9]\{1,\}\).*/\1/g' | head -n 1`  
  40.     kill $pid  
  41.           
  42.         rm -f  "$PID_PATH/$PROG.pid"  
  43.         echo "$PROG stopped"  
  44.     else  
  45.         ## Program is not running, exit with error.  
  46.         echo "Error! $PROG not started!" 1>&2  
  47.         exit 1  
  48.     fi  
  49. }  
  50.   
  51. ## Check to see if we are running as root first.  
  52. ## Found at http://www.cyberciti.biz/tips/shell-root-user-check-script.html  
  53. if [ "$(id -u)" != "0" ]; then  
  54.     echo "This script must be run as root" 1>&2  
  55.     exit 1  
  56. fi  
  57.   
  58. case "$1" in  
  59.     start)  
  60.         start  
  61.         exit 0  
  62.     ;;  
  63.     stop)  
  64.         stop  
  65.         exit 0  
  66.     ;;  
  67.     reload|restart|force-reload)  
  68.         stop  
  69.         start  
  70.         exit 0  
  71.     ;;  
  72.     **)  
  73.         echo "Usage: $0 {start|stop|reload}" 1>&2  
  74.         exit 1  
  75.     ;;  
  76. esac  
其中,PROG变量为所要运行的可执行程序的名称, PROG_PATH为可执行文件所在的目录,PROG_ARGS为执行程序的各个参数。

需要注意的是,在stop()函数中利用kill命令结束进程,有两种方法可以处理,一种是利用进程名称,如“location_server"查找相应的进程号,然后调用kill <进程号>结束进程,另一种方法是直接使用killall <进程名称>,但是在这种方法下,本启动脚本的名称不能和可执行文件的名称相同,不然的话,stop后会出现”Terminated“说明脚本也被kill掉。也可以在start()中将进程号存储在.pid文件中,然后在stop()中从文件中取得要结束的进程号,但是这样的话,还想获得的进程号会比实际进程号小2,现在还不知道是什么原因。

3、添加删除服务

添加: sudo update-rc.d 服务名 defaults

删除:sudo update-rc.d -f 服务名 remove


4、启动、关闭、重启服务

/etc/init.d/服务名 start

/etc/init.d/服务名 stop

/etc/init.d/服务名 start


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值