用 systemd 管理进程
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用 systemd 管理进程相关的知识,希望对你有一定的参考价值。
参考技术A 我们有很多的后台进程在运行,我们把这些进程放到screen里面运行,如果服务器不重启的情况先可以很好的进行。
如果服务器重启的时候,就非常的麻烦要手动器启动screen里面的进程。
我们的进程有一些特点,几乎是类似的,所有我们通过写脚本自动生成我们的配置文件,如下:
于是我们的配置文件只要调用 gen_service 就可以直接生成
生成很多的配置文件,我们一个一个去 enable 挺麻烦的,需要用脚本一次性启用如下:
我们同样用脚本一次性启动
用了 systemd 管理进程我们就不用担心机器重启,或者进程挂掉这种情况发生了,他会自动帮我们重新启动。
对于一些隔一段时间运行的进程,也可以通过 systemd 很好的解决。
Linux里面systemd是啥?
Systemctl是一个systemd工具,主要负责控制systemd系统和服务管理器。Systemd是一个系统管理守护进程、工具和库的集合,用于取代System V初始进程。Systemd的功能是用于集中管理和配置类UNIX系统。
启动及服务
大多数主流发行版要么已经采用 Systemd,要么即将在下个发布中采用(如 Debian 和 Ubuntu)。在本教程中,我们使用 Fedora 21(该发行版已经是 Systemd 的优秀实验场地)的一个预览版进行演示,但不论您用哪个发行版,要用到的命令和注意事项都应该是一样的。这是 Systemd 的一个加分点:它消除了不同发行版之间许多细微且琐碎的区别。
在终端中输入 ps ax | grep systemd,看到第一行,其中的数字 1 表示它的进程号是1,也就是说它是 Linux 内核发起的第一个程序。因此,内核一旦检测完硬件并组织好了内存,就会运行 /usr/lib/systemd/systemd 可执行程序,这个程序会按顺序依次发起其他程序。(在还没有 Systemd 的日子里,内核会去运行 /sbin/init,随后这个程序会在名为 SysVinit 的系统中运行其余的各种启动脚本。)
Systemd 的核心是一个叫单元unit的概念,它是一些存有关于服务service(在运行在后台的程序)、设备、挂载点、和操作系统其他方面信息的配置文件。Systemd 的其中一个目标就是简化这些事物之间的相互作用,因此如果你有程序需要在某个挂载点被创建或某个设备被接入后开始运行,Systemd 可以让这一切正常运作起来变得相当容易。(在没有 Systemd 的日子里,要使用脚本来把这些事情调配好,那可是相当丑陋的。)要列出您 Linux 系统上的所有单元,输入以下命令:
systemctl list-unit-files
现在,systemctl 是与 Systemd 交互的主要工具,它有不少选项。在单元列表中,您会注意到这儿有一些格式化:被启用enabled的单元显示为绿色,被禁用disabled的显示为红色。标记为“static”的单元不能直接启用,它们是其他单元所依赖的对象。若要限制输出列表只包含服务,使用以下命令:
systemctl list-unit-files --type=service
注意,一个单元显示为“enabled”,并不等于对应的服务正在运行,而只能说明它可以被开启。要获得某个特定服务的信息,以 GDM (Gnome Display Manager) 为例,输入以下命令:
systemctl status gdm.service
这条命令提供了许多有用的信息:一段给人看的服务描述、单元配置文件的位置、启动的时间、进程号,以及它所从属的 CGroups(用以限制各组进程的资源开销)。
如果您去查看位于 /usr/lib/systemd/system/gdm.service 的单元配置文件,您可以看到各种选项,包括要被运行的二进制文件(“ExecStart”那一行),相冲突的其他单元(即不能同时进入运行的单元),以及需要在本单元执行前进入运行的单元(“After”那一行)。一些单元有附加的依赖选项,例如“Requires”(必要的依赖)和“Wants”(可选的依赖)。
此处另一个有趣的选项是:
Al Alias=display-manager.service
当您启动 gdm.service 后,您将可以通过 systemctl status display-manager.service 来查看它的状态。当您知道有显示管理程序display manager在运行并想对它做点什么,但您不关心那究竟是 GDM,KDM,XDM 还是什么别的显示管理程序时,这个选项会非常有用。
使用 systemctl status 命令后面跟一个单元名,来查看对应的服务有什么情况。 参考技术A system吧 系统的意思 本身的系统吧 参考技术B systemd是linux下的一款系统和服务管理器,为什么要使用systemd ? 在rpm包二进制方式安装的linux软件中,使用init守护进程进行服务状态的管理或者 使用service命令 例如启动Mysql数据库可以是 /etc/init.d/mysql start 或者service mysql start.具体介绍可查阅相关资料,如《Linux就该这么学》。 参考技术C systemd是linux下的一款系统和服务管理器,为什么要使用systemd ? 在rpm包二进制方式安装的linux软件中,使用init守护进程进行服务状态的管理或者 使用service命令 例如启动Mysql数据库可以是 /etc/init.d/mysql start 或者service mysql start.
使用linux init进程进行管理服务的时候有两个缺点:
1.init系统进程是串行执行的,也就是同步的 ,只有前一个进程启动完成,才会启动下一进程。
2.启动脚步复杂,init进程是只执行启动脚步,不管其他的任务
使用Systemd优点:
1.Systemd支持并行化任务,
2.同时采用socket于D-Bus总线式激活服务,按需启动守护进程(daemon)
在新版的Linux系统中都在使用sytemd 进行管理 例如(Ubuntu 16、Debian 8、CentOS 7)
更多Linux知识请查看《Linux就该这么学》。 参考技术D 不知道这里面是什么呀?我也不知道他的意思是什么,还是上网查一查吧,我的英语不好啊!
以上是关于用 systemd 管理进程的主要内容,如果未能解决你的问题,请参考以下文章