首页 > 系统相关 >Linux---systemctl常用命令以及service文件配置

Linux---systemctl常用命令以及service文件配置

时间:2024-08-19 18:26:59浏览次数:14  
标签:服务 service 启动 --- systemctl 名称 Linux 日志

简介
1.1 什么是systemctl命令
        systemctl是一个在Linux系统中用于管理系统服务的命令。它是systemd这个初始化系统的一部分,通过控制和监视系统的服务和单位文件,提供了对系统进程的强大管理功能。

1.2 systemctl的作用和用途
        systemctl可以用于启动、停止、重启和重新加载服务,查看服务状态以及设置默认启动级别等。它还可以管理服务之间的依赖关系,定制服务配置,并对服务的日志进行管理。

1.3 systemctl与其他类似命令的区别
        相比于传统的service命令,systemctl更加强大和灵活,支持更多的功能和选项。而且,systemctl可以与systemd的其他工具和特性紧密配合,提供更完整的系统管理解决方案。

基本用法
2.1 systemctl的语法和常用选项
        要使用systemctl命令,可以按照以下语法:

systemctl [选项] [命令] [服务名称]

常用选项包括:

  • -h:显示帮助信息
  • -t TYPE:指定服务类型,如servicesocketdevice

2.2 启动、停止、重启、查看状态、开机自启服务

  • 启动一个服务:
systemctl start [服务名称]
  • 停止一个服务:
systemctl stop [服务名称]
  • 重启一个服务:
systemctl restart [服务名称]
  • 重新加载一个服务的配置文件:
systemctl reload[服务名称]
  • 查看一个服务的运行状态、PID等信息:
systemctl status [服务名称]
  • 将一个服务设置为开机自启动:
systemctl enable [服务名称]

服务管理
3.1 列出所有已启用的服务
列出所有已启用的服务:

systemctl list-unit-files --state=enabled

3.2 启用和禁用服务
启用一个服务:

systemctl enable [服务名称]

禁用一个服务:

systemctl disable [服务名称]

3.3 添加和移除服务
添加一个自定义的服务(需创建对应的单位文件):

systemctl link /path/to/服务单位文件

移除一个服务的链接:

systemctl unlink /path/to/服务单位文件

3.4 定制服务配置
编辑一个服务的配置文件:

systemctl edit [服务名称]

然后在编辑器中进行修改,保存并退出即可。

依赖关系管理
4.1 服务之间的依赖关系
查看一个服务的依赖关系:

systemctl show [服务名称]--property=Requires
systemctl show [服务名称] --property=Wants

4.2 解决依赖问题
启用和禁用服务的同时解决依赖问题:

systemctl enable --now [服务名称]
systemctl disable --ignore-dependencies [服务名称]

4.3 配置服务启动顺序
使用Before和After配置服务之间的启动顺序:

[Unit]
Before=服务1.service
After=服务2.service


日志管理
5.1 查看服务日志
查看一个服务的日志:

journalctl -u [服务名称]

5.2 设置日志级别和存储位置
编辑journald.conf文件来设置日志级别和存储位置:

sudo systemctl edit --full systemd-journald.service

5.3 日志轮转和压缩
配置日志轮转和压缩策略,可以通过编辑对应的单位文件来实现。

常用技巧和实例
6.1 使用通配符批量操作服务

systemctl start [服务名称]
systemctl stop [服务名称]
systemctl restart [服务名称]

6.2 定时启动和停止服务
使用timer单位文件来定时启动和停止服务,类似于cron任务。

6.3 通过systemd单位文件自定义服务
创建自定义的服务单位文件,以实现特定需求。

6.4 进程控制和资源限制
通过配置[Service]段的相关参数,对服务进程进行控制和资源限制。

故障排查和常见问题
7.1 查找和解决服务启动失败的原因
查看服务日志,使用journalctl命令来定位问题所在。

7.2 解决服务无法停止或重新加载的问题
尝试使用systemctl kill命令强制停止或重新加载服务。

7.3 处理日志溢出和写入错误
调整日志存储位置、设置日志轮转策略,或增加系统日志存储空间。
 

service文件配置

8.1 添加服务文件

在/etc/systemd/system/文件目录下添加.service服务文件。

8.2 编写.service文件

[Unit]
Description=test for service
ConditionFileIsExecutable=/etc/init.d/tst.sh
After=weston.service
 
[Service]
Type=forking
ExecStart=-/etc/init.d/tst.sh start
ExecStop=-/etc/init.d/tst.sh stop
 
[Install]
WantedBy=multi-user.target

从上面可以看出.serive文件包括三个部分:[Unit]、[Service]、[Install]。

[Unit]
Description:对当前服务的简单描述。
After:指定.serive在哪些服务之后进行启动;
Before:指定.serive在哪些服务之前进行启动;
除上述内容,文件中还可能出现以下内容:
Requires:指定服务依赖于哪些服务(强依赖关系,一旦所依赖服务异常,当前服务也随之停止);
Wants:指定服务依赖于哪些服务(弱依赖关系,所依赖服务异常不影响当前服务正常运行)。

[Service] 
Type:定义启动类型。可设置:simple,exec,forking,oneshot,dbus,notify,idle。
simple:ExecStart 字段启动的进程为该服务的主进程;
forking:ExecStart 字段的命令将以 fork() 方式启动,此时父进程将会退出,子进程将成为主进程;
ExecStart:定义启动进程时执行的命令;
ExecStop:停止服务时执行的命令;
除上述内容外,文件中还可能出现:
EnvironmentFile:环境配置文件,用来指定当前服务启动的环境变量;
ExecReload:重启服务时执行的命令;
ExecStartPre:启动服务之前执行的命令;
ExecStartPost:启动服务之后执行的命令;
ExecStopPost:停止服务之后执行的命令;
RemainAfterExit:设为yes,表示进程退出以后,服务仍然保持执行;
RestartSec:重启服务之前需要等待的秒数。
KillMode:定义 Systemd 如何停止服务,可以设置的值如下:
    control-group(默认值):当前控制组里面的所有子进程,都会被杀掉;
    process:只杀主进程;
    mixed:主进程将收到 SIGTERM 信号,子进程收到 SIGKILL 信号;
    none:没有进程会被杀掉。
