热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

[Linux]systemctl命令和service文件

环境:RHEL7.6systemctl常用命令传送门RHEL7.6起停服务命令(以防火墙为例)https:blog.csdn.netwy

环境:RHEL 7.6

@ systemctl常用命令传送门 => RHEL7.6 起停服务命令(以防火墙为例)https://blog.csdn.net/wy_hhxx/article/details/103034212

@ 路径 /usr/lib/systemd/system 下有很多service文件,例如firewalld.service, sshd.service... 

@ systemctl status 的输出

[root@xxx ~]# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemonLoaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)Active: active (running) since Wed 2021-03-31 11:47:15 CST; 5s agoDocs: man:firewalld(1)Main PID: 25793 (firewalld)Tasks: 2CGroup: /system.slice/firewalld.service└─25793 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopidMar 31 11:47:14 xxx systemd[1]: Starting firewalld - dynamic firewall daemon...
Mar 31 11:47:15 xxx systemd[1]: Started firewalld - dynamic firewall daemon.
[root@xxx ~]#

说明:

Loaded行配置文件的位置,是否设为开机启动,此例是disabled,即开机不启动防火墙
Active行running表示正在运行
Main PID行主进程ID
CGroup块应用的所有子进程
日志块应用的日志

 

 

 

 

 

 

@ systemctl cat命令可以用来查看服务的配置文件

[root@xxx ~]# systemctl cat firewalld
# /usr/lib/systemd/system/firewalld.service
[Unit]
Description=firewalld - dynamic firewall daemon
Before=network-pre.target
Wants=network-pre.target
After=dbus.service
After=polkit.service
Conflicts=iptables.service ip6tables.service ebtables.service ipset.service
Documentation=man:firewalld(1)[Service]
EnvironmentFile=-/etc/sysconfig/firewalld
ExecStart=/usr/sbin/firewalld --nofork --nopid $FIREWALLD_ARGS
ExecReload=/bin/kill -HUP $MAINPID
# supress to log debug and error output also to /var/log/messages
StandardOutput=null
StandardError=null
Type=dbus
BusName=org.fedoraproject.FirewallD1
KillMode=mixed[Install]
WantedBy=multi-user.target
Alias=dbus-org.fedoraproject.FirewallD1.service
[root@xxx ~]#

说明:

1. [Unit] 定义启动顺序与依赖关系

Description字段service的简单描述
Documentation字段文档位置
Before字段定义应该在哪些服务之前启动,如果network-pre.target需要启动,那么firewalld.service应该在它之前启动
After字段定义应该在哪些服务之后启动,如果dbus.service, polkit.service需要启动,那么firewalld.service应该在它们之后启动
Wants字段表示弱依赖"关系,如果network-pre.target启动失败或停止运行,不影响firewalld.service继续执行
Requires字段表示"强依赖"关系,即如果该服务启动失败或异常退出,那么firewalld.service也必须退出

 

 

 

 

 

 

 

 

 

2. [Service] 定义如何启动当前服务

启动命令EnvironmentFile字段指定当前服务的环境参数文件
ExecStart字段定义启动进程时执行的命令
ExecReload字段重启服务时执行的命令
ExecStop字段停止服务时执行的命令
ExecStartPre字段启动服务之前执行的命令
ExecStartPost字段启动服务之后执行的命令
启动类型Type字段simple(默认值):ExecStart字段启动的进程为主进程
forking:ExecStart字段将以fork()方式启动,此时父进程将会退出,子进程将成为主进程
oneshot:类似于simple,但只执行一次,Systemd 会等它执行完,才启动其他服务
重启行为KillMode字段定义 Systemd 如何停止 sshd 服务
control-group(默认值):当前控制组里面的所有子进程,都会被杀掉
process:只杀主进程
mixed:主进程将收到 SIGTERM 信号,子进程收到 SIGKILL 信号
none:没有进程会被杀掉,只是执行服务的 stop 命令
Restart字段定义了 sshd 退出后,Systemd 的重启方式
no(默认值):退出后不会重启
on-success:只有正常退出时(退出状态码为0),才会重启
on-failure:非正常退出时(退出状态码非0),包括被信号终止和超时,才会重启
on-abnormal:只有被信号终止和超时,才会重启
on-abort:只有在收到没有捕捉到的信号终止时,才会重启
on-watchdog:超时退出,才会重启
always:不管是什么退出原因,总是重启
RestartSec字段表示 Systemd 重启服务之前,需要等待的秒数

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3. [Install] 定义如何安装这个配置文件,即怎样做到开机启动

WantedBy字段,表示该服务所在的 Target,Target的含义是服务组,表示一组服务。WantedBy=multi-user.target指的是,firewalld 所在的 Target 是multi-user.target。
常用的 Target 有两个:一个是multi-user.target,表示多用户命令行状态;另一个是graphical.target,表示图形用户状态,它依赖于multi-user.target。

