uos操作系统-使用systemd管理系统服务(代码片段)

正月十六工作室 正月十六工作室     2023-01-19     595

关键词:


UOS操作系统-使用Systemd管理系统服务


前言

安全中心是统信UOS预装的安全辅助应用,主要包括系统体检、病毒查杀、防火墙、自启动管理以及系统安全等功能,可以全面提升系统的安全性。

使用Systemd管理系统服务

system是操作系统的管家,通过它可以快捷、方便的管理系统的各项功能。

systemd概述

Systemd是 Linux操作系统中最基础的组成部分,作为操作系统的第一个用户进程(PID1)运行并启动操作系统的其余部分,其主要作用是进行操作系统和服务管理。
Systemd 具有并行启动系统服务的功能,使用套接字和D-Bus激活来启动服务,按需启动、守护程序,使用Linux cgroups跟踪进程,维护安装和自动挂载点,以及实现精心设计的基于事务依赖关系的服务控制逻辑。
Systemd支持SysV和LSB 初始化脚本,并替代SysVinit。Systemd 的其他功能包括日志记录守护程序,用于控制基本系统配置,如主机名、日期、区域设置、已登录用户和正在运行的容器、虚拟机的列表、系统账户、运行时目录和设置等,也可用于管理简单网络的守护程序配置,如网络事件的同步,日志转发以及名称解析等
虽然systemd功能较强大,管理范围较宽广,但它的核心只有一个/bin/systemd。Linux内核启动后,它作为第一个被执行的用户进程,起到了承上启下的作用。当某个进程占用太多系统资源时,systemd有权执行(MOO killer)机制来杀死该进程,即彻底结束该进程,以此保护整个系统不会因资源耗尽而崩溃。

服务管理

systemd最重要的功能就是对系统的服务管理,服务进程的启动、重启等都时由它控制的。如在准备搭建一个网站前,需在终端执行sudo apt install nginx命令安装NGINX(Web服务器),然后就可以用如下所示的命令来管理NGINX服务器。

*启动服务:sudo systectl start nginx.sercive*
*停止服务:sudo systectl stop niginx.service*
*重启服务:sudo systectl restart niginx.service* 
*查看服务:sudo systemctl status nginx.service*
*开机启动服务:sudo systemctl enable nginx.service*
*禁止开机启动服务:sudo systemctl disable nginx.service*

电源管理

在终端中执行如下命令可对计算机的电源进行管理。
重启:执行命令sudo systemctl reboot
关机:执行命令sudo systemctl poweroff
待机:执行命令sudo systemctl suspend
休眠:执行命令sudo systemctl hibernate

日志管理

  1. systemd可以使用journalctl命令管理日志。
    执行命令sudo journalctl可查看所有日志,如图1-1所示。

图1-1 筛选出与内核相关日志
  1. 执行命令sudo journalctl -p err,可查看所有日志,并筛选出错误相关的日志,如图1-2所示。

图1-2 筛选错误相关的日志
  1. 除了err,还可以替换为其他的参数来查看所有日志,并筛选出错误相关的日志,可选参数有0:emerg、1:alert、2:crit、3:err、4:warning、5:notice、6:info或7:debug。其中数字代表级别,级别越高越详细。在使用err查看日志时也可以使用3来代替err,其效果是一样的。
  2. 执行命令sudo journalctl -b,可查看本次开机到查看日志时的日志,如图1-3所示。

