多不说,直接上代码(可谓配置):

[Unit]
Description=demo app
After=network-is-online.target [Service]
Type=Simple
ExecStart=/usr/bin/demo [Install]
WantedBy=multi-user.target

:表达的意思是在network已经online情况下则启动该服务,如果上述文件为/lib/systemd/system/下的demo_app.service,则启动。

tips:

cd /lib/systemd/system
systemctl is-enabled demo_app.service
systemctl enable demo_app.service

1. systemd崛起

聊聊linux系统的应用启动服务的机制:

sysinit -> upstart -> systemd

systemd 主要是针对sysinit“发热而生”,所谓热则是/etc/init.d/xxx.sh,运行一连串的shell,以串行的机制无休止running脚本,弊端颇多。

2. systemd基本过程

核心是通过套接字进行激活通讯的,简单点则是套接字trigger一切/下一个服务,不存在依赖关系。
套接字用socket,表示为------>: A. ------>B ------> D
\
\
------>C ------> E
T1 T2 T3 Ts = T3 - T1
对比串行则
A - > B T2-T1
A - > C T2-T1
B - > D T3-T2
C - > E T3-T2 Ti = 2(T3-T1) = 2 Ts

3. 应用更加广泛,请看下eg

[Unit]
Description=demo app
After=network-on-line.target
Before=mysql-running.target [Service]
Type=Simple
ExecStart=/usr/bin/demo [Install]
WantedBy=multi-user.target

在network启动后启动demo,在mysql启动前启动demo,保证demo需要用到网络,但是不需要等mysql(启动完3s)才开始该服务。(纯属假定场景)

至于.target怎么形成,下文继续分解。

浅谈systemd原理和应用的更多相关文章

  1. 浅谈xss原理

    近日,论坛上面XSS满天飞,各处都能够见到XSS的痕迹,前段时间论坛上面也出现了XSS的迹象.然后我等小菜不是太懂啊,怎么办?没办法仅仅有求助度娘跟谷歌这对情侣了. 能够说小菜也算懂了一些.不敢藏私, ...

  2. 浅谈 zookeeper 原理,安装和配置

    当前云计算流行, 单一机器额的处理能力已经不能满足我们的需求,不得不采用大量的服务集群.服务集群对外提供服务的过程中,有很多的配置需要随时更新,服务间需要协调工作,那么这些信息如何推送到各个节点?并且 ...

  3. [Hadoop]浅谈MapReduce原理及执行流程

    MapReduce MapReduce原理非常重要,hive与spark都是基于MR原理 MapReduce采用多进程,方便对每个任务资源控制和调配,但是进程消耗更多的启动时间,因此MR时效性不高.适 ...

  4. 浅谈AQS原理

    一.AQS介绍 AQS,即AbstractQueuedSynchronizer, 抽象队列同步器,它是Java多线程模块用来构建锁和其他同步组件的基础框架.来看下同步组件对AQS的使用: AQS是一个 ...

  5. ConcurrentHashMap——浅谈实现原理及源码

    本文整理自漫画:什么是ConcurrentHashMap? - 小灰的文章 - 知乎 .已获得作者授权. HashMap 在高并发下会出现链表环,从而导致程序出现死循环.高并发下避免HashMap 出 ...

  6. 浅谈HashMap原理,记录entrySet中的一些疑问

    HashMap的底层的一些变量: transient Node<K,V>[] table; //存储数据的Node数组 transient Set<java.util.Map.Ent ...

  7. 浅谈Promise原理与应用

    在JavaScript中,所有代码都是单线程.由于该“缺陷”,JavaScript在处理网络操作.事件操作时都是需要进行异步执行的.AJAX就是一个典型的异步操作 对于异步操作,有传统的利用回调函数和 ...

  8. 浅谈CAS(Compare and Swap) 原理

    浅谈CAS原理java并发编程也研究了一段时间了,对CAS的原理总是不太理解,今天再研究了一下,记录一些自己的理解.    说到CAS,再java中的某些情况下,甚至jdk1.5以后的大多数情况,并发 ...

  9. MVC5-11 浅谈拦截器

    Filter拦截器 Aop是MVC的主要设计方式之一,而微软也希望我们在使用MVC的时候更好的使用拦截器来进行切面编程.拦截器则是Mvc中的一大亮点与重点 AOP(面向切面)编程已经广泛应用在各个项目 ...

随机推荐

  1. 关于tomcat 访问80端口失效 阿里云问题版

    可能有朋友在配置完阿里云  配置好服务器发现 使用默认80端口访问网址失效 用8080依然失效  - -放心你用什么都会失效 并且你怎么杀接口也没用 答案就是 你的里面绝对没有80 和8080  你没 ...

  2. Zookeeper基础入门

    Zookeeper简介 基本概念 Zookeeper是一个开源的分布式协调服务.其设计目标是将那些复杂的容易出错的分布式一致性服务封装起来,以简单的接口提供给用户使用.它是一个典型的分布式数据一致性的 ...

  3. Django框架表关系外键-多对多外键(增删改查)-正反向的概率-多表查询(子查询与联表查询)

    目录 一:表关系外键 1.提前创建表关系 2.目前只剩 书籍表和 书籍作者表没创建信息. 3.增 4.删 5.修改 二:多对多外键增删改查 1.给书籍绑定作者 2.删 3.修改 4.清空 三:正反向的 ...

  4. NTLK情感分析安装与使用的两种方式 nltk-python

    下载安装到实战详细步骤 NLTK下载安装 先使用pip install nltk 安装包 然后运行下面两行代码会弹出如图得GUI界面,注意下载位置,然后点击下载全部下载了大概3.5G. import ...

  5. WCF学习笔记——Day1:一个WCF demo

    Visual Studio2017,使用IIS托管.文中涉及一些WCF的基本概念,e.g.服务契约.托管等.可以先阅读<WCF服务编程>第一章. 1.新建一个WCF服务库(WCF Serv ...

  6. Java课程设计---安装Mysql及管理工具

    1.安装mysql 没有安装包的可以在这个地址下载:https://dev.mysql.com/downloads/mysql/5.5.html 双击提供的安装包 (安装路径可以不用更改) 在弹出的窗 ...

  7. 【.NET6+WPF】WPF使用prism框架+Unity IOC容器实现MVVM双向绑定和依赖注入

    前言:在C/S架构上,WPF无疑已经是"桌面一霸"了.在.NET生态环境中,很多小伙伴还在使用Winform开发C/S架构的桌面应用.但是WPF也有很多年的历史了,并且基于MVVM ...

  8. P4-可编程语言代码学习

    (1).behavioral-model 简称bmv2 P4程序首先经过p4c-bm模块编译成JSON格式的配置文件,然后将配置文件载入到bmv2中,转化成能实现交换机功能的数据结构. behavio ...

  9. 4.Profile(多环境配置)

    在实际的项目开发中,一个项目通常会存在多个环境,例如,开发环境.测试环境和生产环境等.不同环境的配置也不尽相同,例如开发环境使用的是开发数据库,测试环境使用的是测试数据库,而生产环境使用的是线上的正式 ...

  10. QT:Qt Creator使用CTRL+C后变成了光标覆盖,插入模式

    菜单栏→工具→选项→FakeVim→取消勾选"使用FakeVim"