参考http://www.ruanyifeng.com/blog/2016/03/systemd-tutorial-commands.html
1、service
service是一个脚本命令,分析service可知是去/etc/init.d目录下执行相关程序。service可以和chkconfig结合使用。
服务配置文件存放目录/etc/init.d/,此目录下存放着许多脚本。
service命令的使用举例:
2、systemd
centos7版本中使用了systemd,systemd同时兼容service, 因为systemd本身是一个概念,其对应的命令就是systemctl
Systemd 是 Linux 系统中最新的初始化系统(init),它主要的设计目标是克服 sysvinit 固有的缺点,提高系统的启动速度。
使用systemd的目的是获取更快的启动速度。
为了减少系统启动时间,systemd的目标是:
尽可能启动较少的进程
尽可能将更多进程并发启动
可以去查看系统进程的pid,initd的pid是0,如果支持systemd的系统的systemd进程pid为1
systemd把不同的资源称为Unit
每一个 Unit 都有一个配置文件,告诉 Systemd 怎么启动这个 Unit
存放目录:/etc/systemd/system和/usr/lib/systemd/system
对于有先后依赖关系的任务
systemctl融合service和chkconfig功能
systemctl的使用例如:
文件分为三个小节。第一个是[Unit]部分,这里仅仅有一个描述信息。
第二部分是 [Service] 定义,其中,
ExecStartPre 定义启动服务之前应该运行的命令;
ExecStart 定义启动服务的具体命令行语法。
第三部分是[Install],WangtedBy 表明这个服务是在多用户模式下所需要的。
那我们就来看下 multi-user.target 吧:
第一部分中的 Requires 定义表明 multi-user.target 启动的时候 basic.target 也必须被启动;另外 basic.target 停止的时候,multi-user.target 也必须停止。如果您接着查看 basic.target 文件,会发现它又指定了 sysinit.target 等其他的单元必须随之启动。同样 sysinit.target 也会包含其他的单元。采用这样的层层链接的结构,最终所有需要支持多用户模式的组件服务都会被初始化启动好。
在[Install]小节中有 Alias 定义,即定义本单元的别名,这样在运行 systemctl 的时候就可以使用这个别名来引用本单元。这里的别名是 default.target,比 multi-user.target 要简单一些。。。
此外在/etc/systemd/system 目录下还可以看到诸如*.wants 的目录,放在该目录下的配置单元文件等同于在[Unit]小节中的 wants 关键字,即本单元启动时,还需要启动这些单元。比如您可以简单地把您自己写的 foo.service 文件放入 multi-user.target.wants 目录下,这样每次都会被默认启动了。
最后,让我们来看看 sys-kernel-debug.mout 文件,这个文件定义了一个文件挂载点:
这个配置单元文件定义了一个挂载点。挂载配置单元文件有一个[Mount]配置小节,里面配置了 What,Where 和 Type 三个数据项。这都是挂载命令所必须的,例子中的配置等同于下面这个挂载命令:
mount –t debugfs /sys/kernel/debug debugfs
配置单元文件的编写需要很多的学习,必须参考 systemd 附带的 man 等文档进行深入学习。希望通过上面几个小例子,大家已经了解配置单元文件的作用和一般写法了。
我的总结:systemd功能更加强大,是某些linux发行版用来代替系统启动init和service的一个新的系统工具,同时还没有失去兼容对init的兼容性。几年前写下这篇文章的时候还在用centos7,如今centos8已经出来了,时光过得真的很快。
文章知识点与官方知识档案匹配,可进一步学习相关知识CS入门技能树Linux入门初识Linux24701 人正在系统学习中
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!