文档章节

ubuntu 16.04 service 基础要点

曾建凯
 曾建凯
发布于 2016/12/09 02:12
字数 854
阅读 994
收藏 5
点赞 2
评论 2

搞了两天,对16.04的service基本上有一个比较清晰的掌握了。16.04转用了systemd来对系统服务提供管理和控制(貌似15.04就已经转用了)。

添加一个服务(service)

添加一个服务,需要创建一个服务的定义文件放在 /lib/systemd/system 目录下,这里以 nginx.service 为例:

[Unit]
Description=The NGINX HTTP and reverse proxy server
After=syslog.target network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
PIDFile=/run/nginx.pid
ExecStartPre=/usr/sbin/nginx -t
ExecStart=/usr/sbin/nginx
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target

创建了这个文件后,还无法直接使用。

service nginx start
systemctl start nginx
systemctl start nginx.service 

执行上述的命令后,会提示以下的错误:

Job for nginx.service failed because the control process exited with error code. See "systemctl status nginx.service" and "journalctl -xe" for details.

这时候你需要重载systemd的配置列表:

systemctl daemon-reload

你可以执行以下命令,来确认你的服务是否已经加入到配置列表:

# 这个是列举所有已经存在配置文件对应的服务状态列表
systemctl list-unit-files | grep nginx
# 列举出具有加载状态的服务列表(或者理解为最近被使用的服务)
systemctl --all | grep nginx

服务操作

如果习惯了使用 service 指令,可以继续使用:

service nginx start
service nginx stop
service nginx reload
service nginx restart
service nginx status

和过去不同,现在不再需要在 /etc/init.d 目录下添加一个服务脚本了。

但实际上Ubuntu的Wiki上推荐改用:

systemctl start nginx
systemctl start nginx.service
systemctl stop nginx
systemctl reload nginx
systemctl restart nginx
systemctl status nginx

不过 systemctl (包括 service )执行以后,是没有任何特别提示,除非碰到了错误信息,否则都是静默的,也许这是为了配合 bash 脚本的设计需求。

激活/禁用系统自启动服务

再次,要将一个服务激活为系统启动时的自启动服务,现在只要执行以下命令:

systemctl enable nginx.service
systemctl enable nginx

这样就正式激活了服务系统启动时的自启动。要禁用自启动,只要disable即可。

systemctl disable nginx.service
systemctl disable nginx

你可以执行以下的命令,来检查服务是否已经激活了自启动

systemctl is-enabled nginx
# enabled/disabled

检查一个服务是否启动:

systemctl is-active nginx
# active/inactive

关于 /etc/init 目录

这个目录,其实未必真的需要添加进一个相关的控制进程启动的配置文件,这里添加的文件,和具体的服务启动没有具体的关联性,新版本的 service 配置文件,实际上已经明确了启动服务所需的必要服务和之后加载的服务。

/etc/init 目录下存放的,可以理解为一个综合性启动的脚本配置,他支持在配置文件中,使用bash代码块,比如:

# nginx

description "nginx http daemon"
author "George Shammas <georgyo@gmail.com>"

start on (filesystem and net-device-up IFACE!=lo)
stop on runlevel [!2345]

env DAEMON=/usr/sbin/nginx
env PID=/var/run/nginx.pid

expect fork
respawn
respawn limit 10 5
#oom never

pre-start script
        $DAEMON -t
        if [ $? -ne 0 ]
                then exit $?
        fi
end script

exec $DAEMON

可以理解为,对过去的启动脚本更简化版的一个启动配置文件,使用这个配置文件控制启动,还是使用 systemd 自行控制服务作为自启动,这个交给使用者去权衡吧。

这篇文章算是对这两天的知识点的一个总结吧。

© 著作权归作者所有

共有 人打赏支持
曾建凯
粉丝 323
博文 57
码字总数 90297
作品 0
广州
技术主管
加载中

评论(2)

zhangqunshi
zhangqunshi
如果init.d和service两个都设置了,那么会怎么样?
SunBeau
SunBeau
请问Failed to start test.service: Unit test.service not found.
是什么原因?test.service文件添加了
Docker 的配置文件说明

摘要: 由于 Linux 不同发行版所采用的默认管理框架的不同,Docker 在不同环境下所使用的默认配置文件也有所不同。这给初学者带来了极大的困惑和不便。好消息是,Docker 官方也意识到了这个问...

姬子玉
2017/11/27
0
0
docekr8使用Docker镜像的方法讲解

在之前的介绍中,我们知道镜像是 Docker 的三大组件之一。 Docker 运行容器前需要本地存在对应的镜像,如果本地不存在该镜像,Docker 会从镜像仓库下载该镜像。 本章将介绍更多关于镜像的内容...

王冠hurt的博客
2017/12/20
0
1
Ubuntu 16下安装zabbix agent

Ubuntu 16下安装zabbix agent , 分为三步 第一步:安装repository For Ubuntu Supported versions Ubuntu 16.04 LTS (codeame: xenial) Ubuntu 14.04 LTS (codename: trusty) Installing re......

careluck
2017/10/27
0
0
在Ubuntu 16.04上用sytemd启动OpenVPN Client的正确方式

Ubuntu 16.04默认使用systemd管理服务的启动、停止、重新启动和状态查看等。由于之前用习惯了sysv的服务管理方式,用sytemd还很不习惯,有很多不甚了了地方。今天中午准备在Ubuntu 16.04上部...

