跟我学 systemd

跟我学 systemd

摘要

我的系列文档

Netkiller Architect 手札

Netkiller Developer 手札

Netkiller PHP 手札

Netkiller Python 手札

Netkiller Testing 手札

Netkiller Cryptography 手札

Netkiller Linux 手札

Netkiller Debian 手札

Netkiller CentOS 手札

Netkiller FreeBSD 手札

Netkiller Shell 手札

Netkiller Security 手札

Netkiller Web 手札

Netkiller Monitoring 手札

Netkiller Storage 手札

Netkiller Mail 手札

Netkiller Docbook 手札

Netkiller Project 手札

Netkiller Database 手札

Netkiller PostgreSQL 手札

Netkiller MySQL 手札

Netkiller NoSQL 手札

Netkiller LDAP 手札

Netkiller Network 手札

Netkiller Cisco IOS 手札

Netkiller H3C 手札

Netkiller Multimedia 手札

Netkiller Perl 手札

Netkiller Amateur Radio 手札

Netkiller DevOps 手札

您可以使用iBook阅读当前文档


目录

  • 1. 什么是 systemd
  • 2. why-为什么做
  • 3. systemd 是何时被采用的
  • 4. 那些系统使用 systemd
  • 5. system 是谁开发的
  • 6. 怎样编写systemd脚本
    • 6.1. Unit
    • 6.2. Service
    • 6.3. Install

1. 什么是 systemd

systemd是Linux电脑操作系统之下的一套中央化系统及设置管理程序(init软件),包括有守护进程、程序库跟应用软件,由Lennart Poettering带头开发。 其开发目标是提供更优秀的框架以表示系统服务间的依赖关系,并依此实现系统初始化时服务的并行启动,同时达到降低Shell的系统开销的效果,最终代替现在常用的System V与BSD风格init程序。

2. why-为什么做

与多数发行版使用的System V风格init相比,systemd采用了以下新技术:

  1. 采用Socket激活式与D-Bus激活式服务,以提高相互依赖的各服务的并行运行性能;
  2. 用cgroups代替进程ID来追踪进程,以此即使是两次fork之后生成的守护进程也不会脱离systemd的控制。

3. systemd 是何时被采用的

CentOS 7 开始系统默认使用 systemd,对于用户来说就是service被systemctl替代了。

4. 那些系统使用 systemd

基本上从 Redhat 派生出的Linux操作系统基本都切换到了 systemd,Ubuntu也采用了systemd

5. system 是谁开发的

由Lennart Poettering带头开发

6. 怎样编写systemd脚本

下面是一个启动tomcat的systemd脚本,以此脚本为例我带大家进入 systemd 的世界。

例 1. /usr/lib/systemd/system/tomcat.service

			####################################################
# Homepage: http://netkiller.github.io
# Author: netkiller<netkiller@msn.com>
# Script: https://github.com/oscm/shell
# Date: 2015-11-03
####################################################

[Unit]
Description=Apache Tomcat Web Application Container
After=network.target
After=syslog.target

[Service]
Type=forking

User=www
Group=www

#EnvironmentFile=/etc/sysconfig/tomcat
ExecStartPre="rm -rf /srv/apache-tomcat/logs/*"
ExecStart=/srv/apache-tomcat/bin/startup.sh
#ExecStartPost=

ExecStop=/srv/apache-tomcat/bin/shutdown.sh

[Install]
WantedBy=multi-user.target			

脚本安装到 /usr/lib/systemd/system/tomcat.service 下面

systemctl enable tomcat
systemctl start tomcat
systemctl stop tomcat
systemctl disable tomcat			

启用脚本的时候会创建一个符号链接

[neo@netkiller ~]# ll /etc/systemd/system/multi-user.target.wants/tomcat.service 
lrwxrwxrwx 1 root root 38 Nov  3 04:06 /etc/systemd/system/multi-user.target.wants/tomcat.service -> /usr/lib/systemd/system/tomcat.service			

6.1. Unit

Description 写一段文字描述该脚本

After 等待网络就绪后运行

6.2. Service

Type 启动类型

User, Group 运行 ExecStart 脚本的用户,相当于 su - user -c ExecStart

Environment 环境变量,EnvironmentFile 环境变量文件

ExecStartPre 开始之前运行的脚本,ExecStart 启动脚本, ExecStartPost 启动之后运行的脚本

ExecStop 停止脚本

6.3. Install

WantedBy=multi-user.target 安装到多用户模式

原文发布于微信公众号 - Netkiller(netkiller-ebook)

原文发表时间:2015-11-12

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏运维前线

kvm虚拟机挂载lvm卷

kvm虚拟机挂载lvm卷 virsh attach-disk kvm-3 /dev/vg_shkvm3/kvm-3-data vdb --driver qemu...

1707
来自专栏Golang语言社区

【Go 语言社区】GO语言练习:网络编程 ICMP 示例

1、代码 2、编译及运行 ---- 1、Go语言网络编程:ICMP示例代码 icmptest.go 1 package main 2 3 import...

3277
来自专栏ml

flume安装及配置介绍(二)

注: 环境: skylin-linux Flume的下载方式:   wget http://www.apache.org/dyn/closer.lua/flu...

32111
来自专栏蓝天

启动Hadoop HDFS时的“Incompatible clusterIDs”错误原因分析

Hadoop HDFS时的“Incompatible clusterIDs”错误原因分析.pdf

431
来自专栏pangguoming

Hadoop视频教程汇总

一 慕课网 1.Hadoop大数据平台架构与实践--基础篇(已学习) 链接:https://www.imooc.com/learn/391 2.Hadoop进阶...

4604
来自专栏杨建荣的学习笔记

linux下挂载新硬盘和分区的步骤 (50天)

今天和大家分享一下在linux下挂载新硬盘的步骤。 演示的环境基于centos [root@localhost etc]# uname -a Linux lo...

3707
来自专栏xcywt

一个简单的双向链表(C++实现)

直接上代码,亲测有用。 #ifndef __DLINK_H__ #define __DLINK_H__ /* [phead] -> [index0] -...

18810
来自专栏闵开慧

各hbase版本对hadoop各版本的支持情况

原文地址:http://hbase.apache.org/book/configuration.html#basic.prerequisites Table 2...

33813
来自专栏about云

spark2 sql读取数据源编程学习样例1

问题导读 1.dataframe如何保存格式为parquet的文件? 2.在读取csv文件中,如何设置第一行为字段名? 3.dataframe保存为表如何指定b...

4466
来自专栏大数据智能实战

如何避免spark dataframe的JOIN操作之后产生重复列(Reference '***' is ambiguous问题解决)

spark datafrme提供了强大的JOIN操作。 但是在操作的时候,经常发现会碰到重复列的问题。如下: 如分别创建两个DF,其结果如下: val df =...

2616

扫描关注云+社区