linux服务 学习

服务(Service)

在Linux操作系统中,服务(Service)是一个基本概念,它通常指的是运行在后台的、持续提供特定功能或资源给系统内部组件或者网络上的客户端程序。

这些服务是系统正常运行和提供各种功能的关键组成部分,它们可以按照预定义的启动顺序自动加载,并在整个系统运行期间保持活动状态。

常见的Service
系统基础服务:

systemd:现代Linux发行版普遍采用的初始化系统,负责启动、停止和管理系统中的各种服务及进程。

cron 或 anacron:定时任务调度服务,用于按照预定时间执行命令或脚本。

syslog 或 rsyslog:日志记录服务,收集并管理系统的各种日志信息。

networking 或 network-manager:网络配置与管理服务,负责系统网络接口的启动和连接设置。

网络服务:

sshd:安全外壳(SSH)服务器,提供远程登录、文件传输等功能。

httpd 或 nginx:Web服务器,用于托管网站内容和服务HTTP请求。

dhcpd:动态主机配置协议(DHCP)服务器,自动分配IP地址给局域网内的客户端设备。

bind 或 dnsmasq:域名系统(DNS)服务器,处理域名解析请求。

smtpd(例如Postfix或Exim):邮件发送服务,实现电子邮件的发送功能。

数据库服务:

mysqld 或 mariadb-server:MySQL或MariaDB数据库服务器。

postgresql:PostgreSQL数据库服务器。

mongodb:MongoDB文档型数据库服务器。

文件共享服务:

nfs-server:网络文件系统(NFS)服务器,允许网络中的其他计算机通过网络挂载并访问本地文件系统。

samba:SMB/CIFS文件共享服务,支持Windows和其他操作系统之间的文件和打印共享。

身份验证与授权服务:

ldap 或 slapd:轻量级目录访问协议(LDAP)服务器,用于集中式用户和组账户管理。

krb5 或 kdc:Kerberos身份验证服务,提供网络安全认证。

虚拟化服务:

libvirtd 或 virt-manager:基于libvirt的虚拟机管理工具及相关服务。

容器管理服务:

docker:流行的容器引擎,用于部署和运行应用程序的容器化环境。

containerd 或 cri-o:容器运行时环境服务,为容器提供底层支持。

监控与性能分析:

snmpd:简单网络管理协议(SNMP)守护程序,提供网络设备状态监测。

prometheus 或 node_exporter:监控与警报系统,收集并展示系统和应用指标。

安全相关服务:

firewalld 或 iptables:防火墙服务,控制进出系统的网络流量。

fail2ban:防止恶意登录尝试的安全工具。

uwsgi 或 apache mod_wsgi:Web应用服务器中间件,用于托管Python等语言编写的Web应用程序。

Linux服务特点:

持久性:服务通常是长期运行的,不会因为用户注销或终端会话结束而停止运行。

后台运行:服务不依赖于用户的交互操作,它们在后台作为守护进程(Daemon)执行。

系统核心功能支持:一些服务直接与内核相关联,比如网络服务、文件系统服务、打印服务等,它们确保了系统的基础设施正常运作。

管理与控制:Linux系统通过init系统(如Systemd、SysV init或其他init替代品)来管理和控制服务的启动、停止、重启以及查看其运行状态等。

延伸:服务单元分类

Service命令

在Linux系统中,服务的配置文件通常放在/etc/init/或者/etc/init.d/目录下,具体取决于你的系统使用的是Upstart还是Systemd。

对于Systemd(现代Linux系统的初始化系统),服务单元通常有.service扩展名,例如sshd.service。这些.service文件存放在/etc/systemd/system/目录。

对于Upstart(早期Ubuntu系统使用的初始化系统),服务脚本通常有.conf扩展名,例如ssh.conf。Upstart的配置文件存放在/etc/init/目录。

作用:service命令可以启动、停止、重新启动和关闭系统服务,还可以显示所有系统服务的当前状态。

1.格式:service <service>

