linux 的 systemctl指令怎么用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux 的 systemctl指令怎么用相关的知识,希望对你有一定的参考价值。

stemctl命令是自systemd出现以来被广泛讨论的命令。
Systemd 的很多概念来源于苹果 Mac OS 操作系统上的

launchd.

systemd 引入了新的配置方式,对应用程序的开发也有一些

新的要求。

init 系统的一个重要职责就是负责跟踪和管理服务进程的生

命周期。
systemd 则利用了 Linux 内核的特性即 CGroup 来完成跟踪

的任务。当停止服务时,通过查询 CGroup,systemd 可以确

保找到所有的相关进程,从而干净地停止服务。

CGroup 提供了类似文件系统的接口,使用方便。当进程创建

子进程时,子进程会继承父进程的 CGroup。
因此无论服务如何启动新的子进程,所有的这些相关进程都

会属于同一个 CGroup,systemd 只需要简单地遍历指定的

CGroup 即可正确地找到所有的相关进程,将它们一一停止即

可。

用systemd命令来管理Linux系统

systemctl status dnsmasq.service
systemctl reload sshd
systemctl restart dnsmasq
systemctl stop dnsmasq
systemctl start dnsmasq
systemctl list-units -t service
systemctl --failed
如果你想以进程初始化所占用时间排序打印出所有正在运行

的单元列表,那么systemd-analyze命令可以帮助你完成这个

任务。

systemctl start rpcbind(如果这个服务不启动,nfs服务

会启动失败)
systemctl start nfs-server
systemctl enable rpcbind;systemctl enable nfs-server

开机自启
firewall-cmd --permanent --add-service=nfs 让防火墙通

过NFS服务
firewall-cmd --permanent --add-service=rpc-bind 通过

rpc服务(如果不开启,rpcinfo就不能扫描)
firewall-cmd --permanent --add-service=mountd 通过

mountd服务(如果不开启,不能远程showmount)
firewall-cmd --reload
参考技术A Systemctl是一个systemd工具,主要负责控制systemd系统和服务管理器。
Systemd是一个系统管理守护进程、工具和库的集合,用于取代System V初始进程。Systemd的功能是用于集中管理和配置类UNIX系统。
在Linux生态系统中,Systemd被部署到了大多数的标准Linux发行版中,只有为数不多的几个发行版尚未部署。Systemd通常是所有其它守护进程的父进程,但并非总是如此。Linux学习可参阅《Linux就该这么学》。

Linux使用systemctl管理服务

Linux使用systemctl管理服务

0.基本介绍

syetemclt就是service和chkconfig这两个命令的整合,在CentOS 7就开始被使用了。

systemctl 是系统服务管理器命令,它实际上将 service 和 chkconfig 这两个命令组合到一起。

systemd有系统和用户区分;系统(/user/lib/systemd/system/)、用户(/etc/lib/systemd/user/).

一般系统管理员手工创建的单元文件建议存放在/etc/systemd/system/目录下面。

系统默认所有服务文件的路径是:

/usr/lib/systemd/system

1.服务文件格式

[Unit]    # 服务说明
Description:  服务描述
After:  描述服务类别

[Service] # 服务运行参数的设置
WorkingDirectory=/path  设置应用的工作目录
Type=forking  是后台运行的形式
ExecStart=   服务的具体运行命令
ExecReload=   重启命令
ExecStop=   停止命令
PrivateTmp=True  是否给服务分配独立的temp空间

[Install] #服务安装的相关设置,可设置为多用户
WantedBy= 

注:启动、重启、停止命令全部要求使用绝对路径

a.详细的说明

[Unit]

Description : 服务的简单描述

Documentation : 服务文档

Before、After:定义启动顺序。Before=xxx.service,代表本服务在xxx.service启动之前启动。After=xxx.service,代表本服务在xxx.service之后启动。

Requires:这个单元启动了,它需要的单元也会被启动;它需要的单元被停止了,这个单元也停止了。

Wants:推荐使用。这个单元启动了,它需要的单元也会被启动;它需要的单元被停止了,对本单元没有影响。

[Service]

Type=simple(默认值):systemd认为该服务将立即启动。服务进程不会fork。如果该服务要启动其他服务,不要使用此类型启动,除非该服务是socket激活型。

Type=forking:systemd认为当该服务进程fork,且父进程退出后服务启动成功。对于常规的守护进程(daemon),除非你确定此启动方式无法满足需求,使用此类型启动即可。使用此启动类型应同时指定 PIDFile=,以便systemd能够跟踪服务的主进程。

Type=oneshot:这一选项适用于只执行一项任务、随后立即退出的服务。可能需要同时设置 RemainAfterExit=yes 使得 systemd 在服务进程退出之后仍然认为服务处于激活状态。

Type=notify:与 Type=simple 相同,但约定服务会在就绪后向 systemd 发送一个信号。这一通知的实现由 libsystemd-daemon.so 提供。

Type=dbus:若以此方式启动,当指定的 BusName 出现在DBus系统总线上时,systemd认为服务就绪。

Type=idle: systemd会等待所有任务(Jobs)处理完成后,才开始执行idle类型的单元。除此之外,其他行为和Type=simple 类似。

PIDFile:pid文件路径

ExecStart:指定启动单元的命令或者脚本,ExecStartPre和ExecStartPost节指定在ExecStart之前或者之后用户自定义执行的脚本。Type=oneshot允许指定多个希望顺序执行的用户自定义命令。

ExecReload:指定单元停止时执行的命令或者脚本。

ExecStop:指定单元停止时执行的命令或者脚本。

PrivateTmp:True表示给服务分配独立的临时空间

Restart:这个选项如果被允许,服务重启的时候进程会退出,会通过systemctl命令执行清除并重启的操作。

RemainAfterExit:如果设置这个选择为真,服务会被认为是在激活状态,即使所以的进程已经退出,默认的值为假,这个选项只有在Type=oneshot时需要被配置。

[Install]

Alias:为单元提供一个空间分离的附加名字。

RequiredBy:单元被允许运行需要的一系列依赖单元,RequiredBy列表从Require获得依赖信息。

WantBy:单元被允许运行需要的弱依赖性单元,Wantby从Want列表获得依赖信息。

Also:指出和单元一起安装或者被协助的单元。

DefaultInstance:实例单元的限制,这个选项指定如果单元被允许运行默认的实例。

b.例子

使用vim创建一个reas.service

[Unit]
Description=reas web service
After=network.target remote-fs.target nss-lookup.target
 
[Service]
Type=forking  #或simple
ExecStart=/usr/bin/java -jar /web/reas/reas.jar start
ExecReload=/usr/bin/java -jar /web/reas/reas.jar restart
ExecStop=/usr/bin/java -jar /web/reas/reas.jar stop

[Install]
WantedBy=multi-user.target

2.服务指令

  • 开机自启动

systemctl enable xxx.service

  • 启动xxx服务

systemctl start xxx.service

  • 停止xxx服务

systemctl stop xxx.service

  • 停止开机自启动

systemctl disable xxx.service

  • 查看服务当前状态

systemctl status xxx.service

  • 重新启动服务

systemctl restart xxx.service

  • 查看所有已启动的服务

systemctl list-units --type=service

3.可能出现的问题

4.参考文章

传送门1

传送门2

传送门3

以上是关于linux 的 systemctl指令怎么用的主要内容,如果未能解决你的问题,请参考以下文章

centos7 systemctl

Linux中用systemctl命令管理服务

linux常用命令:systemctl 命令

Linux使用systemctl管理服务

Linux基于CentOS通过Systemctl 设置开机启动/永久性关闭服务

Linux - 利用systemctl命令管理服务