执行systemctl enable firewalld.service命令时,firewalld.service的一个符号链接就会放到/etc/systemd/system目录下面的multi-user.target.wants子目录之中

[root@xxx multi-user.target.wants]# systemctl enable firewalld
Created symlink from /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service to /usr/lib/systemd/system/firewalld.service.
Created symlink from /etc/systemd/system/multi-user.target.wants/firewalld.service to /usr/lib/systemd/system/firewalld.service.
[root@xxx multi-user.target.wants]# ls -l | grep fire
lrwxrwxrwx. 1 root root 41 Mar 31 16:15 firewalld.service -> /usr/lib/systemd/system/firewalld.service
[root@xxx multi-user.target.wants]#
[root@xxx multi-user.target.wants]# systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@xxx multi-user.target.wants]# ls -l | grep fire
[root@xxx multi-user.target.wants]#

最后,修改配置文件后,需要重新加载配置文件(systemctl daemon-reload),然后重新启动相关服务。

更多配置项参考 https://www.freedesktop.org/software/systemd/man/systemd.service.html

参考资料:
Systemd 入门教程:实战篇 http://www.ruanyifeng.com/blog/2016/03/systemd-tutorial-part-two.html
/ Centos7之Systemd(Service文件)详解 https://blog.csdn.net/Mr_Yang__/article/details/84133783


推荐阅读
  • 概述H.323是由ITU制定的通信控制协议,用于在分组交换网中提供多媒体业务。呼叫控制是其中的重要组成部分,它可用来建立点到点的媒体会话和多点间媒体会议 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • Spring源码解密之默认标签的解析方式分析
    本文分析了Spring源码解密中默认标签的解析方式。通过对命名空间的判断,区分默认命名空间和自定义命名空间,并采用不同的解析方式。其中,bean标签的解析最为复杂和重要。 ... [详细]
  • 本文讨论了在Windows 8上安装gvim中插件时出现的错误加载问题。作者将EasyMotion插件放在了正确的位置,但加载时却出现了错误。作者提供了下载链接和之前放置插件的位置,并列出了出现的错误信息。 ... [详细]
  • 本文介绍了如何使用Express App提供静态文件,同时提到了一些不需要使用的文件,如package.json和/.ssh/known_hosts,并解释了为什么app.get('*')无法捕获所有请求以及为什么app.use(express.static(__dirname))可能会提供不需要的文件。 ... [详细]
  • Android系统源码分析Zygote和SystemServer启动过程详解
    本文详细解析了Android系统源码中Zygote和SystemServer的启动过程。首先介绍了系统framework层启动的内容,帮助理解四大组件的启动和管理过程。接着介绍了AMS、PMS等系统服务的作用和调用方式。然后详细分析了Zygote的启动过程,解释了Zygote在Android启动过程中的决定作用。最后通过时序图展示了整个过程。 ... [详细]
  • 本文介绍了设计师伊振华受邀参与沈阳市智慧城市运行管理中心项目的整体设计,并以数字赋能和创新驱动高质量发展的理念,建设了集成、智慧、高效的一体化城市综合管理平台,促进了城市的数字化转型。该中心被称为当代城市的智能心脏,为沈阳市的智慧城市建设做出了重要贡献。 ... [详细]
  • Python字典推导式及循环列表生成字典方法
    本文介绍了Python中使用字典推导式和循环列表生成字典的方法,包括通过循环列表生成相应的字典,并给出了执行结果。详细讲解了代码实现过程。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • ZSI.generate.Wsdl2PythonError: unsupported local simpleType restriction ... [详细]
  • 利用Visual Basic开发SAP接口程序初探的方法与原理
    本文介绍了利用Visual Basic开发SAP接口程序的方法与原理,以及SAP R/3系统的特点和二次开发平台ABAP的使用。通过程序接口自动读取SAP R/3的数据表或视图,在外部进行处理和利用水晶报表等工具生成符合中国人习惯的报表样式。具体介绍了RFC调用的原理和模型,并强调本文主要不讨论SAP R/3函数的开发,而是针对使用SAP的公司的非ABAP开发人员提供了初步的接口程序开发指导。 ... [详细]
  • Jquery 跨域问题
    为什么80%的码农都做不了架构师?JQuery1.2后getJSON方法支持跨域读取json数据,原理是利用一个叫做jsonp的概念。当然 ... [详细]
  • 本文整理了Java中com.evernote.android.job.JobRequest.getTransientExtras()方法的一些代码示例,展示了 ... [详细]
  • 本文介绍了使用C++Builder实现获取USB优盘序列号的方法,包括相关的代码和说明。通过该方法,可以获取指定盘符的USB优盘序列号,并将其存放在缓冲中。该方法可以在Windows系统中有效地获取USB优盘序列号,并且适用于C++Builder开发环境。 ... [详细]
  • STM32 IO口模拟串口通讯
    转自:http:ziye334.blog.163.comblogstatic224306191201452833850647前阵子,调项目时需要用到低波 ... [详细]
author-avatar
丨为你
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有