引导过程和服务控制

linux】使用systemctl start xxx启动自己的程序|开机启动|守护进程 目录 即看即用 详细说明 systemctl 的用途 用法 例子:以管理我们的程序verdaccio为例 开机启动 设置程序开机启动、关闭、启用/禁用服务以vsftpd为例 三个部分[Unit]、[Service]、[Install]配置说明 systemctl或service启动服务日志 systemctl和service的区别 ... 阅读详情

1、引导过程

当你按下开机的电源键直到屏幕显示登录的画面,这中间系统做的一些的开机过程

1.1开机自检(BIOS)

服务器开机之后,根据主板的BIOS设置,对CPU,内存,显卡,键盘等设备进行初步的检测。检测成功后根据预设的启动顺序(默认的启动顺序,第二个就是硬盘,要么就是手动设置的U盘启动)。系统的控制权抓到了硬盘(大多数的时候转移给本机的硬盘) 总结:初步的检测硬件工作是否正常,检测成功后,把系统的引导控制权交给硬盘或者光驱或者U盘

1.2 MBR引导

MBR是硬盘的分区记录表,在这个表里面记录硬盘的分区,以及系统启动盘的位置在哪。 系统的控制权到了硬盘,根据MBR记录表找系统的启动盘,找到之后将系统的控制权传递给包含操作系统引导文件的分区,以及MBR记录中系统的启动菜单(GRUB)

1.3 GRUB菜单

硬盘启动之后,找到系统分区,也找到了操作系统所在的位置,GRUB就会显示启动菜单,包含所有当前可选的操作系统。选择了其中一个操作系统之后,系统转移控制权,转移到操作系统的内核文件。 centos7使用的都是GRUB2启动引导器

1.4加载内核文件

操作系统的内核文件是一个预先编译好的特殊的二进制文件(可执行的代码),介于硬件资源和系统程序之间。负责分配资源,调度资源。只是分配和调度,并没有真正运行。预加载到内存当中,系统程序等待启动。

1.5 init/systemd启动方式

/sbin/init进程是系统当中的第一个进程,是所有其他进程的父进程。init进程在系统中的进程号永远是1。

init是串行,一个一个启动。速度慢。

/lid/systemd/system,它是系统的第一个进程,进程号也是1。

systemd是并行,加载在内存当中的程序,一起启动,速度快。

2、systemd单元类型

2.1概念说明

systemd是centos7之后用来管理系统服务进程的管理器,使用单元模式(unit)来描述和控制系统服务和资源。

特点: 1、支持并行服务,提高系统的启动速度

            2、支持自动重启

            3、可以在进程运行期间动态的控制它的资源和相关的服务参数。

            4、可以自动解决服务启动过程中的依赖关系。

            5、支持多种管理方式,比如命令行,也可以使用图形化工具,命令行操作

2.2单元类型

单元类型              扩展名                   说明

Service                .service                  描述一个系统服务 Target .target 描述一组systemd的单元。进程在不同运行级别下的状态。

Socket                .socket                    进程启动时根据其配置分配系统端口,监听端口状态。如果有请求维护端口通信 (提供网络服务)

Device                .device                    管理硬件设备,驱动程序,设备文件,设备属性

Mount                 .mount                    管理文件系统的挂载以及挂载的选项,以及挂载之后的数据管理

Automount          .automount             根据配置,自动的实现设备或者文件系统的挂载

[Unit] Description=nginx - high

performance web server

Documentation=nginx documentation

After=network-online.target

remote-fs.target nss-lookup.target #表示支持dns解析以及该软件依赖于网络。

Wants=network-online.target #先启动网络服务,才能启动nginx

[Service]

Type=forking

PIDFile=/usr/local/nginx/run/nginx.pid #注意文件位置,如果不对 启动不了 ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf #注意启动文件位置 ExecReload=/bin/kill -s HUP

$MAINPID ExecStop=/bin/kill -s TERM

$MAINPID [Install] WantedBy=multi-user.target

#支持多用户模式

unit:服务的说明

Description:描述信息

After:依赖,启动的这个进程,systemd会根据after的条件把相关的进程一并启动

Wants:也是一个依赖条件,systemd也会把这个网络功能一并启动

[Service]:服务运行的参数设置

Type=forking:后台运行

ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf 服务启动时具体运行的命令

ExecReload=/bin/kill -s HUP $MAINPID 重启的命令

ExecStop=/bin/kill -s TERM $MAINPID 停止进程的命令

