首页 > 系统相关 >Linux服务管理命令service与systemctl

Linux服务管理命令service与systemctl

时间:2023-04-07 13:55:34浏览次数:51  
标签:systemd 服务 target service init systemctl Linux

历史背景

Linux 系统服务有时也称为守护程序,是在Linux启动时自动加载并在Linux退出时自动停止的系统任务。历史版本中的linux对服务的操作是通过service来完成的。若创建用户自定义的服务,则需要较为复杂的操作。目前linux新的发行版已经内置了systemctl来操作服务。

在早期服务管理中,Init 是Linux系统启动时创建的第一个进程。它是一个守护进程,会一直运行到系统关闭。init 是其他所有进程的直接或间接祖先,并自动监护所有孤儿进程。内核按照硬编码的文件名启动它,如果内核不能启动它,将会导致内核崩溃。init 的进程标识符(PID)通常是 1。在系统启动和关闭时,init 进程会启动 init 脚本(或称 rc)来保障基本功能。这包括挂载和卸载文件系统,以及启动守护进程。进一步,有一个服务管理器提供对已启动进程的主动控制,称为进程监控。例如监测崩溃的进程并适时重启。这些元素加起来就成了 init 系统。某些 init 将服务管理器包含在 init 进程中,或是有紧密联系的 init 脚本。在下面,这类 init 将被称为整合式的。其他的分类下的条目可能会相互依赖。

目前,很多Linux发行版转向了systemd。systemd 是一个 Linux 系统基础组件的集合,提供了一个系统和服务管理器,运行为 PID 1 并负责启动其它程序。功能包括:支持并行化任务;同时采用 socket 式与 D-Bus 总线式激活服务;按需启动守护进程(daemon);利用 Linux 的 cgroups (简体中文) 监视进程;支持快照和系统恢复;维护挂载点和自动挂载点;各服务间基于依赖关系进行精密控制。systemd 支持 SysV 和 LSB 初始脚本,可以替代 sysvinit。除此之外,功能还包括日志进程、控制基础系统配置,维护登陆用户列表以及系统账户、运行时目录和设置,可以运行容器和虚拟机,可以简单的管理网络配置、网络时间同步、日志转发和名称解析等。

Init系统是一系列简单精小服务构成的集合,配置起来很复杂,但是配置过程透明。而systemd则是一个包含很多功能的庞大系统,配置简单,对于这个转换,各方争论不一,有人喜欢它的功能强大,操作简单,有人批评它不符合Unix哲学。

service命令

service是Init系统下进行服务管理的命令,service命令本身是一个shell脚本,它在/etc/init.d/目录查找指定的服务脚本,然后调用该服务脚本来完成任务。
在这里插入图片描述

可通过sercice SCRIPT COMMAND命令管理服务,SCRIPT为/etc/init.d/中存放的可执行脚本文件:

service SCRIPT start    #启动服务
service SCRIPT stop     #停止服务
service SCRIPT restart  #重启服务
service SCRIPT status   #查看状态服务

此外还可以用service --status-all显示出所有系统服务列表,其中”+”代表服务正在运行,而”-“代表服务处于关闭状态,”?”代表根本没有状态这一说。
查看运行服务还可以用 ps aux | grep service_name查看进程情况;如果是网络服务,还可以查看端口的监听情况,执行 netstat -tuln | grep service_name/port_number,例如可以执行 netstat -tuln | grep ftp查看端口状态,默认端口为21。
用户可以添加自定义服务,将相应脚本放置于/etc/init.d/文件夹下。

systemctl命令

服务管理

systemctl是systemd系统下的服务管理命令。它包含的功能很多,详见systemctl

systemctl status   #显示系统状态
systemctl start [单元]  #立即激活单元:
systemctl stop [单元]   #立即停止单元
systemctl restart [单元] #重启单元
systemctl enable [单元]  #开机自动激活单元
systemctl disable [单元] #取消开机自动激活单元
systemctl daemon-reload  #重新载入systemd,扫描新的或有变动的单元

Systemd使用“单元(Unit)”监控管理系统,单元文件是 ini 风格的纯文本文件。 封装了有关下列对象的信息: 服务(service)、套接字(socket)、设备(device)、挂载点(mount)、自动挂载点(automount)、 启动目标(target)、交换分区或交换文件(swap)、被监视的路径(path)、任务计划(timer)、 资源控制组(slice)、一组外部创建的进程(scope)。有关单元详细介绍参见systemd.unit 中文手册

能用systemctl管理的服务需要有一个.service文件,在Ubuntu中,通常该文件位于/etc/systemd/system文件夹下,有关Systemd服务单元参见systemd.service 中文手册
在这里插入图片描述
当你更改了相关服务配置文件后,需要运行以下命令重启服务:

sudo systemctl daemon-reload && sudo systemctl restart name
# 其中name为你要重启的服务

systemd 目标

Systemd中目标的概念,systemd 目标由目标单元表示。目标单元文件以 .target 文件扩展名结尾,它们的唯一用途是通过依赖项链将其他 systemd 单元分组在一起。例如,用于启动图形会话的 graphical.target 单元 将启动系统服务,如 GNOME 显示管理器 (gdm.service) 或帐户服务 (accounts-daemon.service),还激活 multi-user.target 单元。同样,multi-user.target 单元会启动其他基本系统服务,如 NetworkManager (NetworkManager.service)或 D-Bus (dbus.service),并激活另一个名为 basic.target 的目标单元。该模式替代了SysV init中预定义的运行级别。

SysV 运行级别与 systemd 目标的比较

