RHEL6 系统服务脚本

目录

linx运行级别

RHEL 6 和 RHEL 7 及之后 创建系统服务脚本区别

RHEL 6 (使用SysV init系统)

RHEL 7 (使用Systemd)

实例(使用复制文件方式启动服务)


linx运行级别

1、linux运行有七个级别

运行级别描述
0停机状态系统默认运行级别不能设置为0,否则系统不能正常启动。init 0命令可关闭系统。
1单用户状态仅root用户可登录,用于系统维护,禁止远程登录。相当于Windows下的安全模式。
2多用户状态(无NFS)没有网络服务。
3完整的多用户状态(有NFS)有网络服务,登录后进入控制台命令行模式。
4系统未使用保留一般不用,特殊情况可做特殊设置,<br>如笔记本电池耗尽时进行应急设置。
5图形化模式登录后进入图形GUI模式,如GNOME、KDE或X Window系统。
6重启系统正常关闭并重启<br>默认运行级别不能设为6,否则会导致持续重启。

在 /etc/rc.d 下有 7 个名为 rcN.d 的目录,对应系统的 7 个运行级别。
    [root@uplooking ~] ls /etc/rc.d | grep 'rc[0-9].d'
    rc0.d
    rc1.d
    rc2.d
    rc3.d
    rc4.d
    rc5.d
    rc6.d

    rcN.d 目录下都是一些符号链接文件,这些链接文件都指向 init.d 目录下的 service 脚本文件,命名规则为 “K+nn+服务名或S+nn+服务名”,其中 nn 为两位数字。

2、Rhel7默认使用xfs文件系统,rhel6默认为ext4文件系统,但从rhel6.8起开始支持xfs系统。

版本默认文件系统XFS 支持
RHEL 6ext4从 RHEL 6.8 起支持
RHEL 7XFS默认使用

以上信息总结了Red Hat Enterprise Linux (RHEL)不同版本中默认文件系统的变更以及对XFS文件系统支持的情况:

  • RHEL 6:初始默认使用ext4文件系统,这是一种广泛使用的日志文件系统,以其可靠性、性能和功能丰富著称。然而,随着版本迭代,从RHEL 6.8开始,系统也开始支持XFS文件系统,为用户提供了一个新的选择,特别是对于需要处理大文件和大容量存储的场景。

  • RHEL 7:标志着一个显著的转变,它默认使用XFS文件系统。XFS以其出色的扩展性、高性能的文件操作(特别是大文件和高吞吐量操作)和对大容量存储的支持而闻名。这一改变反映了企业级Linux系统对高性能存储需求的增长响应。

3、设置默认启动级别
    Rhel6:vim /etc/inittab 将末行的id:3:initdefault中的3改为相应数字即可

Rhel7:rhel7采用了targets来定义运行级别,设置默认启动级别命令为systemctl  set-default  x.target ,重启后即可生效
查看:[root@node1 ~] systemctl get-default 
                multi-user.target
设置:systemctl set-default graphical.target 图形界面

4、RHEL6 服务脚本

#!/bin/bash
#
# httpd        Startup script for the Apache HTTP Server
#
# chkconfig:   - 85 15   -- 指定在那个运行级别启动或关闭脚本,数字代表顺序
            - 代表2345运行级别,也可以指定35
            85 代表启动顺序 S85httpd
            15 代表关闭顺序 K15httpd
# description: The Apache HTTP Server is an efficient and extensible  \
#              server implementing the current HTTP standards.

            脚本功能说明
            
脚本增加执行权限:chmod +x /etc/init.d/httpd
添加成系统服务脚本:chkconfig --add httpd
设置开机自启动:chkconfig --level 35 httpd on

在RHEL 6或类似使用SysVinit系统的Linux发行版中,chkconfig是一个用于管理服务在不同运行级别下自动启动或关闭的服务管理工具。当在服务脚本中看到这样的注释行:

