linux服务初步学习

本文介绍了Linux的七个运行级别,重点比较了SystemV、Upstart和systemd三种初始化系统,以及它们在服务管理和配置方面的差异,包括chkconfig和systemctl命令的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Linux的运行级别(从0~6总共七个运行级别):

0:关机
1:单用户模式
2:多用户模式(没有NFS)
3:完全的多用户模式
4:系统未使用
5:图形界面模式
6:重启

初始化系统

初始化系统通常由内核引导程序和一系列初始化脚本组成。内核引导程序负责启动内核并加载必要的驱动程序,而初始化系统负责启动和管理各种服务和应用程序。

Linux的三个初始化系统 System V(Sys V)、Upstart、systemd。

最初Linux系统用的都是System V(Sys V),后来出现Upstart,在Ubuntu系统中替代System V(Sys V),目前Linux发行版都用systemd来替代System V(Sys V)和Upstart。

SystemV:是传统的初始化系统,也是最早的Linux初始化系统之一。它是一个基于文本的系统,使用SysVinit或Systemd作为初始化脚本的运行程序。System V主要用于较旧的Linux发行版和某些商业Linux发行版。
Upstart:是一个基于事件的初始化系统,旨在替代System V。它能够在系统启动时自动启动服务,并监视和控制服务的运行状态。Upstart通过事件来触发任务的执行,使得系统更加灵活和可靠。
systemd:是目前最流行的Linux初始化系统之一,被广泛应用于大多数现代Linux发行版中。systemd是一个基于守护进程的系统和服务管理器,提供了强大的功能和灵活性,包括自动启动服务、监控服务状态、管理用户会话等。

系统服务

System V(Sys V)

System V(Sys V)系统用到两个命令管理服务 service和chkconfig,服务脚本在/etc/init.d/目录下

systemd

systemd则使用systemctl命令来管理服务,服务脚本在/usr/lib/systemd/system/目录下,系统执行过程中所产生的服务脚本在/run/systemd/system/目录下,这些脚本的优先级要比/usr/lib/systemd/system/高,管理员根据主机系统的需求所创建的执行脚本在/etc/systemd/system/目录下,执行优先级比/run/systemd/system/高。
/etc/systemd/system/目录下的相关配置,决定系统了会不会执行某些服务,所以该目录下面一般放着一大堆链接文件。而/usr/lib/systemd/system/下,则放着实际执行的systemd启动脚本配置文件。因此如果你想要修改某个服务启动的设置,应该去/usr/lib/systemd/system/下面修改。/etc/systemd/system/仅是链接到正确的执行脚本配置文件而已。所以想要看执行脚本设置,应该就得要到/usr/lib/systemd/system/去查阅。

常用命令对比

命令描述System V(Sys V)系统命令systemd系统命令
使某服务自动启动chkconfig --level 3 服务名 onsystemctl enable 服务名.service
使某服务不自动启动chkconfig --level 3 服务名 offsystemctl disable 服务名.service
检查服务状态service 服务名 statussystemctl status 服务名.service (服务详细信息) systemctl is-active 服务名.service (仅显示是否 Active)
显示所有已启动的服务chkconfig --listsystemctl list-units --type=service
启动某服务service 服务名 startsystemctl start 服务名.service
停止某服务service 服务名 stopsystemctl stop 服务名.service
重启某服务service 服务名 restartsystemctl restart 服务名.service

systemctl常用命令

查看服务状态
systemctl status 服务名
检查服务的所有配置详细信息
systemctl show 服务名
查看各服务开机自启情况
systemctl list-unit-files --type=service
获取服务的依赖项列表
systemctl list-dependencies 服务名.service
按层次列出控制组
systemd-cgls
根据CPU,内存,输入和输出列出控制组
systemd-cgtop
分析每个进程在引导时花费的时间
systemd-analyze blame
列出所有可用的系统套接字
systemctl list-unit-files --type=socket

套接字的操作
systemctl start cups.socket #启动套接字
systemctl restart cups.socket #重启套接字
systemctl stop cups.socket #停止套接字
systemctl reload cups.socket #重新加载套接字
systemctl status cups.socket #查看套接字状态
systemctl is-active cups.socket
systemctl enable cups.socket
systemctl disable cups.socket

其他命令
systemctl mask 服务名.service   #禁用某个服务
systemctl unmask 服务名.service   #解除禁用某个服务
systemctl isolate multi-user.target  #将目前的操作环境改为纯文本模式,关掉图形界面
systemctl isolate graphical.target  #将目前的操作环境改为图形界面
systemctl poweroff # 系统关机
systemctl reboot  # 重新开机
systemctl suspend  # 进入暂停模式
systemctl hibernate # 进入休眠模式
systemctl rescue  # 强制进入救援模式
systemctl emergency # 强制进入紧急救援模式

systemctl命令与service命令的区别在于,systemctl命令支持systemd服务,而service命令只支持sysvinit服务。

在使用服务管理命令时,需要注意以下几点:

确定要管理的服务的名称,例如apache2、mysql等。
确定服务的启动脚本存储的位置,通常是在/etc/init.d目录下。
确定服务的配置文件存储的位置,通常是在/etc目录下。
在修改服务的配置文件时,建议先备份原始配置文件,以防止修改后引起的问题
rsyslog是Linux中一个常用的日志记录服务,它可以记录系统运行时的各种事件。看下他的配置文件在哪,日志文件在哪???

系统服务的配置文件

在Linux中,服务的配置文件通常存储在/etc目录下,不同的服务可能有不同的配置文件。例如,Apache Web服务器的主要配置文件是/etc/apache2/apache2.conf,而MySQL数据库服务器的主要配置文件是/etc/mysql/mysql.conf.d/mysqld.cnf,rsyslog日志记录服务的主要配置文件是/etc/rsyslog.conf,而firewalld防火墙服务的主要配置文件是/etc/firewalld/firewalld.conf。

自定义服务

System V(Sys V)

1、在/etc/init.d目录下创建脚本,脚本中写入如下内容

#!/bin/bash
# chkconfig: 345 99 10
# description: My Custom Service
case "$1" in
start)
/usr/bin/my_service
;;
stop)
killall my_service
;;
restart)
killall my_service
/usr/bin/my_service
;;
status)
ps aux | grep my_service | grep -v grep
;;
*)
echo "Usage: $0 {start|stop|restart|status}"
exit 1
;;
esac
exit 0

2、设置启动脚本的权限,使其可以执行 sudo chmod +x /etc/init.d/my_service

3、设置服务自启动 sudo chkconfig --add my_service sudo chkconfig my_service on

systemd

1、在/etc/systemd/system目录下创建houzhuiwei.service的配置文件,里面内容如下

[Unit]
Description=My Custom Service  #服务的名称
[Service]
ExecStart=/usr/bin/my_service  #服务的启动命令
Restart=always   #服务的重启方式常用的值包括always、on-failure、never
User=myuser   #服务运行的用户
WorkingDirectory=/home/myuser  #服务的工作目录
[Install]
WantedBy=multi-user.target  

2、重载systemd配置文件 sudo systemctl daemon-reload

3、启动自定义服务 sudo systemctl start my_service

参考:https://zhuanlan.zhihu.com/p/398053266?utm_id=0
https://zhuanlan.zhihu.com/p/666362979

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值