打印指定服务<service>的命令行使用帮助。

2.格式:service <service> start

启动指定的系统服务<service>

3.格式:service <service> stop

停止指定的系统服务<service>

4.格式:service <service> restart

重新启动指定的系统服务<service>,即先停止(stop),然后再启动(start)。

5.格式:chkconfig --list

查看系统服务列表,以及每个服务的运行级别。

6.格式:chkconfig <service> on

设置指定服务<service>开机时自动启动。

7.格式:chkconfig <service> off

设置指定服务<service>开机时不自动启动。

8.格式:ntsysv

以全屏幕文本界面设置服务开机时是否自动启动。

  1. 查看系统服务的状态:

service --status-all

chkconfig命令

chkconfig是管理系统服务(service)的命令行工具。所谓系统服务(service),就是随系统启动而启动,随系统关闭而关闭的程序。

chkconfig可以更新(启动或停止)和查询系统服务(service)运行级信息。更简单一点,chkconfig是一个用于维护/etc/rc[0-6].d目录的命令行工具。

chkconfig 是一个用来管理 Red Hat 及其衍生系统如 CentOS 中的启动项的命令行工具。如果你的系统中没有 chkconfig 命令,可能是因为你使用的是基于 Debian 的系统(如 Ubuntu),在这种系统中通常使用 update-rc.d 命令来管理启动项.

设置service开机是否启动:

chkconfig  name on/off/reset

on表示开启,off表示关闭,reset表示重置。

设置service运行级别

chkconfig --level levels

等级0表示:表示关机

等级1表示:单用户模式

等级2表示:无网络连接的多用户命令行模式

等级3表示:有网络连接的多用户命令行模式

等级4表示:不可用

等级5表示:带图形界面的多用户模式

等级6表示:重新启动

列出service启动信息

# chkconfig --list [name]

如果不指定name,会列出所有services的信息

chkconfig [–add][–del][–list][系统服务]

chkconfig --add <名称>

chkconfig --del <名称>

–add增加所指定的系统服务,让chkconfig指令得以管理它,并同时在系统启动的叙述文件内增加相关数据。

–del删除所指定的系统服务,不再由chkconfig指令管理,并同时在系统启动的叙述文件内删除相关数据。

systemctl 命令

systemctl 是一个用于检视和控制 systemd 系统和服务管理器的命令行工具。systemd 是用于启动、停止和管理 Linux 系统中的服务的守护进程。

systemd配置目录有以下三种

/usr/lib/systemd/system/:每个服务最主要的启动脚本设置,该目录存放软件默认的配置,不建议修改

/run/systemd/system/:系统执行过程中所产生的服务脚本,这些脚本的优先级要比

/usr/lib/systemd/system/ 高

/etc/systemd/system/:管理员依据主机系统的需求所创建的执行脚本,执行优先级又比 /run/systemd/system/ 高  

因此用户自定义的服务、修改的配置文件一般放在/etc/systemd/system/目录

/etc/systemd/system/目录下存放的是需要开机执行的服务,该目录下有大量的链接文件,链接到/usr/lib/systemd/system/目录下,该目录下的文件才是systemd实际启动的服务脚本文件。可通过ll命令查看,即/etc/systemd/system/存放的是链接快捷方式,/usr/lib/systemd/system/才是实际启动的服务脚本

如:

以vsftpd.service为例,如果要对其进行修改,可以在以下目录中进行操作。

/usr/lib/systemd/system/vsftpd.service:官方的默认配置文件;/etc/systemd/system/vsftpd.service.d/custom.conf:在 /etc/systemd/system 下面创建与配置文件相同文件名的目录,但是要加上 .d 的扩展名。然后在该目录下创建配置文件即可。配置文件后缀最好为 .conf 。该目录下的文件会附件进入/usr/lib/systemd/system/vsftpd.service