Restart:定义了退出后,Systemd 的重启方式,可以设置的值如下:
    no(默认值):退出后不会重启;
    on-success:当进程正常退出时(退出状态码为0),才会重启;
    on-failure:当进程非正常退出时(退出状态码非0),包括被信号终止和超时,才会重启;
    on-abnormal:当被信号终止和超时,才会重启;
    on-abort:当收到没有捕捉到的信号终止时,才会重启;
    on-watchdog:看门狗超时退出,才会重启;
    always:总是重启。

[Install] 
Install一般填为WantedBy=multi-user.target,表示多用户环境下服务被启用。

8.3 实例

[Unit]
Description=[服务名称]
After=syslog.target network.target remote-fs.target nss-lookup.target

[Service]
Type=simple
WorkingDirectory=[路径]
ExecStart= /usr/bin/dotnet [dll名称] --urls "http://*:[端口]"
ExecReload=/bin/kill -s HUP $MAINPID
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

标签:服务,service,启动,---,systemctl,名称,Linux,日志
From: https://blog.csdn.net/caohaiye/article/details/141329084

相关文章

  • JAVA基础之-参数传递
    准备整理一个系列,这是系列的第一篇。这是一个经典的问题,也是JAVA程序员所必须掌握的。一、小结论和例子1.1结论内容没有多少,可以先说结论:变量的表示和参数传递变量是如何表示,尤其是参数是如何表示的 存储则具体看变量是什么类型:类静态、实例变量、方法变量表示-基本类......
  • WEB渗透免杀篇-免杀工具全集
     往期文章 WEB渗透免杀篇-加载器免杀-CSDN博客 WEB渗透免杀篇-分块免杀-CSDN博客WEB渗透免杀篇-Powershell免杀-CSDN博客WEB渗透免杀篇-Python源码免杀-CSDN博客WEB渗透免杀篇-C#源码免杀-CSDN博客WEB渗透免杀篇-MSF+shellcode免杀-CSDN博客WEB渗透免杀篇-Bypass-AMS......
  • Linux CentOS手动安装Node.js(图文教程)
    本章教程主要介绍如何在centos7上安装指定版本的Node.js一、下载nodejs前往Node.js官网,根据自己需要安装的版本进行下载。官网下载地址:https://nodejs.org/zh-cn/download/prebuilt-binaries本文,以v14.21.3版本介绍整个安装过程。二、上传压缩包下载之后,你会得......
  • Linux安装MQTT 服务器(图文教程)
    MQTT(MessageQueuingTelemetryTransport)是一种轻量级的消息传输协议,专为低带宽和不稳定的网络环境设计,非常适合物联网(IoT)应用。官网地址:https://www.emqx.com/一、版本选择根据自己的操作系统进行下载即可,推荐使用rpm安装方式。下载地址:https://www.emqx.com/zh/do......
  • Linux(centos)搭建SVN仓库
    安装svnserveyum-yinstallsubversion 创建版本库目录(以后的版本库提供存放位置)mkdir/svn/repository 创建svn版本库svnadmincreate/svn/repository/test 修改配置cd/svn/repository/jmoon/conf  authz:负责账号权限的管理,控制账号是否读写权......
  • ubuntu(linux): 编译安装使用python3.12.5
    一,python官网:https://www.python.org/下载页面:https://www.python.org/downloads/source/如图:二,安装1,下载:wget从命令行下载:liuhongdi@lhdpc:/usr/local/source/python$wgethttps://www.python.org/ftp/python/3.12.5/Python-3.12.5.tgz2,解压:liuhongdi@lhdpc:/......
  • go语言学习过程报错处理-哇哈哈哈
    题记无聊学习ing,思考了下还是学下go语言写免杀木马吧,毕竟在我的学习计划里放了小半年了,上班的时候还没多少自己的时间学习。为什么无聊大家都懂吧,应该会懂的吧。主要还是需要分散下注意力,近期脑子整天都是奇奇怪怪的幻想,太影响人了。当然,还是要加上我喜欢的好句子,......
  • 探索GitHub的无限可能:从注册到Linux环境下的库分支链接
            在这个数字化时代,GitHub已成为开发者们不可或缺的宝藏库。无论你是编程新手还是资深开发者,GitHub都能为你打开一扇通往无限创意与协作的大门。今天,就让我们一起踏上这段探索之旅,从GitHub的注册开始,再到如何在Linux环境中链接库分支并发送,让你轻松掌握GitHub的......
  • Vulnhub靶机:AI-WEB-1.0
    一.网站查询二.扫描当前网站目录 扫出有http://172.16.1.88/robots.txt继续扫这个刚扫出来的,然后得出 我们再访问m3dinfo/info.php和 /se3reTdir777/这俩目录 得到如上图所示三.进行sql注入1.判断是否有sql注入 /有结果,有报错 2.利用burp抓包进行注入......
  • 技术分享-商城篇-购物支付(十一)
    B2B2C商城购物支付系统深度剖析作为购物体系中的资金交易重要一环,所以在电子商务蓬勃发展的今天,B2B2C(Business-to-Business-to-Consumer)商城作为连接供应商、平台运营商与终端消费者的桥梁,其购物支付系统的重要性不言而喻。本文将从支付业务逻辑、订单信息、订单校验、安全......