当你运行命令 ls /etc/rc.d/rc3.d/ 时,你实际上是在查看与运行级别3相关的系统服务启动链接目录的内容。运行级别3对应于多用户、无图形界面(文本模式)的系统状态。在传统的SysVinit系统中(如早期的Red Hat Enterprise Linux 6及之前版本),这个目录通常包含了一系列符号链接,这些链接指向了 /etc/init.d/ 目录下的服务初始化脚本,用于控制服务的启动和停止。

这些链接文件的命名遵循 Sxxservice_nameKxxservice_name 的格式,其中:

  • S 表示启动(Start),K 表示停止(Kill)。
  • xx 是两位数字,表示执行的优先级。数字越小,服务启动或停止的优先级越高。
  • service_name 是服务的名称。

例如,输出可能看起来像这样:

S01syslog
S02network
S10mysql
S20crond
...
K01syslog
K02network
K10mysql
K20crond

这表示在运行级别3下,syslog服务会首先启动(S01syslog),然后是网络配置(S02network),依此类推。相反,在系统关闭或切换运行级别时,服务会按照相反的顺序停止,即先停止crond服务(K20crond),然后是mysql服务(K10mysql)。

请注意,从RHEL 7开始,系统使用systemd作为初始化系统,使用targets代替了传统的运行级别概念,目录结构和管理服务的方式也有所不同。在这种情况下,你将不再直接查看/etc/rc.d/rc?.d/目录,而是使用systemctl命令来管理服务和查看系统状态。

chkconfig:   - 85 15

这意味着对该服务(此处以httpd为例)的启动和关闭行为进行了配置。注释中的各个部分解释如下:

  • 第一个字段(空位,用-表示):这通常表示该服务在哪些运行级别下不执行任何操作。如果需要指定特定的运行级别来启动或关闭服务,这里会列出相应的运行级别。但这里的-意味着默认适用于所有定义的运行级别(除非在/etc/rc.d/rcN.d/中有特别排除)。
  • 第二个字段(85):代表启动优先级。在运行级别改变到需要启动服务时(如从运行级别3进入多用户模式),系统会按照优先级从小到大的顺序启动服务。数值85意味着httpd服务将在优先级较低的服务启动之后启动。
  • 第三个字段(15):代表关闭优先级。当系统关闭或切换到另一个运行级别时,系统会按照优先级从大到小的顺序停止服务。数值15意味着httpd服务会在需要停止服务时较早被关闭。

基于上述配置,一个简化版的httpd服务脚本开头可能如下所示:

#!/bin/bash
#
# httpd - Apache HTTP Server
#
# chkconfig:   - 85 15
# description: The Apache HTTP Server is a powerful, efficient, and extensible web server.
#

# 实际的启动、停止、重启等操作函数定义...

为了管理httpd服务,你可能会执行以下命令:

  1. 添加服务到chkconfig管理列表

    chkconfig --add httpd
  2. 设置服务在指定运行级别自动启动(例如,级别3和5)

    chkconfig --level 35 httpd on
  3. 查看服务当前的启动设置

    chkconfig --list httpd

通过这些步骤,可以控制系统在不同运行级别下httpd服务的行为,确保它按照预期启动和关闭。

示例:httpd

[root@localhost init.d]# chkconfig --add httpd    --添加服务到chkconfig管理列表

[root@localhost init.d]# chkconfig --list httpd      --查看httpd运行级别
httpd              0:关闭    1:关闭    2:关闭    3:关闭    4:关闭    5:关闭    6:关闭
[root@localhost init.d]# ls /etc/rc.d/rc3.d/

[root@localhost init.d]# chkconfig --level 35 httpd on
[root@localhost init.d]# chkconfig --list httpd 
httpd              0:关闭    1:关闭    2:关闭    3:启用    4:关闭    5:启用    6:关闭
 

RHEL 6 和 RHEL 7 及之后 创建系统服务脚本区别

在Red Hat Enterprise Linux (RHEL) 6和RHEL 7中,创建系统服务的方法存在显著差异,主要源于RHEL 7引入了Systemd作为新的初始化系统和服务管理器,取代了原来的SysV init系统。下面是两者创建服务脚本的主要区别:

RHEL 6 (使用SysV init系统)

