ubuntu service功能

1 什么是Ubuntu的Service

网上很多资料说, service就是linux中随开机自启动的, 并且在后台运行的程序. 个人认为, 至少对于Ubuntu来说, 
这个说法是不太准确的, 这只不过是一种大家使用上的习俗而已. 起始, Service既不一定在后台运行, 也不一定随开机自启动. 举例说明: 比如我们在终端键入: sudo service apache2 restart来重启apache服务, 本文介绍的Service, 指的是这里的这个service. 那么什么是service呢
? 按照man service的说明, service本身是个命令, 这个service命令是用来启动service服务的, 其语法格式为: service SCRIPT COMMAND [OPTIONS] 其解释为: service运行一个位于/etc/init.d/下的脚本SCRIPT,
或者是一个位于/etc/init下upstart程序. upstart是ubuntu中用来代替以前的sysvinit的启动程序(笔者猜测可能是由于以前svsvinit中叫做startup, 所以现在较upstart). 本文先介绍/etc/init.d下的服务, 说明一下怎么手动的添加一个服务, 并且让它自启动(如果你需要的话). 本文这是简单并且直观的介绍一下service, 并不一定所有概念都准确, 如果读者想要更加准确的概念和更加全面的方法, 可以网上自己搜, 遍地都是

2,手动添加一个服务

基于上面的解释, 其实添加一个服务很简单, 只需要添加一个脚本到/etc/init.d/并赋予它可执行权限即可. 如
sudo touch /etc/init.d/hello
chmod +x /etc/init.d/hello

这是ubuntu就认为有个叫hello的服务了. 可以试试键入sudo service hell 再敲TAB键,

这时候应该就可以tab出来hello了, 这说明系统已经识别出来它是一个服务了. 如果此时报错: hello.service not found, 则可能需要执行一下:

sudo update-rc.d hello defaults

下面来测试一下, 在hello中加入一行:

#!/bin/bash
echo "hello"

第一行的"#!/bin/bash"一定要有, 否则有可能会报错.

然后运行命令:

sudo service hello start

这时便会打印输出hello(如果没有打印可以尝试用sudo systemctl status sss.service查看).

如果hello中的命令为echo "hello" $1, 则会打印hello start.

可见, 我们平时输入的sudo service xxx start中的start, 也就是man中说的COMMAND, 只不过是service传给xxx服务的第一个参数而已.

至此, 我们已经有了一个可以简单显示hello的服务, 但是它不会自动启动, 这就如前文所说的, 服务不一定非要随开机自启动的. 后文会介绍如何添加自启动.

3 service start / stop

下面我们介绍如何添加service的start / stop等, 其实很简单, 只需要在上文所建的/etc/init.d/hello加入:
case "$1" in
    start)
        echo start
        ;;
    stop)
        echo stop
        ;;
    restart)
        echo restart
        ;;
esac

 

 

posted @ 2018-11-23 15:31  forjie  阅读(436)  评论(0编辑  收藏  举报