systemctl命令和配置整理

systemctl命令和配置整理

systemctl与service的区别

Linux 服务管理的两种方式 servicesystemctlsystemctl 基本上是的更强大的版本 service

service

service 命令其实是去/etc/init.d 目录下,去执行相关程序,init.d 目录包含许多系统各种服务的启动和停止脚本。当 Linux 启动时,会寻找这些目录中的服务脚本,并根据脚本的 run level 确定不同的启动级别。

systemctl

systemctl 命令主要负责控制 systemd 系统和服务管理器。在 ubuntu、centos 等一系列发行版中可用。可以方便的管理需要启动的服务等。可以实现开机自启动、出错重启和定时重启等等功能。

systemctl命令

# 启动
systemctl start name.service
# 停止
systemctl stop name.service
# 重启
systemctl restart name.service
# 查看状态
systemctl status name.service
# 禁止自动和手动启动
systemctl mask name.service
# 取消禁止
systemctl unmask name.service
# 查看某服务当前激活与否的状态:
systemctl is-active name.service
# 查看所有已经激活的服务:
systemctl list-units --type service
# 查看所有服务:
systemctl list-units --type service --all
# 设定某服务开机自启,相当于chkconfig name on
systemctl enable name.service
# 设定某服务开机禁止启动:相当于chkconfig name off
systemctl disable name.service
# 查看所有服务的开机自启状态,相当于chkconfig --list
systemctl list-unit-files --type service
# 用来列出该服务在哪些运行级别下启用和禁用:chkconfig –list name
ls /etc/systemd/system/*.wants/name.service
# 查看服务是否开机自启:
systemctl is-enabled name.service
# 列出失败的服务
systemctl --failed --type=service
# 开机并立即启动或停止
systemctl enable --now postfix
systemctl disable --now postfix
# 查看服务的依赖关系:
systemctl list-dependencies name.service
# 杀掉进程:
systemctl kill unitname
# 重新加载配置文件
systemctl daemon-reload
# 关机
systemctl halt
systemctl poweroff
# 重启:
systemctl reboot
# 挂起:
systemctl suspend
# 休眠:
systemctl hibernate
# 休眠并挂起:
systemctl hybrid-sleep

服务单元文件目录

  • /usr/lib/systemd/system/:每个服务最主要的启动脚本的配置放在这,有点类似以前的/etc/init.d
  • /run/systemd/system/:系统执行过程中所产生的服务脚本所在目录,这些脚本的优先级要比/usr/lib/systemd/system/高;
  • /etc/systemd/system/:管理员根据主机系统的需求所创建的执行脚本所在目录,执行优先级比/run/systemd/system/

服务单元文件类型

.service(一般服务类型):主要是系统服务,包括服务器本身所需要的本机服务以及网络服务,比较经常被使用到的服务大多是这种类型,是最常见的类型;

.socket(内部程序数据交换的插槽服务):使用 socket 类型的服务一般是比较不会被用到的服务,因此在开机时通常会稍微延迟启动的时间。一般用于本机服务比较多,例如我们的图形界面很多的软件都是通过 socket 来进行本机程序数据交换的行为;

.target(执行环境类型):其实是一群unit的集合,例如 multi-user.target 其实就是一堆服务的集合;

.mount(文件系统挂载相关的服务):例如来自网络的自动挂载、NFS文件系统挂载等与文件系统相关性较高的程序管理;

.path(监测特定文件或目录类型):某些服务需要监测某些特定的目录来提供序列服务,例如最常见的打印服务,就是通过监测打印序列目录来启动打印功能,这时就得要 .path 的服务类型支持;

.timer(循环执行的服务):这个东西有点类似 anacrontab,不过是由systemd主动提供的,比 anacrontab 更加有弹性。

服务单元文件格式

  1. [Unit]:定义与Unit类型有关的通用选项,用于提供 Unit 的描述信息、Unit 行为及依赖关系等;
  2. [Service],[Socket],[Timer],[Mount],[Path]等等:不同单元文件类型就得要使用相对应的设置项目,这个项目主要规范服务启动的脚本、环境配置文件文件名、重新启动的方式等等;
  3. [Install]:定义由 systemctl enable 以及 systemctl disable 命令在实现服务启用或禁用时用到的一些选项;
  4. # 开头的行后面的内容会被认为是注释;
  5. 相关布尔值,1yesontrue 都是开启,0noofffalse 都是关闭;
  6. 时间单位默认是,所以要用毫秒(ms)分钟(m)等须显式说明;
  7. 连词号 - ,表示抑制错误,即发生错误的时候不影响其他命令的执行。

Unit选项

可选项描述
Description对当前服务的简单描述
Documentation当前服务的文档地址
After可以指定在哪些服务之后进行启动,仅是说明服务启动的顺序而已
Before可以指定在哪些服务之前进行启动,仅是说明服务启动的顺序而已
Requires可以指定服务强依赖于哪些服务(一旦所依赖的服务异常,当前的服务也随之停止)
Wants可以指定服务弱依赖于哪些服务(即使所依赖的服务的启动情况不影响当前的服务是否启动)
Conflicts项目后面接的服务如果有启动,这个 Unit 本身就不能启动,若 Unit 有启动,则此项目后的服务就不启动

Service选项

可选项描述
Environment指定环境变量配置
EnvironmentFile指定环境变量配置文件
ExecStart指定服务启动时执行的命令或脚本
ExecStartPre指定服务启动前执行的命令或脚本
ExecStartPost指定服务启动后执行的命令或脚本
ExecStop指明停止服务要运行的命令或脚本
ExecStopPost指定服务停止之后执行的命令或脚本
RestartSec指定服务在重启时等待的时间,单位为秒
ExecReload指明重启服务要运行的命令或脚本
Restart当设定 Restart=1 时,则当次 daemon 服务意外终止后,会再次自动启动此服务,具体看下列类型
PrivateTmp设定为 yes 时,会在生成 /tmp/systemd-private-UUID-NAME.service-XXXXX/tmp/ 目录
KillMode指定停止的方式,具体见下面
Restart指定重启时的类型,具体见下面
Type指定启动类型,具体见下面
Type的可选值
可选值描述
simple指定ExecStart字段的进程为主进程
forking指定以fork() 子进程执行ExecStart字段的进程
oneshot执行一次
notify启动后发送会发送通知信号通知systemd
idle等其他任务结束后才运行
Restart的可选值
可选值描述
no退出后不会重启
on-success当进程正常退出时(退出码为0) 执行重启
on-failure当进程不正常退出时(退出码不为0) 执行重启
on-abnormal当被信号终止和超时执行重启
on-abort当收到没有捕捉到的信号终止时执行重启
on-watchdog当看门狗超时时执行重启
always一直重启
KillMode可选值
可选值描述
control-group杀掉当前进程中所有的进程
process杀掉当前进程的主进程
mixed主进程将收到 SIGTERM 信号,子进程收到 SIGKILL 信号
none不杀掉任何进程

Install选项

可选项描述
Alias别名,可使用systemctl command Alias.service
RequiredBy被哪些units所依赖,强依赖
WantedBy被哪些units所依赖,弱依赖
Also安装本服务的时候还要安装别的相关服务

参考示例

[Unit]
Description=A Demo Tomcat Service
After=network.target mysql.service
Requires=mysql.service

[Service]
Type=forking
Environment="JAVA_HOME=/usr/local/java"
ExecStart=/usr/local/tomcat/bin/startup.sh
ExecStop=/usr/local/tomcat/bin/shutdown.sh

[Install]
WantedBy=multi-user.target

服务状态

运行状态

  • active(running):正有一只或多只程序正在系统中执行的意思;
  • active(exited):仅执行一次就正常结束的服务,目前并没有任何程序在系统中执行;
  • active(waiting):正在执行当中,不过还需要等待其他的事件才能继续处理;
  • inactive:这个服务目前没有运行;
  • dead:程序已经清除;

启动状态

  • enabled:将在开机时被执行;
  • disabled:在开机时不会被执行;
  • static:不可以自己启动(enable不可),不过可能会被其他的enabled 的服务来唤醒(关联属性的服务);
  • mask:无论如何都无法被启动,因为已经被强制注销(非删除),可通过 systemctlunmask 方式改回原本状态;
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值