linux系统systemd使用

一、开机启动

所有支持systemd的服务,在安装后,会在/usr/lib/systemd/system中添加一个配置文件,如果需要让当前的服务在开机的时候自动启动,则需要执行以下命令,以firewalld为例

systemctl enable firewalld.service

该命令执行完成后,将在/etc/systemd/system目录中添加一个软连接文件,此文件会指向该服务在/usr/lib/systemd/system中的配置文件,开启的时候,systemd会地洞存放在/etc/systemd/system中的所有配置文件的服务。

例如我们enable firewalld.service,则在/etc/systemd/system目录会会创建一个软连接文件dbus-org.fedoraproject.FirewallD1.service的文件,此文件指向/usr/lib/systemd/system/firewalld.service

当disable firewalld.service后,此文件被移除。

二、启动服务

执行systemctl enable后不会使得该服务被马上启动,只有下一次系统重启后才会启动该服务,如果我们需要让服务马上启动,则需要使用start命令,还是以firewalld为例

systemctl start firewalld.service

启动完成后我们使用status命令来查看firewalld服务的状态

systemctl status firewalld.service

status命令输出的内容表示的信息有:

Loaded:Loaded中的disabled或者enable表示该服务是否能够开机启动,同时指明了当前服务对应的配置文件所在的位置,如上图firewalld服务的配置文件是/usr/lib/systemd/system/firewalld.service

Active:表示是否正常运行,是active的状态还是inactive的状态,以及该状态开始的时间

Docs:使用man的帮助信息查看方式

Process:服务运行命令

Main PID:服务的主进程iD

Memory:消耗的内存

CGroup:该进程所在的cgroup,包括其所有子进程

日志块

三、停止服务

停止正在运行的服务可以使用stop命令, 以firewalld服务为例

systemctl stop firewalld

如果该服务无法正常停止,可以使用kill命令

systemctl kill firewalld

如果要重启该服务器,可以使用restart命令

systemctl restart firewalld

四、配置文件

服务的配置文件一般放在/usr/lib/systemd/system中,如果找不到可以直接使用cat命令来查看对应的文件和文件位置,以firewalld服务为例

systemctl cat firewalld

配置文件有几个重要的组成部分:

1. Unit块:

unit块中指明了启动的依赖关系和服务启动的顺序

Description:服务描述信息

Before:表示当前服务应该在指定服务之前启动,如上面表示的就是firewalld服务应该在network-pre.target之前启动

After:表示当前服务应该在指定服务之后启动,如上面表示firewalld服务要在dbus.service和polkit.service服务启动之后启动

Wants:表示当前服务的依赖关系,如上面表示firewalld服务需要network-pre.target

Requires:表示当前服务的依赖关系

Before和After只涉及启动顺序,不涉及依赖关系

Wants和Requires只涉及依赖关系,不涉及启动顺序,默认情况下是同时启动,Wants表示弱依赖,即依赖的服务启动失败也不影响当前服务的执行,Requires表示强依赖,即依赖的服务启动失败则当前服务也无法运行。

2. Service块:

EnvironmentFile:当前服务的环境参数文件,文件中保存的是key=value的键值对,在服务启动的时候可以以$key的方式来获取,如firewalld服务启动中使用的$FIREWALLD_ARGS就保存在/etc/sysconfig/firewalld文件中

ExecStart:启动进程执行的命令

ExecReload:重启服务执行的命令

ExecStop:停止服务执行的命令

ExecStartPre:启动服务之前执行的命令

ExecStartPost:启动服务之后执行的命令

ExecStopPost:停止服务之后执行的命令

所有设置之前都可以添加一个-,表示即使发生错误,不影响其他命令的执行,如EnvironmentFile=-/etc/sysconfig/firewalld表示即使没有找到/etc/sysconfig/firewalld文件也不会抛出错误。

Type:启动类型,支持以下类型:

simple(默认值):ExecStart字段启动的进程是主进程

forking:ExecStart字段以fork方式启动,父进程退出,子进程继续执行

oneshot:类似simple,但是只会执行一次,服务不会长期存在

dbus:类似simple,会等待D-Bus信号后启动

notify:类似simple,启动结束后会发出通知信号,然后systemd再启动其他服务

idle:类似simple,但是要等其他任务都执行完成后才启动服务

RemainAfterExit:进程退出后,服务依然保持

KillMode:kill类型,支持以下类型:

control-group:当前控制组里的所有子进程都会被杀死

process:只杀主进程

mixed:主进程会收到SIGTERM信号,子进程收到SIGKILL信号

none:没有进程被杀,只会执行服务的stop字段命令

Restart:restart类型,支持以下类型:

no:退出后不重启

on-success:正常退出后会重启

on-failure:非正常退出后会重启

on-abnormal:被信号终止或者超时重启

on-abort:收到没有捕捉到的信号终止时重启

on-watchdog:超时重启

always:不管什么原因都重启

对于守护进程推荐设置为on-failure

RestartSec:重启服务之前需要等待的second数

3. Install块

Wantedby:表示该服务所在的target

四、修改配置文件后重启

修改配置文件后需要重新加载配置文件重启

systemctl daemon-reload

systemctl restart firewalld

  • 33
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

aolitianya

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值