图1-3开机到查看日志时的日志
  1. 执行命令sudo journalctl -b -l,可查看上一次开机到关机的日志;
  2. 上述参数还可以组合使用,如执行命令sudo journalctl -b -l -k -p err可查看上一次开机到关机的日志,并筛选出内核出错的日志;
    还可以查看自某个时间点以来的日志,如执行命令sudo journalctl –since “2021-09-19 12:00”,即可查看自该时间点到查看日志时的日志;
  3. 执行命令sudo journalctl –since “2021-09-18 12:00” - -until ”2021-09-19 12:30”,可查看指定时间段的日志;
  4. 除了查看指定时间段的日志外还可以查看指定服务的日志,如查看NGINX服务的日志,执行命令sudo journalctl -u nginx即可;
    查看完日志后可执行命令sudo journalctl > ~/rizhi.txt,重定向日志到根目录下的rizhi.txt中。
  5. 如果发现只能显示本次启动的日志,而不能显示上次启动的的日志,可能时因为日志没有存储在磁盘上,可执行如下命令来开启的磁盘存储功能。
    sudo mkdir /var/log/journal
    sudo chown root:system-journal /var/log/journal
    sudo chmod 2775 /var/log/journal
    sudo systemctl restart system-journald.service

主机信息管理

  1. 执行命令homenamectl,可查询主机信息,如图1-4所示。

图1-4 主机信息
  1. 执行命令sudo hostnamectl set-hostname UOS可设置主机名称,在执行命令bash刷新主机名称,如图1-5所示。

图1-5设置主机主机名称

系统语言管理

执行命令localectl可查询系统语言设置,如图1-6所示。

图1-6系统语言设置

执行命令sudo localect set-locale LANG=zh_CN.utf8可设置系统语言为中文;
执行命令sudo localectl set-keymap zh_CN可设置系统键盘布局为中文。

时间管理

执行timedatectl 可查看系统时区,如图1-7所示。

图1-7 系统时区

执行命令timedatectl list-timezone,可显示所有可用时区;
执行命令sudo timedatectl set-ntp false,可关闭网络同步时间服务;
执行命令sudo timedatectl set-timezone America/New_York,可设置系统时区。
当需要手动更改系统本地时间时,需要先手动关闭同步时间服务。

登录管理

当某个用户登录操作系统后,systemd 会在内存开辟一块区域,叫作session,里面存放着这个用户登录后运行的进程。当用户注销后,session会被删除,内存会被回收。
执行命令loginctl list-sessions,列出当前session,如图1-8所示。

图1-8 session

systemd允许同一用户在不同终端同时登录,但每次登录都会生成新的session,一个session的崩溃或者注销不会影响到另一个session,session之间有一定的隔离性。
执行命令loginctl list-users,即可列出当前登录用户,如图1-9所示。

图1-9 当前登录用户

系统错误排查

当系统没能按照预期运行,出现应用程序无响应、卡顿或者崩溃的现象时,可以通过查看系统的各种日志来定位问题所在,然后通过修改代码或者修改配置等方式来解决。

使用journalctl查看内核和应用错误

在终端中执行命令sudo journalctl,然后输入斜杠【/】进入搜索模式;
输入关键词查找内核和应用错误的详细信息,并按【Enter】键进行搜索。按【PageUp】键和【PageDown】键进行翻页,或按【N】键搜索下一个匹配。

使用coredumpctl查看应用崩溃错误

在终端中执行命今sudo apt install systemd-coredump安装systemd-coredump工具。当程序崩溃时,可能会产生core文件(一般用来调试代码bug),然后被systemd-coredump工具捕获,这样可以很方便地使用coredumpctl命令查看应用崩溃的信息。
执行命令sudo coredumpctl list可查看崩溃的进程列表,其中包含崩溃进程的PID值(进程ID,各进程的身份标识),如图1-10所示。

图1-10 崩溃的进程列表

执行命令sudo coredumpctl info 796,可查看某个崩溃进程的详细信息,其中796值得是该进崩溃进程的PID值,如图1-11所示。

图1-11 查看某个崩溃进程的详细信息

想进一步了解崩溃原因,可以进行调试。在终端中执行命令sudo coredumpctl debug 10914,系统默认调用GDB进行调试,可以使用bt命令查看堆栈信息,确定应用崩溃的原因,如图1-12所示。

图1-12 确定应用崩溃的原因

查看系统日志和内核日志

