文档章节

纠正自己对systemd的一个错误认知

 阿托
发布于 2014/07/05 12:17
字数 487
阅读 523
收藏 6
点赞 0
评论 0

以前一直以为,systemd只会到/etc/systemd/system读取配置文件。要enable某个service就是copy service的配置文件到/etc/systemd/system目录下或者建一个symlinks。

昨天,想在启动时自动执行一个程序,自己写了个service文件放到/etc/systemd/system,发现没起作用。

看了一下systemd的手册

http://www.freedesktop.org/software/systemd/man/

其实下面目录都是systemd的读取目录。读取的优先次序是从上到下。

Table 1.  Load path when running in system mode (--system).
/etc/systemd/system/*
/run/systemd/system/*
/usr/lib/systemd/system/*

Table 2.  Load path when running in user mode (--user).                
$XDG_CONFIG_HOME/systemd/user/*
$HOME/.config/systemd/user/*
/etc/systemd/user/*
/run/systemd/user/*
/usr/lib/systemd/user/*

既然上面的目录都是systemd的读取目录,service的enable, disable是怎么回事呢?/usr/lib/systemd/system/下有所有安装的软件的配置,systemd如何来确定需要运行那个unit呢?

systemd的启动项是用unit文件来定义的。首先,每个unit都有Requires,Wants字段配置unit间的依赖关系。除unit文件定义外,每个unit都另外可以有一个配套的.requires/和.wants/ 目录,放到这两个目录里的unit会被隐式作为依赖项。

其次,unit文件里可以定义一个install节,描述该单元WantsBy,或RequiresBy哪个单元。当使用systemctl enable service时,就到WantsBy的单元的.wants目录建一个symlinks过来。类似的,RequiresBy也是这样。

因为/etc/systemd/system优先级最高,/etc/systemd/system目录下建立一些unit的.requires和.wants目录,然后systemctl在/etc/systemd/system对应目录下建立symlinks,就能保证不修改软件的安装文件的情况下,enable service,避免软件包升级时被覆盖。

最后,系统启动时systemd自动读取default.target这个unit,default.target定义了它的Requires和Wants,然后一路按依赖启动各项服务。





© 著作权归作者所有

共有 人打赏支持
粉丝 1
博文 17
码字总数 7308
作品 0
东城
为什么说编程认知比编程还更重要?

时隔四个月,因为各种工作的关系,有着很大量的新输入,但却一直没沉下心来,动笔输出点什么。 但是,四个月的时间所带来的成长是空前的。回过头来,我想首先对自己的过去的一些文字输出背后...

达尔文 ⋅ 2017/10/16 ⋅ 23

通往财富自由之路(02)

《通往财富自由之路(01)》总结了五条与思维和行动转变相关的观点,今天再来总结下五个最应该掌握和运用的概念。 一、注意力是你最宝贵的财富 如何定义注意力?我有如下思考。 注意力是一段...

逗之煞 ⋅ 2017/07/27 ⋅ 0

程序员进步指南:从每一天少写一点 code 开始

Google 与网络的帮助可以让你写出一行又一行的代码。不过,若你只是复制贴上,事后并没有尝试了解背后的运作机制,充其量代表了「工作完成」。 那有什么办法可以让自己进步呢?也许你可以从少...

花仲马 ⋅ 2016/08/20 ⋅ 9

我从《刻意练习》一书中学到的东西

看了两个月的刻意练习,终于有点心得,可以将知识变成指导行动的方法了,趁着还热乎,赶紧记下来! 练习,有目的的练习,刻意练习 不知道你有没有这种经历,有些人明明看起来很努力,却一直没...

闪电的蓝熊猫 ⋅ 05/27 ⋅ 0

《principles》读书总结

介绍 本书的作者是Ray Dalio,他是桥水基金的创始人,这本书中文翻译过来就叫「原则」,很简单的一个词,但其实很多时候越是重要的东西,听起来越是简单,这本书可以看做是作者六十多年人生经...

简xiaoyao ⋅ 01/07 ⋅ 0

systemd 与 sysVinit 彩版对照表

systemd 是一种新型init系统「译者注:每个操作系统都有一个启动程序,而Linux init是Linux系统操作中不可缺少的程序之一。所谓的init进程,它是一个由内核启动的用户级进程。内核自行启动(...

maxio-yu ⋅ 2015/10/27 ⋅ 0

小脑的功能是什么?

一句话总结:小脑承担运动控制中预期性的前馈控制和基于误差的监督学习这两种功能。 小脑最有意思了。首先,当然是因为它有颜值最高的神经元——普肯野细胞(题图:祖师爷圣地亚哥·拉面·尼...

Mon1st ⋅ 2016/08/31 ⋅ 0

Systemd 入门教程:实战篇

上一篇文章,介绍了 Systemd 的主要命令,这篇文章主要介绍如何使用 Systemd 来管理我们的服务,以及各项的含义; 一、开机启动 对于那些支持 Systemd 的软件,安装的时候,会自动在/usr/lib/...

linuxprobe ⋅ 2016/06/27 ⋅ 0

要做机器人的傅盛:被嘲笑的梦想才是值得追逐的 | CCF-GAIR

编者按:2016年8月12、13日,雷锋网在深圳举办了盛况空前的“全球人工智能与机器人峰会(CCF-GAIR)”,来自中美加的全球最为顶尖的科研实验室、学术权威、产业大咖、投资领袖共同探讨人工智...

亚萌 ⋅ 2016/09/23 ⋅ 0

无人车致命车祸,人车谁来背锅?MIT问了2583个人给出了这份研究

     大数据文摘作品   作者:晚君、傅一洋、小鱼、闫雨莹、龙牧雪   让我们先来做一道选择题。   司机老王开着一辆带有自动驾驶系统的车,这时道路前方突然出现了一个行人,可怕的...

大数据文摘 ⋅ 05/15 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

骰子游戏代码开源地址

因为阿里云现在服务器已经停用了,所以上面的配置已经失效。 服务端开源地址:https://gitee.com/goalya/chat4.git 客户端开源地址:https://gitee.com/goalya/client4.git 具体运行界面请参考...

算法之名 ⋅ 22分钟前 ⋅ 0

设计模式--装饰者模式

装饰者模式 定义 动态地给一个对象添加一些额外的职责。就增加功能来说,装饰模式相比生成子类更为灵活。 通用类图 意图 动态地给一个对象添加一些额外的职责。就增加功能来说,装饰模式相比...

gaob2001 ⋅ 今天 ⋅ 0

JavaScript零基础入门——(八)JavaScript的数组

JavaScript零基础入门——(八)JavaScript的数组 欢迎大家回到我们的JavaScript零基础入门,上一节课我们讲了有关JavaScript正则表达式的相关知识点,便于大家更好的对字符串进行处理。这一...

JandenMa ⋅ 今天 ⋅ 0

sbt网络问题解决方案

转自:http://dblab.xmu.edu.cn/blog/maven-network-problem/ cd ~/.sbt/launchers/0.13.9unzip -q ./sbt-launch.jar 修改 vi sbt/sbt.boot.properties 增加一个oschina库地址: [reposit......

狐狸老侠 ⋅ 今天 ⋅ 0

大数据,必须掌握的10项顶级安全技术

我们看到越来越多的数据泄漏事故、勒索软件和其他类型的网络攻击,这使得安全成为一个热门话题。 去年,企业IT面临的威胁仍然处于非常高的水平,每天都会看到媒体报道大量数据泄漏事故和攻击...

p柯西 ⋅ 今天 ⋅ 0

Linux下安装配置Hadoop2.7.6

前提 安装jdk 下载 wget http://mirrors.hust.edu.cn/apache/hadoop/common/hadoop-2.7.6/hadoop-2.7.6.tar.gz 解压 配置 vim /etc/profile # 配置java环境变量 export JAVA_HOME=/opt/jdk1......

晨猫 ⋅ 今天 ⋅ 0

crontab工具介绍

crontab crontab 是一个用于设置周期性被执行的任务工具。 周期性执行的任务列表称为Cron Table crontab(选项)(参数) -e:编辑该用户的计时器设置; -l:列出该用户的计时器设置; -r:删除该...

Linux学习笔记 ⋅ 今天 ⋅ 0

深入Java多线程——Java内存模型深入(2)

5. final域的内存语义 5.1 final域的重排序规则 1.对于final域,编译器和处理器要遵守两个重排序规则: (1)在构造函数内对一个final域的写入,与随后把这个被构造对象的引用赋值给一个引用...

江左煤郎 ⋅ 今天 ⋅ 0

面试-正向代理和反向代理

面试-正向代理和反向代理 Nginx 是一个高性能的反向代理服务器,但同时也支持正向代理方式的配置。

秋日芒草 ⋅ 今天 ⋅ 0

Spring 依赖注入(DI)

1、Setter方法注入: 通过设置方法注入依赖。这种方法既简单又常用。 类中定义set()方法: public class HelloWorldOutput{ HelloWorld helloWorld; public void setHelloWorld...

霍淇滨 ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部