linux关键系统服务详解


init
服务

    init
进程是所有进程的发起者和控制者。因为在任何基于Unix的系统(比如linux)中,它都是第一个运行的进程,所以init进程的编号(Process IDPID)永远是1。如果init出现了问题,系统的其余部分也就随之而垮掉了。
    init
进程有两个作用。第一个作用是扮演终结父进程的角色。因为init进程永远不会被终止,所以系统总是可以确信它的存在,并在必要的时候以它为参照。如果某个进程在它衍生出来的全部子进程结束之前被终止,就会出现必须以init为参照的情况。此时那些失去了父进程的子进程就都会以init作为它们的父进程。快速执行一下ps -af 命令,可以列出许多父进程IDParent Process IDPPID)为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 CommunicationIPC)通道、或者依靠向系统全局性日志文件(Log File)才能发送数据项。
    inetd
的角色是作为TelnetFTP等与网络服务器相关的进程的“超级服务器”。这是一个简单的道理:并不是全部的服务器进程(包括那些接受新的TelnetFTP连接的进程)都会如此频繁地被调用,以至于必须要有一个程序随时运行在内存中。因此为了避免出现可能有几十种服务都运行在内存中准备被使用的情况,它们都列在inetd的配置文件/etc/inetd.conf中。而代替它们的是inetd监听着进入的连接。这样只需要有一个进程在内存中就可以了。
    inetd
的另外一个优点是程序员并不想把需要网络连接的进程都编写到系统中去。inetd程序将处理网络代码,并把进入的网络数据流作为各个进程的标准输入(Standard-In,即Stdin)传递到其中。这些进程的输出(Stdout)将会被送回连接到该进程的主机去。
   
注意:除非你正在进行编程,否则是不需要连接到inetdStdin/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 NTSystemLogger
    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-707都代表周日),命令(要运行的任务)
每个区域都可能带一个星号,表示整个区间,每个区域也可以使用x-y的形式包含一个范围,也可能包含一个用逗号隔开的列表。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 《Linux服务器搭建实战详解》是一本教授如何搭建和管理Linux服务器的书籍。本书主要包括以下内容。 首先,书中介绍了Linux服务器的基础知识,包括Linux操作系统的安装和配置,网络和安全设置等。读者可以通过这些基础知识了解Linux服务器的工作原理和关键概念。 其次,书中详细介绍了常见的服务器搭建方法。例如,Web服务器的安装和配置,如Apache和Nginx;数据库服务器的安装和配置,如MySQL和PostgreSQL;电子邮件服务器的搭建等。每个部分都有详细的步骤和示例,读者可以跟随书中的指导操作,快速搭建自己的服务器。 另外,本书还介绍了一些高级主题,例如服务器的监控和调优,如使用Nagios监控服务器状态,使用sysctl优化服务器性能等。这些主题可以帮助读者进一步提高服务器的性能和稳定性。 最后,本书还包含了一些实例和案例分析,以帮助读者更好地理解如何应用所学知识。例如,如何搭建一个具有负载均衡和容错能力的Web服务器集群,如何对数据库进行主从复制等。 总之,《Linux服务器搭建实战详解》是一本详细介绍了Linux服务器搭建和管理的实用指南。读者可以通过阅读本书,快速掌握搭建服务器的技巧和方法,提高自己在Linux服务器管理方面的能力。 ### 回答2: 《Linux服务器搭建实战详解》是一本介绍如何在Linux操作系统上搭建服务器的实用指南。本书详细描述了各种常见服务器的安装、配置和管理过程,涵盖了Web服务器、数据库服务器、邮件服务器等多个方面,具有很高的实用性。 首先,本书介绍了Linux服务器的基本概念和原理,让读者了解到服务器的工作原理和主要组成部分。接着,书中详细介绍了如何选择合适的Linux发行版,并进行操作系统的安装和基本配置。读者将学会使用命令行界面和图形界面进行操作,掌握基本的Linux管理技能。 随后,本书分别介绍了Apache、Nginx等常用的Web服务器的安装和配置,包括虚拟主机、SSL证书等内容的设置。此外,对于数据库服务器,本书也详细介绍了MySQL、PostgreSQL等数据库的安装和配置,以及基本的数据库管理和优化技巧。 此外,本书还介绍了邮件服务器的搭建,包括使用Sendmail、Postfix等邮件服务器软件的安装和配置。同时,还介绍了如何设置邮件域名、邮件账户等相关内容,让读者能够搭建出完整的邮件服务器。 最后,本书还介绍了服务器的安全管理和监控,包括防火墙的配置、日志管理、入侵检测等内容。读者将学会如何保护服务器的安全,并及时发现和应对潜在的威胁。 总之,《Linux服务器搭建实战详解》是一本适合初学者和有一定Linux基础的读者的实用指南。通过学习本书,读者将能够熟练掌握Linux服务器的搭建和管理技巧,既能够提升个人技能,也能够为企业的服务器管理提供有力的支持。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值