《Linux从小白到高手》理论篇:Linux的系统服务管理

news2024/10/5 17:45:26

值此国庆佳节,深宅家中,闲来无事,就多写几篇博文。本篇详细深入介绍Linux的系统服务管理。
系统服务通常在系统启动时自动启动,并在后台持续运行,为系统和用户提供特定的功能。例如,网络服务、打印服务、数据库服务等。系统服务可以由系统管理员进行管理,包括启动、停止、重启和配置。
在这里插入图片描述

1.Linux系统服务的分类

1、按功能分类
网络服务:
负责网络通信和连接管理。例如:
sshd(Secure Shell 服务):允许远程用户通过 SSH 协议安全地登录到系统进行管理和操作。
httpd(Apache HTTP Server)或nginx:Web 服务器,用于托管网站和提供网页服务。
dhcpd(Dynamic Host Configuration Protocol daemon):动态分配 IP 地址等网络配置信息给客户端。
打印服务:
管理打印机和打印任务。例如:
cups(Common Unix Printing System):提供打印服务,包括打印机的配置、打印队列管理等。
数据库服务:
存储和管理数据。例如:
mysql或postgresql:关系型数据库服务器,为应用程序提供数据存储和查询功能。
文件共享服务:
允许用户在网络上共享文件。例如:
samba:实现与 Windows 系统的文件和打印机共享。
nfs(Network File System):在 Linux 和 Unix 系统之间共享文件。
系统监控服务:
监控系统的性能和状态。例如:
nagios或zabbix:可以监控服务器的各种指标,如 CPU 使用率、内存使用情况、磁盘空间等,并在出现问题时发出警报。
邮件服务:
负责发送和接收电子邮件。例如:
postfix或sendmail:邮件传输代理,用于发送和接收邮件。
dovecot:邮件存储和检索服务器。
2、按启动方式分类
系统启动时自动启动的服务:
这些服务通常是系统正常运行所必需的,或者是为了提供一些基本的功能而在系统启动时自动启动。例如,网络服务、系统日志服务等。
可以通过systemctl或chkconfig等工具来管理这些服务的自动启动状态。
按需启动的服务:
这些服务只有在需要时才会被启动,例如当用户请求特定的功能或应用程序需要特定的服务时。例如,打印服务只有在用户发送打印任务时才会启动。
可以通过手动启动这些服务,或者通过应用程序的请求来启动它们。
3、按运行级别分类
不同的运行级别对应不同的服务集合:
Linux 系统有多个运行级别,如 0(关机)、1(单用户模式)、2(多用户模式,无网络)、3(多用户模式,有网络)、4(用户自定义)、5(图形界面多用户模式)、6(重启)。
在不同的运行级别下,系统启动的服务会有所不同。例如,在单用户模式下,只有最基本的服务会启动,而在图形界面多用户模式下,会启动更多的服务,包括图形界面相关的服务。

2.Linux系统服务的管理工具

1、systemctl
功能:
systemctl是 Systemd 的主要命令行工具,用于管理系统服务、系统状态和系统资源等。它提供了一种统一的方式来管理不同类型的系统服务,包括启动、停止、重启、查看状态、设置服务的自动启动等功能。
常见用法:
启动服务:

systemctl start service_name

例如,启动 Apache HTTP Server 服务可以使用systemctl start httpd。
停止服务:

systemctl stop service_name

重启服务:

systemctl restart service_name

查看服务状态:

systemctl status service_name

这将显示服务的当前状态、启动时间、日志信息等。
使服务在系统启动时自动启动:

systemctl enable service_name

禁止服务在系统启动时自动启动:

systemctl disable service_name

2、service
功能:
在一些旧版本的 Linux 系统中,service命令用于管理系统服务。它可以启动、停止、重启服务,并查看服务的状态。
常见用法:
启动服务:

service service_name start

停止服务:

service service_name stop

重启服务:

service service_name restart

查看服务状态:

service service_name status

3、chkconfig
功能:
chkconfig主要用于在基于 SysV init 的系统中管理服务的启动级别。它可以设置服务在不同的运行级别下是否自动启动。
常见用法:
查看服务在不同运行级别下的启动状态:

chkconfig --list service_name

设置服务在特定运行级别下自动启动:

chkconfig --level runlevel service_name on

例如,设置服务在运行级别 3 和 5 下自动启动可以使用chkconfig --level 35 service_name on。
设置服务在特定运行级别下不自动启动:

chkconfig --level runlevel service_name off

4、journalctl
功能:
journalctl虽然不是直接用于管理服务,但journalctl是一个用于查看系统日志的工具。在管理系统服务时,它可以帮助查看服务的日志信息,以便进行故障排除和性能分析。
常见用法:
查看特定服务的日志:

journalctl -u service_name

例如,查看 Apache HTTP Server 的日志可以使用journalctl -u httpd。
按照时间顺序查看日志:

journalctl --reverse

查看特定时间段的日志:

journalctl --since "YYYY-MM-DD HH:MM:SS" --until "YYYY-MM-DD HH:MM:SS"

3.配置系统服务

1、各类服务的配置文件
不同的系统服务有不同的配置文件,这些配置文件通常位于/etc目录下。例如:
–Apache HTTP Server(通常是httpd服务)的主要配置文件可能是/etc/httpd/conf/httpd.conf。它包含了服务器的各种设置,如监听的端口、虚拟主机配置、模块加载等。
–MySQL 数据库服务器的配置文件可能是/etc/my.cnf。其中可以设置数据库的存储引擎、缓存大小、字符集等参数。
2、编辑配置文件
使用文本编辑器打开配置文件:
可以使用命令行编辑器如vi、nano或图形界面的文本编辑器(如果在有图形界面的环境中)。例如,使用nano打开 Apache 的配置文件可以执行nano /etc/httpd/conf/httpd.conf。
理解配置选项:
配置文件中通常包含注释,解释各个选项的作用。在编辑配置文件之前,最好先阅读这些注释,了解每个选项的含义和可能的取值范围。
修改配置选项:
根据需要修改相应的配置选项。例如,在 Apache 的配置文件中,可以修改监听的端口号、添加虚拟主机配置等。
保存并退出:
在完成编辑后,保存修改并退出文本编辑器。在nano中,可以使用快捷键Ctrl + X,然后按Y确认保存并退出。
3、检查配置文件语法
对于一些服务,有专门的工具来检查配置文件的语法是否正确。例如:
Apache HTTP Server 可以使用httpd -t命令来检查配置文件的语法。如果配置文件没有语法错误,会显示 “Syntax OK”。
MySQL 可以使用

mysqld --help --verbose | grep -A 1 "Default options"

来查看默认的配置选项,并确保配置文件中的设置是有效的。
4、重启服务使配置生效
在修改了系统服务的配置文件后,通常需要重启服务才能使新的配置生效。可以使用以下命令来重启服务:
使用systemctl:

systemctl restart service_name

例如,重启 Apache 服务可以使用systemctl restart httpd。
使用service(在一些旧版本的 Linux 系统中):

service service_name restart

5、监控服务状态
在配置服务后,应该监控服务的状态,以确保配置正确并且服务正常运行。可以使用以下命令来查看服务的状态:

systemctl status service_name:

显示服务的当前状态、启动时间、日志信息等。
查看服务的日志文件:不同的服务通常将日志记录到特定的文件中。例如,Apache 的日志文件位于/var/log/httpd目录下。可以使用命令如tail -f /var/log/service_name.log来实时查看服务的日志输出,以便及时发现问题。

4.系统服务的日志管理