在 system-journal之前,Linux系统上一般是使用rsyslog来记录系统日志和内核日志。日志一般放在/var/log/message目录下,可以使用cat、less或tail去读取日志。
执行命令sudo less /var/log/messages,可查看所有日志;
执行命令sudo less /var/log/syslog,可查看系统日志;
执行命令sudo less /var/log/kern.log,可查看内核日志;
执行命令sudo less /var/log/boot.log可查看启动日志;
执行命令sudo less /var/log/user.log可查看用户日志。

查看桌面日志

在系统运行的过程中,有时会遇到桌面崩溃、进程退出、桌面黑屏等情况,可以执行命令sudo less /var/log/Xorg.0.log查看桌面日志来定位问题。

查看串口日志

有些问题,如磁盘损坏、内核崩溃、固件问题等,通过上文的方式均无法定位问题,需要以更加底层的方式去获取日志,此时就需要通过串口去获取固件、内核以及操作系统的日志。


制作成员: 郑伟钦
排版: 梁汉荣
初审: 蔡君贤
复审: 二月二


点击下方“正月十六工作室”查看更多学习资源

正月十六工作室

统信uos桌面操作系统博文汇总目录

统信UOS桌面操作系统博文汇总目录UOS操作系统-系统安装UOS操作系统-登录与激活通信UOS操作系统-桌面环境UOS操作系统-控制中心UOS操作系统-文件与目录管理UOS操作系统-软件管理UOS操作系统-文档处理UOS操作系统-上网UOS操作系统-多... 查看详情

信创操作系统--麒麟kylin桌面操作系统(项目十二使用systemd管理系统服务)(代码片段)

信创操作系统–麒麟Kylin桌面操作系统(项目十二使用Systemd管理系统服务)目录1.使用Systemd管理系统服务1.1Systemd概述1.2服务管理1.3电源管理1.4日志管理1.5主机信息管理1.6系统语言管理1.7时间管理1.8登录管理2.系统错误排查2.1使... 查看详情

信创操作系统--麒麟kylin桌面操作系统(项目十二使用systemd管理系统服务)(代码片段)

信创操作系统–麒麟Kylin桌面操作系统(项目十二使用Systemd管理系统服务)目录1.使用Systemd管理系统服务1.1Systemd概述1.2服务管理1.3电源管理1.4日志管理1.5主机信息管理1.6系统语言管理1.7时间管理1.8登录管理2.系统错误排查2.1使... 查看详情

信创操作系统--麒麟kylin桌面操作系统(项目十二使用systemd管理系统服务)(代码片段)

信创操作系统–麒麟Kylin桌面操作系统(项目十二使用Systemd管理系统服务)目录1.使用Systemd管理系统服务1.1Systemd概述1.2服务管理1.3电源管理1.4日志管理1.5主机信息管理1.6系统语言管理1.7时间管理1.8登录管理2.系统错误排查2.1使... 查看详情

如何在debian上使用systemd管理系统

参考技术A检查你的Linux系统使是否使用Systemd服务如果你的Linux发行版是否使用systemd还不能确定,打开一个终端窗口,运行以下命令。这说明在Linux系统上你systemd的版本号:systemd-version分析引导过程该systemd-analyze命令允许你查看... 查看详情

uos操作系统-使用终端

UOS操作系统-使用终端目录前言使用终端bash与终端使用终端与tty使用终端使用tty基本的shell操作查看文件内容的命令文件和目录操作命令提取、排序以及筛选数据操作命令基本终端导航命令文件权限命令前言安全中心是统信UOS预... 查看详情

如何查看linux服务器运行状态

...动等,大多数最新的Linux发行版在使用相同的进程管理器-systemd。systemd是Linux系统和服务管理器init进程的一个替代品,它与SysV和LSBinit脚本兼容,systemctl命令是管理systemd的主要工具。systemd的组件systemd的组件在本教程中,我们将... 查看详情