[Install]:服务安装的相关设置,以及运行的模式

WantedBy=multi-user.target 支持多用户模式

3、系统的运行级别

运行级别       systemd对应的target       说明 

0                               target                    关机

1                         rescue.target              单用户模式,系统维护时使用

2                        multi-user.target          字符模式,和3一样

3                        multi-user.targe            字符模式完整的字符模式,3模式可以支持多用户,在工作中,我们遇到的都是3 4 multi-user.targe 字符模式,和3一样

5                       graphical.target             图形化多用户模式(工作中没有)

6                         reboot.target                重启

查看系统运行级别:runlevel

切换系统的运行级别:init 0 1 2 3 4 5 6

4、如何对系统的服务进程进行控制

systemctl 控制类型 服务名称(进程) 控制类型

start 启动

stop 停止

restart 重启 先关闭再开机,先stop再start(修改服务的配置文件,必须要重启服务才能生效) reload 重新加载单元配置

status 查看服务的状态

running 正常运行

dead 服务停止

failed 启动失败,查找启动失败的原因。

failed的两种形式:exit-code 是真正的启动失败

                              result:signal 表明有人强制终止了该进程,不一定是报错

5.试验

5.1MBR引导:MBR分区表被删了,如何恢复

添加硬盘

fdisk /dev/sdb 查看设备的分区表信息

创建文件系统

在根目录下创建目录backup,挂载

创建虚拟文件(MBR分区表在第一块硬盘当中的第一个分区,大小512字节。把这个分区表从第一个硬盘当中提取出来。保存在sdb的硬盘中。就是MBR分区表做了一个备份。)

模拟删除分区表

reboot或者init 6 重启,troubleshooting解决故障——rescue a centos system拯救系统,进入自救模式

创建新目录,挂载

恢复还原,exit退出

5.2GRUB菜单引导菜单故障

进入grub2目录,模拟删除,重启进入虚拟机

按esc选择CD-ROM Drive——troubleshooting——rescue a centos system(操作如5.1)

chroot /mnt/sysimage 进入系统的根环境

把grub2菜单重新安装到第一块硬盘

重新构建grub菜单的配置文件,exit退出,reboot重启

5.3root密码忘了该怎么办?

setenforce 0 关闭安全机制

重置虚拟机,按esc选择CD-ROM Drive——troubleshooting——rescue a centos system

chroot /mnt/sysimage 进入光盘镜像的根目录

passwd root 设置新密码

exit退出 reboot重启

Linux进阶二:应用服务化;(以将redis配置为系统服务为例)(其中包括大量【systemctl】系统命令) 说明:本篇博客篇幅较长,但其中的实质内容并不多;所以,本篇博客快速浏览为佳。 本篇博客参考文章有:【CentOS 将 Redis 配置为系统服务】 ,作者是【小狗快跑嘟嘟】; 目录 一:应用服务化简介 1.为什么需要应用服务化? 2.应用服务化简介 3.应用服务化的核心命令:【systemctl】及其子指令 二:案例:CentOS中将redis配置成系统服务 1.第一步:手动启动redis,并确定redis.pid文件的存在 2.第二步:在【/usr/lib/systemd/.. 阅读详情

相关推荐

mysql知识点

,它定义了 MySQL 服务的启动、运行、管理和关闭方式。以下是每个部分的详细解释和原理说明: Description:描述该服务的名称,方便管理员识别其用途。这里是“”。 After=network.target:表明 MySQL 服务应在 (即网络相关服务启动完成)之后启动,以确保 MySQL 能够依赖网络连接(如果配置了远程访问)。这不意味着网络一定启动成功,只是依赖其顺序。 [Install] WantedBy=multi-user.target:指定服务的安装目标,将服务链接到 。该选项决

酌沧 1720

WantedBy=multi-user.target是什么意思?

本文介绍了如何在星图GPU平台上自动化部署'测试开机启动脚本'镜像,实现Linux系统服务的标准化开机自启配置。该镜像适用于嵌入式设备、边缘服务器等场景下的后台服务(如视频流采集mjpg.service)开机自动拉起,提升运维效率与系统可靠性。

weixin_42591413的博客 465

STM32 FOC电机控制:手把手教你用CubeMX配置TIM1中心对齐PWM(含代码避坑)

本文详细解析了STM32 FOC电机控制中TIM1中心对齐PWM的配置方法,涵盖CubeMX图形化设置、HAL库代码调用及常见问题排查。特别针对L6230Q驱动芯片的使能逻辑和死区时间配置提供实用指南,帮助开发者高效实现无刷电机的高性能控制