urey_pp
2017/06/15
0
0
Ubuntu 16.04 LTS 明日将发布,Canonical 公布系统新特性

Canonical今天宣布将在4月21日发布第六版Ubuntu LTS长期支持版本,并且还特别公布了有关新版系统的一些新特性。这次的系统代号叫好客的干毛地松鼠(Xenial Xerus),版本号Ubuntu 16.04 LTS,...

oschina
2016/04/21
5.7K
50
vnc连接 ubuntu 16

http://www.linuxdiyf.com/linux/21503.html Ubuntu 16.04 LTS 安装VNC,在搜索上找了很多教程,不是太老,就是说的驴唇不对马嘴,所以忍不住写一些以正视听。 Ubuntu 16.04 LTS是最近出的L...

hotsmile
2016/11/25
87
0
微软和 Canonical 合作构建定制 Linux 内核

微软与 Canonical 之间的合作关系变得更密切了。Canonical 宣布与 Microsoft Azure 合作为 Ubuntu 16.04 LTS 云镜像构建一个定制 Linux 内核。 新的定制内核将会获得与支持内核相等的安全和支...

达尔文
2017/09/25
2.3K
13
从0搭建MXNet环境

安装知识点 01 目标 在没有Linux环境的前提下,从头开始安装Linux环境与cuda 并且编译安装mxnet的gpu加速环境 及配置python接口。 02 步骤 安装ubuntu 16.04 安装cuda 8.0 安装anaconda3 编译...

云戒
2017/02/20
0
0
Ubuntu server 16.04 和 17.10 静态IP设置及安装中的坑

最近研究区块链技术,很多运行环境都是在Ubuntu平台上,以前不怎么用,结果用的时候踩了很多坑,现在写出来,免得有人再重蹈覆辙。 1、中文安装不能成功的大坑 安装服务器版时,无论是16.04...

newthink
06/26
0
0
Quirky 8.1.6,用 Woof 创建的 Linux 发行版

Quirky 8.1.6 发布了,这是一个 Puppy Linux 的姊妹项目。 新版本 Quirky 8.1.6 更新了项目的 8.1.x 系列,并与为 Ubuntu 16.04 构建的二进制包兼容。 “Quirky Linux 8.1.6 x8664 代号为 ”...

局长
2017/01/16
604
1

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Confluence 6 配置时间和日期格式

你可以修改你 Confluence 为用户显示的时期和时间格式。设置的句法使用的是 SimpleDateFormat class,请参考 Java SimpleDateFormat 文档中的内容来设置日期和时间格式。 有下面 3 个时间和日...

honeymose
11分钟前
0
0
php seralize unserialize

关于PHP 序列化(serialize)和反序列化(unserialize)出现错误(Error at offset)的解决办法。 首先我们分析一下为什么会出现这个错误: 编码问题 UTF-8: ANSI: 我发现在我的机器上边编码改...

yeahlife
17分钟前
0
0
七、JSP九大内置对象和四个作用域

九大内置对象: request:类型是HttpServletRequest,和Servlet里的HttpServletRequest一模一样。 response:类型是HttpServletResponse,和Servlet里的HttpServletResponse一模一样。JSP里基...

Wakeeee_
20分钟前
0
0
第十四章NFS服务搭建与配置

14.1 NFS介绍 NFS介绍 NFS是Network File System的缩写;这个文件系统是基于网路层面,通过网络层面实现数据同步 NFS最早由Sun公司开发,分2,3,4三个版本,2和3由Sun起草开发,4.0开始Netap...

Linux学习笔记
52分钟前
0
0
双向认证-nginx

1、设置容器 docker run -it --name nginx-test2 -v /home/nginx:/apps -v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf:ro -p 8183:80 -p 7443:443 -d nginx:stable 2、修改nginx配......

hotsmile
53分钟前
0
0
深入了解 Java 自动内存管理机制及性能优化

一图带你看完本文 一、运行时数据区域 首先来看看Java虚拟机所管理的内存包括哪些区域,就像我们要了解一个房子,我们得先知道这个房子大体构造。根据《Java虚拟机规范(Java SE 7 版)》的规...

Java大蜗牛
55分钟前
4
0
SpringBoot | 第六章:常用注解介绍及简单使用

前言 之前几个章节,大部分都是算介绍springboot的一些外围配置,比如日志 配置等。这章节开始,开始总结一些关于springboot的综合开发的知识点。由于SpringBoot本身是基于Spring和SpringMvc...

oKong
55分钟前
12
0
云数据库架构演进与实践

如今,大型企业如金融企业和银行等,在下一代的微服务架构转型要求下,需要基础软件和数据平台能够实现原生的云化,以满足微服务架构的需求。 微服务,也就是一种面向服务的,有特定边界的松...

巨杉数据库
57分钟前
0
0
Linux系统梳理---系统搭建(一):jdk卸载与安装

1.去官网下载符合Linux版本的jdk,暂用jdk-8u171-linux-x64.rpm 2.登陆Linux,进入usr目录,创建java目录(方便管理,可以其他位置):mkdir java 3.上传下载的jdk包至Linux服务器,使用rz指令(sz f...

勤奋的蚂蚁
今天
0
0
Linux Kernel 4.16 系列停止维护,用户应升级至 4.17

知名 Linux 内核维护人员兼开发人员 Greg Kroah-Hartman 近日在发布 4.16.18 版本的同时,宣布这是 4.16 系列的最后一个维护版本,强烈建议用户立即升级至 4.17 系列。 Linux 4.16 于 2018 年...

六库科技
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部