运行级别 目标单元 描述
0 runlevel0.target, poweroff.target 关闭系统
1 runlevel1.target, rescue.target 设置救援 shell
2 runlevel2.target, multi-user.target 设置一个非图形化的多用户系统
3 runlevel3.target, multi-user.target 设置一个非图形化的多用户系统
4 runlevel4.target, multi-user.target 设置一个非图形化的多用户系统
5 runlevel5.target, graphical.target 设置图形化多用户系统
6 runlevel6.target, reboot.target 关闭并重启系统

命令:

# sysvinit 运行级别
runlevel   #查看当前运行级别
init N     #进入其它运行级别

# systemd 目标
systemctl list-units --type=target  #列出了当前加载的和激活的目标
systemctl isolate graphical.target  #切换目标

日志功能

此外,systemd提供了日志功能,查看日志是我们寻找问题的重要方法。journalctl 用来查询 systemd-journald 服务收集到的日志。systemd-journald 服务是 systemd init 系统提供的收集系统日志的服务`

日志功能常用命令如下:

journalctl            #不带任何选项时,默认输出所有的日志记录
journalctl -n [num]   #显示最后num行的日志,如果省略num,则默认显示最后10行
journalctl -f         #实时滚动显示最新日志
journalctl -u [unit]  #显示指定unit的日志

查看日志需要超级管理员权限。

# 具体用法参见
journalctl -h
# 例如查看docker服务最新日志
sudo journalctl -u docker | tail -n 50

参考文献

systemd (简体中文)
使用 systemd 目标
linux journalctl 命令

标签:systemd,服务,target,service,init,systemctl,Linux
From: https://www.cnblogs.com/fhhw/p/17295908.html

相关文章

  • Linux 手动安装Ettercap
    步骤1下载文件wgethttps://github.com/Ettercap/ettercap/archive/v0.8.3.1.tar.gz或者去官网下载:https://www.ettercap-project.org/downloads.html步骤2解压文件tarvfxz'/home/chiam/Desktop/v0.8.3.1.tar.gz'步骤3安装依赖sudoapt-getinstalldebhelperbisoncheckcm......
  • Linux 系统配置Java Idea Tomcat 全过程
    环境搭建记录-开发环境搭建:1.IDEA安装https://www.jetbrains.com/idea/download/#section=linux解压后执行bin目录idea.sh运行2.JDK安装下载jdk15官方网站:https://www.oracle.com/java/下载页面:https://www.oracle.com/cn/java/technologies/javase-downloads.html2)安装j......
  • Linux和Windows操作系统作为服务器之间的对比
     Linux比Windows操作系统更适合服务器= 开源免费:Linux是一个开放源代码操作系统,而WindowsServer是一个专有操作系统,属于商业操作系统,费用比较高。安全性:Linux在安全方面比WindowsServer更强大,这是因为它是开放源代码的,拥有更多的安全功能和选项,也因为它在全球范围内广泛使用,能......
  • Linux服务管理命令service与systemctl
    历史背景Linux系统服务有时也称为守护程序,是在Linux启动时自动加载并在Linux退出时自动停止的系统任务。历史版本中的linux对服务的操作是通过service来完成的。若创建用户自定义的服务,则需要较为复杂的操作。目前linux新的发行版已经内置了systemctl来操作服务。在早期服务管......
  • Linux启动tomcat,应用正常访问
    1.下载tomcat2.安装tomcat3.将生成的war包,放到tomcat的webapps下面4.启动tomcat5.查看应用是否部署成功访问http://ip:端口/项目名称(如:http://192.168.1.206:8080/SpringApiTest/) 6.jmeter进行接口测试......
  • linux 常用命令
    1.文件名转码 convmv-futf-8-tgbk-r--notest /home/tmp-f原来的编码方式-t 要更改为的编码方式-r表示这个目录下面的所有文件--notest表示马上执行,而不是仅仅测试而已2.打包、解压tar-zcvf 123.tar.gzdoc  --压缩doc文件目录tar-zxvf123.tar.gz   -......
  • Centos7使用systemctl管理mysql8服务开机启动
    centos7下开机默认不执行原来配置启动命令的/etc/rc.local文件,建议使用systemctl管理自启动服务,如果要使用/etc/rc.local进行自启动,需要给文件/etc/rc.d/rc.local添加可执行权限。    systemctl常用命令如下:1.列出所有启动项命令systemctllist-unit-files开启的和未开启的......
  • linux navicat重置试用期
    navicat的信息保存在当前用户目录的.config下备份mv~/.config/navicat~/.config/navicatbakmv~/.config/dconf/user~/.config/dconf/userbak这时打开navicat发现又是新的14天试用期恢复原连接mkdir-p~/.config/navicat/Commoncp~/.config/navicatbak/Common/connec......
  • Linux系统里的抓包工具全解
    有时也许想看一下某个网卡上都有哪些数据包,尤其是当你初步判定服务器上有流量攻击时,使用抓包工具来抓取数据包就可以知道有哪些IP在攻击了。14.2.1tcpdump工具具体用法如下:#tcpdump-nn-iens33tcpdump:verboseoutputsuppressed,use-vor-vvforfullprotocoldecode......
  • frp内网穿透,linux服务器,windows客户端
    一、配置前准备1、下载frp,可以从github上下载下载地址:https://github.com/fatedier/frp/releases2、服务器端(点击名称下载)frp_0.48.0_linux_amd64.tar.gz3、客户端(点击名称下载)frp_0.48.0_windows_amd64.zip 二、将下载的frp文件,上传至linux服务器#进入指定文件夹cd/......