uos操作系统-查看系统硬件信息

UOS操作系统-查看系统硬件信息目录前言查看系统硬件信息使用设备管理器查看USB设备信息设备管理器内查看USB设备lsusb命令查看USB设备信息使用lshw使用dmideccodedmidecode显示BIOS信息dmidecode显示设备序列号dmidecode显示系统信息dmidecode... 查看详情

centos7系列系统服务systemd

Systemd:在CentOS7中开始使用了Systemd,它取代了原来的SysVinit,我们在系统中查看,你会发现systemd这个进程的PID为1,而不是原来的init进程。systemd进程将作为所有进程的父进程运行,这就是在CentOS7中的新的进程管理程序。650)this.wi... 查看详情

uos操作系统-上网

UOS操作系统-上网目录前言1.连接网络1.1有线网络1.2无线网络2UOS浏览器2.1使用浏览器2.2安装插件前言随着互联网的普及,上网已经成为大多数人生活和工作不可或缺的部分。本文主要介绍统信UOS网络连接、浏览器使用和插件安... 查看详情

如何在systemd下管理linux系统的时间和日期

方法/步骤1检查你的Linux系统使是否使用Systemd服务如果你的Linux发行版是否使用systemd还不能确定,打开一个终端窗口,运行以下命令。这说明在Linux系统上你systemd的版本号:systemd-version2分析引导过程该systemd-analyze命令允许你查看... 查看详情

uos系统-国产统一操作系统uos的基本知识

一、UOS操作系统含义及现状  UOS操作系统与windows不同的是,UOS统一操作系统支持龙芯、申威、华为鲲鹏等一票国产处理器芯片。它的诞生是多家国内科技公司联合孕育的结果,包括中国电子集团、武汉深之度科技、南京诚迈... 查看详情

grub2和systemd

...级了引导程序和系统管理程序,使用grub2替代了grub来引导操作系统,使用systemd替换了init管理系统程序,systemd的升级比较激进,从架构上变更init管理程序。微服务docker却希望使用dockerdomean管理微服务中的进程,这是一个问题。... 查看详情

初识systemd-使用篇(代码片段)

Linux操作系统的开机过程是这样的,即从BIOS开始,然后进入BootLoader,再加载系统内核,然后内核进行初始化,最后启动初始化进程。初始化进程作为Linux系统的第一个进程,它需要完成Linux系统中相关的初始化工作,为用户提供... 查看详情

支持国产自主可控os——信创服务器操作系统的配置与管理(统信uos版)-新书发布

支持国产自主可控OS——信创服务器操作系统的配置与管理(统信UOS版)-新书发布近年来,我国加快推进信息创新建设工作,目前,国产操作系统已在党政军、教育、金融、交通等行业快速普及,并将快速... 查看详情

有没有办法运行使用操作系统身份验证来运行 RMAN 备份作为 systemd 的 .NET Core 服务?

】有没有办法运行使用操作系统身份验证来运行RMAN备份作为systemd的.NETCore服务?【英文标题】:Isthereawaytoruna.NETCoreServicethatusesOSauthenticationtorunRMANbackupsassystemd?【发布时间】:2021-01-0108:21:11【问题描述】:我在C#/.NETCore中设置了... 查看详情

使用systemd在系统关闭时运行脚本

...本,并且测试其运行无误。那么,如下步骤可以让您使用systemd在系统关闭时运行脚本。首先,在/etc/systemd/system下创建一个文件run-script-when-shutdown.service,并且让其内容如下而后,执行如下命令,使能新创建的服务为了便于调整... 查看详情

systemd使用

systemd 是Linux下的一款系统和服务管理器,兼容SysV,Upstart和LSB的启动脚本。在CentOS7中成为默认的服务管理器。#CentOS5:SysVinit#CentOS6:Upstart#CentOS7:Systemd systemd的特性有:支持并行化任务;同时采用socket式与D-Bus总线式激活服务... 查看详情