weixin_27027459的博客 404

CentOS7使用systemctl添加自定义服务

一、简介 Centos7开机第一个程序从init完全换成了systemd这种启动方式,同centos 5 6已经是实质差别。systemd是靠管理unit的方式来控制开机服务,开机级别等功能。 在/usr/lib/systemd/system目录下包含了各种unit文件,有service后缀的服务unit,有target后缀的开机级别unit等,这里介绍关于service后缀的文件。...

3358

(建议收藏)systemd(systemctl命令)运行服务的配置文件详解

一、.server服务配置文件信息详解 二、系统的.target的文件信息详解 三、使用systemctl status xxxx 的状态信息详解

qq_40903527的博客 1万+

Linux引导过程和服务控制

引导过程与服务控制一、Linux操作系统的引导过程1、引导过程1.开机自检2.MBR 引导3.GRUB 菜单4.加载 Linux 内核5.init 进程初始化二、系统初始化进程1.init进程2.Systemd3.Systemd单元类型4.运行级别所对应的Systemd目标三、排除启动类故障1、MBR扇区故障分析2、模拟MBR扇区故障并修复3、修复GRUB引导故障4、遗忘root密码四、系统服务控制1、系统服务控制2、控制类型五、Linux系统的运行级别1、查看运行级别2、临时切换运行级别3、运行级别对应的

码里奥的博客 345

Linux系统:引导过程和服务控制

用于管理linux系统服务和进程的系统和服务管理器,使用单元(unit)来描述和控制系统服务和资源。

Riky12的博客 1415

Linux设置软件开机自启动的三种方式(中标麒麟、银河麒麟、ubuntu)

方法 利用Linux.desktop文件实现开机启动。 在/etc/xdg/autostart 目录下建立一个 test.desktop文件,并对文件进行以下编辑。 操作步骤 第一步:打开/etc/xdg/autostart目录 cd /etc/xdg/autostart 第二步:建立test.desktop文件 touch test.desktop 第三步:编写文件并保存 sudo vim test.desktop 添加如下代码: [Desktop Entry] Name=Test Exec=/

qq_45164331的博客 4万+

systemd

systemd是Linux下的一种init软件,由Lennart Poettering带头开发,并在LGPL 2.1及其后续版本许可证下开源发布。其开发目标是提供更优秀的框架以表示系统服务间的依赖关系,并依此实现系统初始化时服务的并行启动,同时达到降低Shell的系统开销的效果,最终代替现在常用的System V与BSD风格init程序。    传统的System V是串行启动,即在

a624731186的专栏 3878

WantedBy=multi-user.target是什么意思?一文说清

本文介绍了如何在星图GPU平台上自动化部署'测试开机启动脚本'镜像,实现Linux系统服务的标准化自启动配置。该镜像适用于服务器初始化、运维自动化等典型场景,帮助用户快速建立可靠的服务启停管理机制。

weixin_42594419的博客 451

linux系统添加开机服务自启

自定义服务文件,添加到系统服务,通过Systemctl管理 使用vim创建服务文件 服务名.service文件,例如:nginx.service、redis.service、supervisord.service [Unit]:服务的说明 Description:描述服务 After:描述服务类别 [Service]服务运行参数的设置 Type=forking 是后台运行的形式 ExecStart 为服务的具体运行命令 ExecReload 为服务的重启命令 ExecSt

weixin_43246170的博客 1947

systemd 管理工具详解

比如systemctl、hostnamectl、timedatectl、localctl等命令,这些命令虽然改写了init时代用户的命令使用习惯(不再使用chkconfig、service等命令),但确实也提供了很大的便捷性。systemd是目前Linux系统上主要的系统守护进程管理工具,由于init一方面对于进程的管理是串行化的,容易出现阻塞情况,另一方面init也仅仅是执行启动脚本,并不能对服务本身进行更多的管理。服务的主体定义,主要定义服务的一些运行参数,及操作动作。:记录unit文件的通用信息。..

larance的挨踢生活 1921

MTK 人工智能生态系统 <一> 简介

Neuropilot

New_Tank的博客 3448

波导缝隙天线的设计和仿真设计.doc

波导缝隙天线的设计和仿真设计.doc

上一篇: Linux软件、程序的安装
下一篇: 进程和计划任务管理
QChestnut
博客等级 码龄2年 676粉丝 · 73原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值