在RHEL 6中,服务脚本通常是位于/etc/init.d/目录下,并以服务名命名,例如/etc/init.d/httpd。这些脚本是shell脚本,通常包含start、stop、restart、status等函数来控制服务的启动、停止、重启和查看状态。为了使服务能够在系统启动时自动运行,还需要链接到适当的运行级别目录(如/etc/rc.d/rc3.d//etc/rc5.d/)。

创建服务的步骤通常包括:

  1. /etc/init.d/目录下创建服务脚本。
  2. 脚本中实现start、stop、restart、status等基本功能。
  3. 使用chkconfig命令设置服务开机启动等级(如chkconfig httpd on)。
  4. 使用service命令管理服务(如service httpd start)。

RHEL 7 (使用Systemd)

RHEL 7及以后版本使用Systemd,服务单元文件为.service类型,通常存放在/usr/lib/systemd/system//etc/systemd/system/目录下,文件名为服务名.service,如httpd.service

服务单元文件是一个INI格式的配置文件,包含[Unit]、[Service]、[Install]等节,定义了服务的描述、如何启动服务、依赖关系、重启行为等。

创建服务的步骤包括:

  1. 创建服务单元文件,如在/etc/systemd/system/下创建httpd.service
  2. 编辑该文件,至少包含基本的[Unit]、[Service]、[Install]节,定义描述、执行命令、启动类型(如ExecStart=/usr/sbin/httpd)、期望状态等。
  3. 使用systemctl命令管理服务:systemctl start httpd.service启动服务,systemctl enable httpd.service设置服务开机启动。
  4. 查看服务状态使用systemctl status httpd.service

实例(使用复制文件方式启动服务)

在Rocky Linux 9.4 来完成操作(使用SysV init系统)---也就是RHEL6的方法

控制Apache服务器的启动、停止、重启、重载入配置等操作

例如:service httpd start

首先已经使用源码安装在Rocky Linux 9.4上安装过了参考(RHEL7 系统服务脚本)文章

[root@localhost bin] ll /usr/local/ | grep httpd 
drwxr-xr-x. 14 root root 164  5月 22 19:07 httpd

[root@localhost ~] cd /usr/local/httpd/bin/

[root@localhost bin] ll /usr/local/httpd/
总用量 40
drwxr-xr-x.  2 root root 4096  5月 23 15:27 bin
drwxr-xr-x.  2 root root  167  5月 22 19:07 build
drwxr-xr-x.  2 root root   78  5月 22 19:06 cgi-bin
drwxr-xr-x.  4 root root   84  5月 23 15:27 conf
drwxr-xr-x.  3 root root 4096  5月 22 19:06 error
drwxr-xr-x.  2 root root   24  5月 22 18:32 htdocs
drwxr-xr-x.  3 root root 8192  5月 22 19:06 icons
drwxr-xr-x.  2 root root 4096  5月 22 19:07 include
drwxr-xr-x.  2 root root    6  5月 22 19:06 logs
drwxr-xr-x.  4 root root   30  5月 22 19:07 man
drwxr-xr-x. 14 root root 8192  5月 22 18:32 manual
drwxr-xr-x.  2 root root 4096  5月 22 19:06 modules
  • bin: 通常包含Apache服务器的可执行文件,如httpd二进制文件。
  • build: 可能是编译或构建过程中的临时目录,具体依安装过程而定。
  • cgi-bin: 存放CGI脚本的目录,用于执行服务器端脚本处理网页动态内容。
  • conf: 配置文件目录,包含最重要的Apache配置文件httpd.conf等。
  • error: 错误文档存放目录,存放自定义的HTTP错误页面。
  • htdocs: 默认的网页根目录,存放网站的静态文件,如HTML、图片等。
  • icons: 存放Web图标资源的目录。
  • include: 包含Apache配置中的包含文件,如模块加载配置等。
  • logs: 存放服务器日志文件,如访问日志access_log和错误日志error_log
  • man: 手册页目录,存放Apache的手册页文件。
  • manualmanual: 可能是Apache的文档或手册目录,也可能与上面的man目录重复,具体依安装配置而异。
[root@localhost ~] cd /usr/local/httpd/bin/

[root@localhost bin]# ll
总用量 2940
-rwxr-xr-x. 1 root root  112800  5月 22 19:06 ab
-rwxr-xr-x. 1 root root    3431  5月 22 19:04 apachectl
-rwxr-xr-x. 1 root root   23875  5月 22 19:04 apxs
-rwxr-xr-x. 1 root root   29744  5月 22 19:06 checkgid
-rwxr-xr-x. 1 root root    8925  5月 22 19:04 dbmmanage
-rw-r--r--. 1 root root    1069  5月 22 19:04 envvars
-rw-r--r--. 1 root root    1069  5月 22 19:04 envvars-std
-rwxr-xr-x. 1 root root   38640  5月 22 19:06 fcgistarter
-rwxr-xr-x. 1 root root   92176  5月 22 19:06 htcacheclean
-rwxr-xr-x. 1 root root   65160  5月 22 19:06 htdbm
-rwxr-xr-x. 1 root root   38608  5月 22 19:06 htdigest
-rwxr-xr-x. 1 root root   64784  5月 22 19:06 htpasswd
-rwxr-xr-x. 1 root root 2359864  5月 22 19:06 httpd
-rwxr-xr-x. 1 root root   36040  5月 22 19:06 httxt2dbm
-rwxr-xr-x. 1 root root   39352  5月 22 19:06 logresolve
-rwxr-xr-x. 1 root root   64912  5月 22 19:06 rotatelogs
  • ab: Apache Benchmarking tool,用于测试HTTP服务器的性能,可以模拟多个并发请求来评估服务器的负载能力。
  • apachectl: Apache HTTP Server control script,用于控制Apache服务器的启动、停止、重启、重载入配置等操作。
  • apxs: Apache eXtenSion tool,用于构建、安装Apache模块的工具,支持从源代码创建、安装自定义模块。
  • checkgid: 检查gid权限的脚本或工具,可能是用于辅助Apache配置中的权限管理。
  • dbmmanage: 管理dbm文件的工具,dbm是数据库文件格式,常用于存储用户认证信息。
  • envvars 和 envvars-std: 环境变量设置脚本,通常用于设置Apache运行所需的环境变量,如PATH。
  • fcgistarter: FastCGI starter工具,可能用于管理FastCGI进程。
  • htcacheclean: 用于清理Apache缓存的工具,帮助管理磁盘空间。
  • htdbmhtdigesthtpasswdhttxt2dbm: 分别用于管理用户认证的工具,包括生成密码文件、转换文本到dbm格式等。
  • httpd: Apache HTTP Server主程序,是Apache Web服务器的核心可执行文件。
  • logresolve: 解析日志文件中的IP地址为域名的工具,通常用于分析日志时增强可读性。
  • rotatelogs: 日志文件轮转工具,用于自动管理和维护日志文件,如按时间或大小分割日志文件。
[root@localhost bin] mkdir -p /etc/init.d/
[root@localhost bin] cp apachectl /etc/init.d/httpd
[root@localhost bin] ll /etc/init.d/
总用量 4
-rwxr-xr-x. 1 root root 3431  5月 23 21:00 httpd

接下来使用绝对路径去启动他--下面只是一串警告(主配置文件里的 ServerName 没有定义)

[root@localhost init.d] /etc/init.d/httpd start
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain. Set the 'ServerName' directive globally to suppress this message

不过端口已经启动了,证明服务已经启动了,这一个警告并不影响


 

[root@localhost init.d] vim /usr/local/httpd/conf/httpd.conf 

[root@localhost init.d] /etc/init.d/httpd stop
[root@localhost init.d] /etc/init.d/httpd start
[root@localhost init.d] netstat -tunlpt | grep 80
tcp6       0      0 :::80                   :::*                    LISTEN      3448/httpd          
udp        0      0 0.0.0.0:58096           0.0.0.0:*                           843/avahi-daemon: r 

在浏览器打开发现已经成功

  • 22
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

妍妍的宝贝

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值