Linux(七)系统启动 Linux服务及计划任务管理
2023-09-18 本文已影响0人
石志不渝
一 系统启动流程
系统的启动流程,大致可以描述为:
系统启动流程
- 上电
按下启动按钮或复位按钮 - BIOS(基本输入/输出系统)启动
会先行启动一段程序,这段程序被称为“基本输入/输出系统”(BIOS)。BIOS代码一般存储在ROM(只读存储器)中,此ROM一般焊接在主板上。BIOS用于硬件状态检测(比如有没有内存条,如果没有则会蜂鸣器报警),硬件的初始化以及进行后续操作 - 引导设备选择
BIOS会根据用户之前用户设置的启动顺序(或默认设置),依据列表依次检测设备是否具有引导加载程序(是否有BootLoader,以此检查设备是否可引导) - 启动BootLoader
当BIOS检测到首个BootLoader的存在时,会调用此BootLoader。BootLoader一般存储在可引导设备的特定分区中。 - BootLoader启动后,可在硬盘中读取系统内核,并加载到内存中。完成内核的初始化
- 内核空间初始化完成后,会开始进行用户空间的初始化。比如加载系统服务、启动守护进程(daemons)、挂载文件系统、配置网络、设置主机名等。
二 管理Linux 服务
systemd
是一个目前广泛用于Linux系统的初始化系统和服务管理器,用于管理系统的启动、服务管理和其他系统任务。
通过systemctl
可以实现对系统服务的管理、查询、添加、定时任务的管理等。语法如下:
systemctl [选项] <服务名>
序号 | 选项 | 作用 |
---|---|---|
1 | start | 启动服务 |
2 | stop | 停止服务 |
3 | restart | 重启服务 |
4 | reload | 重载配置文件 (仅在服务运行时可用) |
5 | status | 查看服务或定时任务状态 |
6 | enable | 设置开机启动或定时任务 |
7 | disable | 禁止开机启动或定时任务 |
8 | is-enable | 查看是否为开机启动 |
9 | list-units | 查看已经启动的服务 |
10 | list-unit-files | 查看所有单元文件及单元状态,含未启动的服务 |
以MariaDB为例,安装完MariaDB后,默认情况下mariadb.service是在启动的。
sudo systemctl status mariadb
mariadb状态
sudo systemctl stop mariadb && mysql -u root -p
停用mariadb服务
sudo systemctl disable mariadb && reboot
sudo systemctl status mariadb
禁止mariadb开机自启
sudo systemctl is-enabled mariadb
查看是否为开机自启
sudo systemctl enable mariadb
systemd
中,会把服务看作一个一个的单元,我们将mariadb
设置为开机启动时,会看到系统创建了一个软连接。所连接到的这个文件,就是我们所说的单元文件。里面有一些项
三 管理计划任务
我们利用systemd
,来创建一个定时任务。每五分钟向log.txt
中写入一条时间日期。大概的流程如下:
- 创建
auto.sh
文件,用于向log.txt
中写入日期
auto.sh 中的内容touch ./log.txt && chmod 666 ./log.txt touch ./auto.sh && chmod 777 ./auto.sh vim ./auto.sh
#!/bin/bash date "+%Y-%m-%d %H:%M:%S">> /home/ubuntu/log.txt
- 创建
my.timer
my.timer 中的内容sudo vim /usr/lib/systemd/system/my.timer
[Unit] Description=My Timer Service [Timer] OnBootSec=5min OnUnitActiveSec=5min [Install] WantedBy=multi-user.target
- 创建
my.service
my.timer 中的内容sudo vim /usr/lib/systemd/system/my.service
[Unit] Description=My Timer Service [Service] User=ubuntu Group=ubuntu Type=simple ExecStart=/home/ubuntu/auto.sh [Install] WantedBy=multi-user.target
- 后续操作
sudo systemctl daemon-reload sudo systemctl enable my.service sudo systemctl enable my.timer sudo systemctl start my.timer sudo systemctl status my.timer
- 查看文件中写入的内容
tail -f ./log.txt