linux启动服务配置详解(linux 启动 服务)
nanshan 2024-10-15 11:32 15 浏览 0 评论
init 进程是所有进程的发起者和控制者。因为在任何基于 Unix 的系统(比如 linux)中,它都是第一个 运行的进程,所以 init 进程的编号(Process ID,PID)永远是 1。如果 init 出现了问题,系统的其余部分 也就随之而垮掉了。
init 服务
init 进程是所有进程的发起者和控制者。因为在任何基于 Unix 的系统(比如 linux)中,它都是第一个 运行的进程,所以 init 进程的编号(Process ID,PID)永远是 1。如果 init 出现了问题,系统的其余部分 也就随之而垮掉了。
init 进程有两个作用。第一个作用是扮演终结父进程的角色。因为 init 进程永远不会被终止,所以系统 总是可以确信它的存在,并在必要的时候以它为参照。如果某个进程在它衍生出来的全部子进程结束之前 被终止,就会出现必须以 init 为参照的情况。此时那些失去了父进程的子进程就都会以 init 作为它们的父 进程。快速执行一下 ps -af 命令,可以列出许多父进程 ID(Parent Process ID,PPID)为 1 的进程来。
init 的第二个角色是在进入某个特定的运行级别(Runlevel)时运行相应的程序,以此对各种运行级别 进行管理。它的这个作用是由/etc/inittab 文件定义的。
1. /etc/inittab 文件
/etc/inittab 文件中包括了所有 init 启动运行级别所必须的信息。这个文件中的每一行语句的格式如下所 示:
id : runlevels: action : process
注意:以#开始的语句是注释语句。看看你自己的/etc/inittab 文件就可以发现其中充斥了大量的注释语句。 如果确实需要对/etc/inittab 文件进行什么改动(一般不会出现这种情况的),记住加上一些注释语句,解释 为什么要做那些修改。
2. Telinit命令
通知 init 在什么时候切换系统运行级别的神秘力量实际上就是 Telinit 命令。这个命令有两个命令行参数: 一个参数用来通知 init 准备切换过去的运行级别;另外一个是 -tsec,其中的 sec 是在通知 init 之前需要等 待的、以秒计算的时间。
注意:init 是否真的切换运行级别是由它自己决定的。很明显,它经常切换,否则这个命令就不会那么有 用了。在大多数 Unix 操作系统的具体实现(包括 linux)中,Telinit命令实际上只是一个对 init 程序的符号 链接。基于此,许多人更喜欢使用 init 直接切换到他们想去的运行级别而不是使用 Telinit。就个人而言, 我发现使用 Telinit切换运行级别更便于理解和记忆。
inetd 进程
inetd 程序是一个守护进程。您可能已经知道守护进程是一些特殊的程序:它们在被启动之后,自愿放 弃对调用自己终端的控制权。守护进程与系统其余部分的接口只有依靠进程间通信( Interprocess Communication,IPC)通道、或者依靠向系统全局性日志文件(Log File)才能发送数据项。
inetd 的角色是作为 Telnet和 FTP 等与网络服务器相关的进程的“超级服务器”。这是一个简单的道理: 并不是全部的服务器进程(包括那些接受新的 Telnet和 FTP 连接的进程)都会如此频繁地被调用,以至于 必须要有一个程序随时运行在内存中。因此为了避免出现可能有几十种服务都运行在内存中准备被使用的 情况,它们都列在 inetd 的配置文件/etc/inetd.conf 中。而代替它们的是 inetd 监听着进入的连接。这样只
需要有一个进程在内存中就可以了。
inetd 的另外一个优点是程序员并不想把需要网络连接的进程都编写到系统中去。inetd 程序将处理网络
代码,并把进入的网络数据流作为各个进程的标准输入( Standard-In,即 Stdin)传递到其中。这些进程 的输出(Stdout)将会被送回连接到该进程的主机去。
注意:除非你正在进行编程,否则是不需要连接到 inetd 的 Stdin/Stdout 功能上。从另一方面来说,如 果有人打算编写一个简单的命令脚本程序并让它出现在网络中,就值得深入研究这个极为强大的功能。
1.etc/inetd.conf 文件
etc/inetd.conf 文件是 inetd 的配置文件。它的结构很简单:每一行语句代表一种服务。服务定义语句
的格式如下所示:
srvce_name sock_type protocol [no]wait user srvr_prog srvr_prog_args 2.安全性与 inetd.conf 文件
你将会发现在大多数的 linux 安装中,许多服务在缺省的情况下是打开的。如果你的系统将向因特网开 放(包括通过拨号点对点协议被连通),你想做的第一件事就会是把一切都关闭!决不要假设因为你的系统 没有对公众进行宣传,别人就不会找到它。从相反的方向看,寻找存在安全性攻击隐患系统的工具软件是 既容易找到又容易使用的。
关闭服务的第一个步骤是把 etc/inetd.conf 文件里所有用不着的服务性说明语句都改为注释语句。一般 来说,你会发现下面的方法更容易使用:先把全部东西都改为注释语句(彻底关闭网络服务),再有选择地 打开需要的服务。在完成对 etc/inetd.conf 文件的修改之后,需要向守护进程报告其配置文件已经被修改了。 这是通过向该守护进程发送 HUP 信号来实现的。先使用下面的命令找出 inetd.conf 对应的进程 ID:
[ root@ford /root ] # ps auxw | grep inetd | grep -v grep
这个命令的输出类似于下面的内容:
root 359 0.0 0.1 1232 168 ? S Jun21 0 : 00 inetd
root 359 0.0 0.1 1232 168 ? S Jun21 0 : 00 inetd
输出中的第二列告诉我们进程 ID 号(这里就是 359)。为了发送 HUP 信号,我们需要使用 Kill 命令(把 这个程序叫做 Kill 多少有些误导。实际上,它只是向进程发送信号而已。缺省的情况下,它会发出请求某 个程序终止运行的信号)。
下面是使用 Kill 命令发送 HUP 信号的方法: $ kil -1 359 应该把上面命令中的 359 换成从你的系统上得到的进程编号。
syslogd 守护进程
在同一时间会发生许许多多的事情,而在终端窗口中断开连接的网络服务就更是如此了。因此,提供一 个记录特殊事件和消息的标准机制就非常有必要了。linux 使用 syslogd 守护进程来提供这个服务。
syslogd 守护进程提供了一个对系统活动和消息进行记录的标准方法。许多其他种类的 Unix 操作系统也 使用了兼容的守护进程。这就提供了一个在网络中跨平台记录的方法。在大型的网络环境里,这更具有价
值。因为在那样的环境里,集中收集各种记录数据以获得系统运转的准确情况是很有必要的。你可以把这 种记录功能子系统比作 Windows NT 的 SystemLogger。
syslogd 保存数据用的记录文件都是简明的文本文件,一般都存放在 /var/log 子目录中。每个数据项构 成一行,包括日期、时间、主机名、进程名、进程的 PID,以及来自该进程的消息。标准 C 函数库中的一 个全局性的函数提供了生成记录消息的简单机制。如果不喜欢编写程序代码,但是又想在记录文件中生成 数据项,可以选择使用 Logger 命令。可以想象,像 syslogd 这样重要的工具应该是作为开机引导命令脚本 程序的一部分来启动的。你准备在服务器环境中使用的任何一个 linux 发行版本都已经为你设置好了。
1.调用 syslogd
如果需要手动启动 syslogd,或者需要修改开机引导时启动它的命令脚本程序,你就必须注意 syslogd
的命令行参数,请大家参看有关书籍,这里不做详细介绍。 2./etc/syslog.conf 文件
/etc/syslog.conf 文件包含了 syslogd 需要运行的配置信息。这个文件的格式有些不寻常,但是现有的缺 省配置文件将足以满足使用需要了,除非你需要在特定的文件中查找特定的信息,或者需要把这些信息发 送到远程记录计算机去。
● 记录信息分类
在我们掌握/etc/syslog.conf 文件格式本身之前,需要先了解记录消息是如何分类的。每个消息都有一 个功能值(Facility)和一个优先权值(Priority)。功能值告诉我们这条消息是由哪个子系统产生的,而优先 权值则告诉我们这个消息有多重要。这两个值由句号分隔而且都有等价的字符串,从而容易记忆。
● /etc/syslog.conf 文件的格式
下面是配置文件里各语句的格式:
facility/priority combinations separated by commas file /process/host to log to
举例如下:
kern.info /ver/log/kerned
syslogd 还可以灵活地把记录消息发送到多种不同的保存目的地去。它可以把消息保存为文件、把消息 发送到 FIFO 队列、发送到一组用户、或者(在大型站点集中记录消息的情况下)发送到一个中心记录主机 中。为了区分这些目的地,在目的地入口使用了下面的规则:
◆ 如果保存目的地的开始字符是斜杠字符(/),消息将发送到某个文件。
◆ 如果保存目的地的开始字符是垂直字符(|),消息将发送到某个 FIFO 队列。
◆ 如果保存目的地的开始字符是“@”字符,消息将发送到某个主机。
cron 进程
cron 进程为用户提供一种可以计划在一定时间间隔后自动执行任务的功能。cron 通常还会负责 at 队列
中作业的启动。该进程从 crontab 文件中得到信息,对于每个用户都会有一个独立的 crontab 文件。运行 crontab -l 命令,就可以查看已排列的命令列表。
如果要更改 cron 信息,必须创建一个 crontab 文件。crontab 有固定的格式,有效行包括六个区域,即: 分钟(0-59),小时(0-23),日(1-31),月(1-12),星期(0-7,0 和 7 都代表周日),命令(要运行的 任务)
每个区域都可能带一个星号,表示整个区间,每个区域也可以使用 x-y的形式包含一个范围,也可能包含 一个用逗号隔开的列表。
相关推荐
- 实战派 | Java项目中玩转Redis6.0客户端缓存
-
铺垫首先介绍一下今天要使用到的工具Lettuce,它是一个可伸缩线程安全的redis客户端。多个线程可以共享同一个RedisConnection,利用nio框架Netty来高效地管理多个连接。放眼望向...
- 轻松掌握redis缓存穿透、击穿、雪崩问题解决方案(20230529版)
-
1、缓存穿透所谓缓存穿透就是非法传输了一个在数据库中不存在的条件,导致查询redis和数据库中都没有,并且有大量的请求进来,就会导致对数据库产生压力,解决这一问题的方法如下:1、使用空缓存解决对查询到...
- Redis与本地缓存联手:多级缓存架构的奥秘
-
多级缓存(如Redis+本地缓存)是一种在系统架构中广泛应用的提高系统性能和响应速度的技术手段,它综合利用了不同类型缓存的优势,以下为你详细介绍:基本概念本地缓存:指的是在应用程序所在的服务器内...
- 腾讯云国际站:腾讯云服务器如何配置Redis缓存?
-
本文由【云老大】TG@yunlaoda360撰写一、安装Redis使用包管理器安装(推荐)在CentOS系统中,可以通过yum包管理器安装Redis:sudoyumupdate-...
- Spring Boot3 整合 Redis 实现数据缓存,你做对了吗?
-
你是否在开发互联网大厂后端项目时,遇到过系统响应速度慢的问题?当高并发请求涌入,数据库压力剧增,响应时间拉长,用户体验直线下降。相信不少后端开发同行都被这个问题困扰过。其实,通过在SpringBo...
- 【Redis】Redis应用问题-缓存穿透缓存击穿、缓存雪崩及解决方案
-
在我们使用redis时,也会存在一些问题,导致请求直接打到数据库上,导致数据库挂掉。下面我们来说说这些问题及解决方案。1、缓存穿透1.1场景一个请求进来后,先去redis进行查找,redis存在,则...
- Spring boot 整合Redis缓存你了解多少
-
在前一篇里面讲到了Redis缓存击穿、缓存穿透、缓存雪崩这三者区别,接下来我们讲解Springboot整合Redis中的一些知识点:之前遇到过,有的了四五年,甚至更长时间的后端Java开发,并且...
- 揭秘!Redis 缓存与数据库一致性问题的终极解决方案
-
在现代软件开发中,Redis作为一款高性能的缓存数据库,被广泛应用于提升系统的响应速度和吞吐量。然而,缓存与数据库之间的数据一致性问题,一直是开发者们面临的一大挑战。本文将深入探讨Redis缓存...
- 高并发下Spring Cache缓存穿透?我用Caffeine+Redis破局
-
一、什么是缓存穿透?缓存穿透是指查询一个根本不存在的数据,导致请求直接穿透缓存层到达数据库,可能压垮数据库的现象。在高并发场景下,这尤其危险。典型场景:恶意攻击:故意查询不存在的ID(如负数或超大数值...
- Redis缓存三剑客:穿透、雪崩、击穿—手把手教你解决
-
缓存穿透菜小弟:我先问问什么是缓存穿透?我听说是缓存查不到,直接去查数据库了。表哥:没错。缓存穿透是指查询一个缓存中不存在且数据库中也不存在的数据,导致每次请求都直接访问数据库的行为。这种行为会让缓存...
- Redis中缓存穿透问题与解决方法
-
缓存穿透问题概述在Redis作为缓存使用时,缓存穿透是常见问题。正常查询流程是先从Redis缓存获取数据,若有则直接使用;若没有则去数据库查询,查到后存入缓存。但当请求的数据在缓存和数据库中都...
- Redis客户端缓存的几种实现方式
-
前言:Redis作为当今最流行的内存数据库和缓存系统,被广泛应用于各类应用场景。然而,即使Redis本身性能卓越,在高并发场景下,应用于Redis服务器之间的网络通信仍可能成为性能瓶颈。所以客户端缓存...
- Nginx合集-常用功能指导
-
1)启动、重启以及停止nginx进入sbin目录之后,输入以下命令#启动nginx./nginx#指定配置文件启动nginx./nginx-c/usr/local/nginx/conf/n...
- 腾讯云国际站:腾讯云怎么提升服务器速度?
-
本文由【云老大】TG@yunlaoda360撰写升级服务器规格选择更高性能的CPU、内存和带宽,以提供更好的处理能力和网络性能。优化网络配置调整网络接口卡(NIC)驱动,优化TCP/IP参数...
- 雷霆一击服务器管理员教程
-
本文转载莱卡云游戏服务器雷霆一击管理员教程(搜索莱卡云面版可搜到)首先你需要给服务器设置管理员密码,默认是空的管理员密码在启动页面进行设置设置完成后你需要重启服务器才可生效加入游戏后,点击键盘左上角E...
你 发表评论:
欢迎- 一周热门
-
-
爱折腾的特斯拉车主必看!手把手教你TESLAMATE的备份和恢复
-
如何在安装前及安装后修改黑群晖的Mac地址和Sn系列号
-
[常用工具] OpenCV_contrib库在windows下编译使用指南
-
WindowsServer2022|配置NTP服务器的命令
-
Ubuntu系统Daphne + Nginx + supervisor部署Django项目
-
WIN11 安装配置 linux 子系统 Ubuntu 图形界面 桌面系统
-
解决Linux终端中“-bash: nano: command not found”问题
-
Linux 中的文件描述符是什么?(linux 打开文件表 文件描述符)
-
NBA 2K25虚拟内存不足/爆内存/内存占用100% 一文速解
-
K3s禁用Service Load Balancer,解决获取浏览器IP不正确问题
-
- 最近发表
-
- 实战派 | Java项目中玩转Redis6.0客户端缓存
- 轻松掌握redis缓存穿透、击穿、雪崩问题解决方案(20230529版)
- Redis与本地缓存联手:多级缓存架构的奥秘
- 腾讯云国际站:腾讯云服务器如何配置Redis缓存?
- Spring Boot3 整合 Redis 实现数据缓存,你做对了吗?
- 【Redis】Redis应用问题-缓存穿透缓存击穿、缓存雪崩及解决方案
- Spring boot 整合Redis缓存你了解多少
- 揭秘!Redis 缓存与数据库一致性问题的终极解决方案
- 高并发下Spring Cache缓存穿透?我用Caffeine+Redis破局
- Redis缓存三剑客:穿透、雪崩、击穿—手把手教你解决
- 标签列表
-
- linux 查询端口号 (58)
- docker映射容器目录到宿主机 (66)
- 杀端口 (60)
- yum更换阿里源 (62)
- internet explorer 增强的安全配置已启用 (65)
- linux自动挂载 (56)
- 禁用selinux (55)
- sysv-rc-conf (69)
- ubuntu防火墙状态查看 (64)
- windows server 2022激活密钥 (56)
- 无法与服务器建立安全连接是什么意思 (74)
- 443/80端口被占用怎么解决 (56)
- ping无法访问目标主机怎么解决 (58)
- fdatasync (59)
- 405 not allowed (56)
- 免备案虚拟主机zxhost (55)
- linux根据pid查看进程 (60)
- dhcp工具 (62)
- mysql 1045 (57)
- 宝塔远程工具 (56)
- ssh服务器拒绝了密码 请再试一次 (56)
- ubuntu卸载docker (56)
- linux查看nginx状态 (63)
- tomcat 乱码 (76)
- 2008r2激活序列号 (65)