系统服务的日志对于故障排除、性能分析和安全审计至关重要。
1、日志的位置
通常情况下,系统服务的日志文件位于/var/log目录下。不同的服务可能有不同的子目录或特定的日志文件名称。例如:
Apache HTTP Server 的日志文件可能在/var/log/httpd目录中,包括访问日志(通常是 access_log 文件)和错误日志(通常是 error_log 文件)。
MySQL 数据库服务器的日志文件可能在/var/log/mysql目录下,或者在其配置文件中指定的位置。
2、日志的类型
访问日志:
记录对服务的访问请求。例如,Web 服务器的访问日志会记录每个客户端的 IP 地址、请求的 URL、请求时间、响应状态码等信息。这对于分析网站的流量、用户行为和排查访问问题非常有用。
错误日志:
记录服务在运行过程中遇到的错误和异常情况。当服务出现故障时,首先应该查看错误日志,以确定问题的根源。错误日志通常会包含详细的错误消息、错误发生的时间和上下文信息。
系统日志:
一些系统服务可能会将重要的事件记录到系统日志中。例如,syslog或rsyslog服务负责收集和记录系统中的各种日志信息,包括系统启动和关闭、服务启动和停止、安全事件等。系统服务可以配置为将特定的事件发送到系统日志中,以便进行集中管理和分析。
3、查看日志的方法
使用文本编辑器:
可以直接使用文本编辑器打开日志文件进行查看。例如,使用vi或nano命令打开特定的日志文件。但这种方法对于查看大型日志文件可能不太方便,因为需要手动滚动和搜索。
使用命令行工具:
tail命令:可以实时查看日志文件的末尾内容。例如,tail -f /var/log/service_name.log将实时显示指定服务的日志文件的最新内容,这对于监控正在运行的服务非常有用。
grep命令:用于在日志文件中搜索特定的关键字或模式。例如,grep “error” /var/log/service_name.log将在指定服务的日志文件中搜索包含 “error” 关键字的行,帮助快速定位错误信息。
使用日志管理工具:
在大型系统中,通常会使用专门的日志管理工具来集中收集、存储和分析日志。例如,ELK Stack(Elasticsearch、Logstash、Kibana)提供了强大的日志管理和分析功能,可以从多个来源收集日志,进行索引和存储,并通过可视化界面进行查询和分析。
4、日志的配置
服务自身的配置:
许多系统服务允许通过其配置文件来配置日志的输出级别、日志文件的位置和格式等。例如,在 Apache 的配置文件中,可以设置访问日志和错误日志的格式、存储位置以及日志级别(如只记录错误信息还是包括警告和信息级别)。
系统日志配置:
可以通过配置syslog或rsyslog服务来确定哪些系统服务的日志将被收集和记录,以及如何处理不同级别的日志。例如,可以配置将特定服务的重要事件发送到远程日志服务器进行集中存储和分析。

本篇完结。
码字不易,宝贵经验分享不易,请各位支持原创,转载注明出处,多多关注作者。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CSP-J/S复赛算法 动态规划初步

文章目录 前言动态规划动态规划常见形式动态规划求最值的几个例子1. **背包问题**2. **最短路径问题**3. **最小硬币找零问题**4. **最长递增子序列** 总结 最优子结构举个简单的例子其他例子条件 DP的核心就是穷举具体解释 递归的算法时间复杂度dp数组的迭代解法通俗易懂的解释…

mysql表和表中记录的操作·2

表中字段的操作表中记录的操作SQL约束 1.表中字段的操作 字段/列column 知识点 在表中添加一列:alter table 表名 add 字段名 字段类型; 在表中删除一列:alter table 表名 drop 字段名; 在表中修改字段名和字段类型:alter table 表名…

IO零拷贝技术

01背景介绍 相信不少的网友,在很多的博客文章里面,已经见到过零拷贝这个词,会不禁的发出一些疑问,什么是零拷贝? 从字面上我们很容易理解出,零拷贝包含两个意思: 拷贝:就是指数据从…

Lesson1 - 操作系统概述与硬件视角

文章目录 什么是操作系统操作系统的形成 从程序看OS提出问题:从hello world文件开始目前编译器帮我们解决了诸多问题gcc的编译过程 CPU的运作CPU对任务的切换 什么是操作系统 操作系统 Operating System 是一组控制和管理计算机 硬件 和 软件 资源合理地对各类作业…

深入理解NumPy库:常用函数详解与数组操作指南

在数据科学和数值计算领域,NumPy无疑是一个强大的工具,它为Python提供了高效的多维数 组处理能力。无论是进行数据分析、构建机器学习模型,还是进行复杂的科学计算,NumPy都是 不可或缺的核心库之一。 numpy.array 是 NumPy 库中…

Python 从入门到实战34(实例2:绘制蟒蛇)

我们的目标是:通过这一套资料学习下来,通过熟练掌握python基础,然后结合经典实例、实践相结合,使我们完全掌握python,并做到独立完成项目开发的能力。 上篇文章我们讨论了数据库MySQL操作的相关知识。今天学习一个使用…

C语言指针plus版练习

上期我们讲了进阶的指针,本期内容我们来强化一下上期学的内容 一、字符串左旋 实现一个函数,可以左旋字符串中的k个字符。 1.1 分析题目 假设字符串为abcde,左旋一个以后就变成bcdea,就是把第一个字符移到一个新的变量里面&#…

5G NR BWP 简介

文章目录 BWP介绍BWP 分类BWP相关总结 BWP介绍 5G NR 系统带宽比4G LTE 大了很多,4G LTE 最大支持带宽为20MHz, 而5G NR 的FR1 最大支持带宽为100MH在, FR2 最大支持带宽为 400MH在。带宽越大,意味了终端功耗越多。为了减少终端的…