/etc/systemd/system/vsftpd.service.wants/*:此目录内的文件为链接文件,设置依赖服务的链接。意思是启动了 vsftpd.service 之后,最好再启动这目录下面建议的服务。/etc/systemd/system/vsftpd.service.requires/*:此目录内的文件为链接文件,设置依赖服务的链接。意思是在启动 vsftpd.service 之前,需要事先启动哪些服务的意思。

systemctl命令是系统服务管理器指令,它实际上将 service 和 chkconfig 这两个命令组合到一起

格式:systemctl [OPTIONS] COMMAND [UNIT]

OPTIONS: 可选参数,用于指定 systemctl 的行为。

COMMAND: 必需参数,用于执行特定的 systemd 命令,例如启动、停止或重新启动服务。

UNIT: 可选参数,用于指定要操作的服务或单元。

常用选项

-H, --host: 指定要在远程主机上运行的 systemd 实例的主机名或 IP 地址。

-a, --all: 显示所有已加载的单位,而不仅仅是当前活动的单位。

-t, --type: 根据指定的单元类型筛选单元列表。支持的单元类型包括 service、socket、mount 等。

-u, --user: 执行与当前用户相关联的用户级服务。

常见的命令:

  1. 列出所有可用单元:

systemctl list-unit-files

  1. 检查某个单元是否开机自启动:

systemctl is-enabled 服务名

  1. 检查某个服务的运行状态

systemctl status 服务名

Loaded:该行表示此服务是否会开机启动,Loaded有如下:

  1. enabled:这个 服务将在开机时被执行
  2. disabled:这个 daemon 在开机时不会被执行
  3. static:这个 daemon 不可以自己启动 (enable 不可),不过可能会被其他的 enabled的服务来唤醒
  4. mask:这个 daemon 无论如何都无法被启动!因为已经被强制注销 (非删除)。
  5. vendor preset表示第一次安装时的预设值。

Active:现在这个服务单元的状态是正在执行 (running) 或没有执行 (dead)。如下

  1. active (running):正有一只或多只程序正在系统中执行的意思
  2. active (exited):仅执行一次就正常结束的服务,目前并没有任何程序在系统中执行。
  3. active (waiting):正在执行当中,不过还再等待其他的事件才能继续处理。
  4. inactive:这个服务目前没有运行。

  1. 列出所有服务:

systemctl list-unit-files --type=service

  1. 启动,停止,重启、重新加载服务配置服务

systemctl  start 服务名 

systemctl stop 服务名

systemctl restart 服务名   //重启服务

systemctl reload 服务名   //reload是在不重启服务的情况下重新加载配置文件

  1. 查询服务是否激活

systemctl is-active 服务名

  1. 配置是否开机自启动

systemctl disable 服务名   //开机不启动

systemctl enable 服务名   //开机启动

  1. 使用systemctl命令杀死服务

systemctl kill 服务名

列出指定服务的所有依赖项和服务间的启动顺序关系

systemctl list-dependencies 服务名

如:systemctl list-dependencies ssh.service

查看哪些服务的运行依赖于本服务

systemctl list-dependencies 服务名  --reverse

如:systemctl list-dependencies ssh.service --reverse

  1. 重新加载Systemd配置

systemctl daemon-reload

命令参数 参数说明

start 立刻启动后面接的unit

stop 立刻关闭后面接的unit

restart 立刻关闭后启动后面接的unit,亦即执行stop再start的意思

reload 不关闭后面接的unit的情况下,重载配置文件,让设定生效

enable 设定下次开机时,后面接的unit会被启动

disable 设定下次开机时,后面接的unit 不会被启动

status 目前后面接的这个unit 的状态,会列出是否正在执行、是否开机启动等信息。

is-active 目前有没有正在运行中

is-enable 开机时有没有预设要启用这个unit

kill 不要被kill这个名字吓着了,它其实是向运行unit的进程发送信号

show 列出unit的配置。

mask 注销unit,注销后你就无法启动这个unit了

unmask 取消对unit的注销

list-units 依据unit列出目前有启动的unit。若加上–all才会列出没启动的。(等价于无参数)

list-unit-files 列出所有以安装unit以及他们的开机启动状态(enabled、disabled、static、mask)。

–type=TYPE 就是unit type,主要有service,socket,target等

get-default 取得目前的 target

set-default 设定后面接的 target 成为默认的操作模式

isolate 切换到后面接的模式

编写.service

.service文件通常由三部分组成:

[Unit]: 定义与Unit类型无关的通用选项;用于提供unit的描述信息,unit行为及依赖关系等。

[Service]:与特定类型相关的专用选项;此处为Service类型。

[Install]:定义由"systemctl enable"及"systemctl disable"命令在实现服务启用或禁用时用到的一些选项。

Unit段的常用选项

Description:描述信息,意义性描述;

After:定义unit的启动次序;表示当前unit应晚于哪些unit启动;其功能与Before相反;

Before:表示当前unit应先于哪些unit启动。

Requies:被依赖的units无法启动时,当前的unit即无法启动;

Wants:当前这个units启动后最好还要启动其他的units比较好。

Confilcts:定义units 的冲突关系;只能二选一启动。

Service段的常用选项

Type:用于定义影响ExecStart及相关参数的功能的unit进程类型;

类型有:

simple:默认值,指定ExecStart字段的进程为主进程

forking:开子进程执行, 原生父进程结束后就会终止子进程运行。

Oneshot:执行一次

Dbus:

Notify:启动后发送会发送通知信号通知systemd

Idle:等其他任务结束后才运行

EnvironmentFile:环境配置文件;

ExecStart:指明启动unit要运行的命令或脚本;ExecStart, ExecStartPost

ExecStop:指明停止unit要运行的命令或脚本;

Restart:

可选项 描述

no 退出后不会重启

on-success 当进程正常退出时(退出码为0) 执行重启

on-failure 当进程不正常退出时(退出码不为0) 执行重启

on-abnormal 当被信号终止和超时执行重启

on-abort 当收到没有捕捉到的信号终止时执行重启

on-watchdog 当看门狗超时时执行重启

always 一直重启

KillMode

可选项  描述

control-group    杀掉当前进程中所有的进程

Process      杀掉当前进程的主进程

Mixed        主进程将收到 SIGTERM 信号,子进程收到 SIGKILL 信号

None        不杀掉任何进程

TimeoutSec:此服务在启动或关闭时,因为某些原因无法顺利正常启动或结束,在等待多久进入强制结束的状态。

Install段的常用配置:

Alias:一个链接的,别名,

RequiredBy:依赖哪些unit;

WantBy:被哪些unit所依赖;一般是*.target unit

一般填为WantedBy=multi-user.target

例子:pgsql.service

[Unit]

Description=PostgreSQL database server

After=network.target

[Service]

Type=forking

User=postgres

Environment=PGSTARTTIMEOUT=200

Environment=PGDATA=/usr/local/pgsql/data

ExecStart=/usr/local/pgsql/bin/pg_ctl start -D ${PGDATA} -s -w -t ${PGSTARTTIMEOUT}

ExecStop=/usr/local/pgsql/bin/pg_ctl stop -D ${PGDATA} -s -m fast

ExecReload=/usr/local/pgsql/bin/pg_ctl reload -D ${PGDATA} -s

TimeoutSec=500

[Install]

WantedBy=multi-user.target

自定义自启动服务

新建test.service并编辑服务单元文件内容

[Unit]

Description=test Service

After=network.target

[Service]

Type=simple

ExecStart=/root/study/test/test

Restart=always

[Install]

WantedBy=multi-user.target

把该test.service放到 /etc/systemd/system目录下

修改test.service的权限,使其可执行 chmod 777 test.service

在终端输入下面命令,使重新加载Systemd配置

sudo systemctl daemon-reload

设置开机自启动服务

sudo systemctl enable test.service

(可选)立即启动服务

sudo systemctl start test.service

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/870967.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【三维重建汇总】NeRF和GS重建中,如何排除干扰物?(提升质量)

汇总最近NeRF与GS提升质量的论文 文章目录 前言一、NeRF On-the-go&#xff1a;利用不确定性落地真实世界&#xff08;CVPR24&#xff09;摘要1.DINOv2特征的不确定性预测2.NeRF中干扰物去除的不确定性3.优化4. Dilated Patch 扩大采样5.实验结果 二、Pixel-GS:像素感知的梯度密…

关于nginx标准配置参数介绍

标准配置参数&#xff1a; user root;#配置用户或者组&#xff0c;默认为nobody worker_processes 4;#允许生成的进程数&#xff0c;默认为1 项目中nginx.conf配置文件 user root; worker_processes 4; //最大的进程数&#xff0c;要看服务器的内核是多少核的&#xff0…

Excel“取消工作表保护”忘记密码并恢复原始密码

文章目录 1.前言2.破解步骤3. 最终效果4.参考文献 1.前言 有时候别人发来的Excel中有些表格不能编辑&#xff0c;提示如下&#xff0c;但是又不知道原始密码 2.破解步骤 1、打开您需要破解保护密码的Excel文件&#xff1b; 2、依次点击菜单栏上的视图—宏----录制宏&#xf…

解决k8s分布式集群,子节点加入到主节点失败的问题

1.问题情况 Master主节点在 使用 kubeadm init 成功进行初始化后&#xff0c;如下所示 Your Kubernetes control-plane has initialized successfully!To start using your cluster, you need to run the following as a regular user:mkdir -p $HOME/.kubesudo cp -i /etc/k…

【Qt】 常用控件QLCDNumber

常用控件QLCDNumber QLCDNumber是一个专门用来显示数字的控件&#xff0c;类似于“老式计算机”的效果。 QLCDNumber的属性 属性说明 intValue QLCDNumber 显⽰的数字值(int). value QLCDNumber 显⽰的数字值(double). 和 intValue 是联动的. 例如给 value 设为 1.5, i…

玩转单例模式

目录 1. 饿汉式 2. 懒汉式 3. volatile解决指令重排序 4. 反射破坏单例模式 5. 枚举实现单例模式 6. 枚举实现单例模式的好处 7. 尝试反射破坏枚举 8. CAS实现单例模式 所谓单例模式&#xff0c;就是是某个类的实例对象只能被创建一次&#xff0c;单例模式有多种实现方…

【安全工具推荐-Search_Viewer资产测绘】

目录 一、工具介绍 二、工具配置 三、传送门 一、工具介绍 Search_Viewer&#xff0c;集Fofa、Hunter鹰图、Shodan、360 quake、Zoomeye 钟馗之眼、censys 为一体的空间测绘gui图形界面化工具&#xff0c;支持一键采集爬取和导出fofa、shodan等数据&#xff0c;方便快捷查看…

批发供应系统:提升效率与竞争力的关键

在当今复杂多变的商业环境中&#xff0c;批发供应系统作为连接生产商、分销商与零售商的重要纽带&#xff0c;其效率与智能化水平直接决定了供应链的运作效率与市场竞争力。随着信息技术的飞速发展&#xff0c;尤其是大数据、云计算、人工智能&#xff08;AI&#xff09;及物联…

基于HarmonyOS的宠物收养系统的设计与实现(一)

基于HarmonyOS的宠物收养系统的设计与实现&#xff08;一&#xff09; 本系统是简易的宠物收养系统&#xff0c;为了更加熟练地掌握HarmonyOS相关技术的使用。 项目创建 创建一个空项目取名为PetApp 首页实现&#xff08;组件导航使用&#xff09; 官方文档&#xff1a;组…

Qt系列之数据库(三)补充篇

一、数据库删除操作&#xff1a; 基本语法 DELETE FROM table_name WHERE [condition]; DELETE FROM ---- 关键字 table_name ---- 表名 WHERE ---- 条件的关键字 [condition] --- 条件表达式在这里插入代码片具体使用&#xff1a; QString sqlDelete QString("DELETE…

落地 DevOps,探索高效研发运营一体化解决方案

前言与概述 伴随着企业业务的快速发展&#xff0c;为了支撑业务发展&#xff0c;提高 IT 对业务的支撑能力建设。在研发工程协同方面&#xff0c;希望加强代码管理&#xff0c;实现持续构建、自动化测试、自动化部署、自动化运维&#xff0c;同时加强产品的安全和质量管理&…

ggplot阶截断坐标轴-gggap

目录 gggap包安装 功能查询 简单版使用代码 复杂版使用代码 gggap包安装 CRAN: Package gggap (-project.org) 手动下载安装 功能查询 > ?gggap > ?gggapDefine Segments in y-Axis for ggplot2 Description Easy-to-define segments in y-axis for ggplot2. …

React+Vis.js(05):节点的点击事件

文章目录 需求实现思路抽屉实现完整代码需求 双击节点,弹出右侧的“抽屉”,显示节点的详细信息 实现思路 vis.network提供了一个doubleClick事件,代码如下: network.on(doubleClick, function (properties) {// console.log(nodes);let id = properties

【数据结构】PTA 带头结点的链式表操作集 C语言

本题要求实现带头结点的链式表操作集。 函数接口定义&#xff1a; List MakeEmpty(); Position Find( List L, ElementType X ); bool Insert( List L, ElementType X, Position P ); bool Delete( List L, Position P ); 其中List结构定义如下&#xff1a; typedef struc…

STM32第十二节(中级篇):串口通信(第一节)——功能框图讲解

前言 我们在51单片机中就已经学习过了串口通信的相关知识点&#xff0c;那么我们现在在32单片机上进一步学习通信的原理。我们主要讲解串口功能框图以及串口初始化结构体以及固件库讲解。 STM32第十二节&#xff08;中级篇&#xff09;&#xff1a;串口通信&#xff08;第一节…

漏洞扫描的重要性,如何做好漏洞扫描服务

随着互联网技术的飞速发展&#xff0c;网络安全问题已成为不容忽视的重大挑战。其中&#xff0c;系统漏洞威胁作为最常见且严重的安全危险之一&#xff0c;对组织和个人的信息资产构成了巨大威胁。下面我们就来了解下漏洞扫描的好处、漏洞扫描的操作方法以及如何做好网络安全。…

使用 onBeforeRouteUpdate 组合式函数提升应用的用户体验

title: 使用 onBeforeRouteUpdate 组合式函数提升应用的用户体验 date: 2024/8/15 updated: 2024/8/15 author: cmdragon excerpt: 摘要&#xff1a;本文介绍如何在Nuxt 3开发中使用onBeforeRouteUpdate组合式函数来提升应用用户体验。通过在组件中注册路由更新守卫&#xf…

个人理解—MKCONFIG的常用配置参数与链接脚本

前面的文章说到&#xff0c;编写Makefile文件的常用语句以及相应的语法&#xff0c;但也提到了MKCONFIG去控制Makefile文件的变量实现条件编译&#xff0c;在MKCONFIG过程中&#xff0c;常用的变量配置有例如架构配置、交叉编译工具链配置等&#xff0c;这些选项要么你去通过改…

界面控件DevExpress .NET MAUI v24.1 - 发布TreeView等新组件

DevExpress拥有.NET开发需要的所有平台控件&#xff0c;包含600多个UI控件、报表平台、DevExpress Dashboard eXpressApp 框架、适用于 Visual Studio的CodeRush等一系列辅助工具。屡获大奖的软件开发平台DevExpress 今年第一个重要版本v23.1正式发布&#xff0c;该版本拥有众多…

10 个 C# 关键字和功能

在 Stack Overflow 调查中&#xff0c;C# 语言是排名第 5 位的编程语言。它广泛用于创建各种应用程序&#xff0c;范围从桌面到移动设备再到云原生。由于有如此多的语言关键字和功能&#xff0c;对于开发人员来说&#xff0c;要跟上新功能发布的最新信息将是一项艰巨的任务。本…