哪款百元头戴式耳机性价比高?四款大火爆全网的机型盘点推荐!

在繁忙的生活节奏中,寻找一片属于自己的宁静空间,成为了许多人的内心渴望。头戴式降噪耳机,正是那把打开音乐世界的钥匙。它不仅能够隔绝外界的喧嚣,还能将您带入一个纯净无瑕的音乐世界。无论是沉浸在古典乐的悠扬旋律中&#xf…

数据服务-存储服务(NFS)

1.概述 存储: 用于存放用户上传的内容(数据),一般应用在网站集群中 如果不使用存储,用户上传的数据就直接存放在网站服务器上了,用户下次访问就可能找不到 如果使用存储,用户上传的内容存放在存储上面,用户访问就会访问存储. 位置: 网站后排. 2. 存储分类 分类说明硬件存储硬件…

【高等数学学习记录】函数的极限

一、知识点 (一)知识结构 #mermaid-svg-Dz0Ns0FflWSBWY50 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-Dz0Ns0FflWSBWY50 .error-icon{fill:#552222;}#mermaid-svg-Dz0Ns0FflWSBWY50 .erro…

KiCad 综合笔记

开窗 选中顶层或者底层 Mask 层,然后进行覆铜: 四层板 KiCad Tutorial - How to make a 4 layer PCB https://bbs.elecfans.com/jishu_2365544_1_1.html 虽然在“电路板设置”中,可以选择铜层的类型,但如果选择了“电源层”,除了用于告诉“Free router”布线器在自动布…

vue3+vite@4+ts+elementplus创建项目详解

1、第一步创建项目cnpm init vite4 2、设置vue3.2局域网可访问配置: 找到项目路径下的package.json目录下找到script对象下面添加一下代码: "serve": "vite --host 0.0.0.0" 启动项目命令不在是dev而是:cnpm run serve 3…

Linux中的进程信号

目录 进程信号 kill/raise/abort 硬件异常产生信号 由软件条件产生信号 信号在内核中的表示示意图 pending: block: 信号集操作函数 sigprocmask 进程信号 信号量和信号不同 信号量的本质是计数器,计数器可以被多进程同时看到。可以对资源进行预定。 所有进…

OpenJudge | 置换选择排序

总时间限制: 1000ms 内存限制: 65536kB 描述 给定初始整数顺串,以及大小固定并且初始元素已知的二叉最小堆(为完全二叉树或类似完全二叉树,且父元素键值总小于等于任何一个子结点的键值),要求利用堆实现置换选择排序&a…

程序员如何在 AI 时代保持核心竞争力

前言 随着 AIGC 大语言模型的不断涌现,AI 辅助编程工具的普及正在深刻改变程序员的工作方式。在这一趋势下,程序员面临着新的挑战与机遇,需要思考如何应对以保持并提升自身的核心竞争力。 目录 一、AI 对编程工作的影响 (一&…

一、走进新语言

走进新语言 介绍环境配置JDK配置Kotlin配置 开发工具代码基本结构程序注释 介绍 Kotlin是一种现代但已经成熟的编程语言,旨在让开发人员更快乐。它简洁、安全、可与Java和其他语言互操作,并提供了许多在多个平台之间重用代码的方法。它由JetBrains公司于…

2.JUC

掌握 Java 并发编程,熟悉线程池、并发容器以及锁的机制,如 sychronized、ReentrantLock、AQS等。 2.0 并发基础 线程等待唤醒机制LockSupport (3种) 方式一:使用Object中的wait()方法让线程等待,使用Object中的notify()方法唤醒…

数据结构 ——— 单链表oj题:链表分割(带哨兵位单向不循环链表实现)

目录 题目要求 手搓简易单链表 代码实现 题目要求 现有一链表的头指针 ListNode* head ,给一定值 x ,编写一段代码将所有小于 x 的节点排在其余节点之前,且不能改变原来的数据顺序,返回重新排列后的链表的头节点 举例说明&a…

【包教包会】2D图片实现3D透视效果(支持3.x、支持原生、可合批)

将去年写的SpriteFlipper从2.x升级到3.x。 如果需要2.x版本或需要了解算法思路,请移步:https://blog.csdn.net/weixin_42714632/article/details/136745051 优化功能:可同时绕X轴和Y轴旋转,两者效果会叠加。 完美适配Web、原生…