js css html

Linux(七)系统启动 Linux服务及计划任务管理

2023-09-18  本文已影响0人  石志不渝

一 系统启动流程

系统的启动流程,大致可以描述为:


系统启动流程
  1. 上电
    按下启动按钮或复位按钮
  2. BIOS(基本输入/输出系统)启动
    会先行启动一段程序,这段程序被称为“基本输入/输出系统”(BIOS)。BIOS代码一般存储在ROM(只读存储器)中,此ROM一般焊接在主板上。BIOS用于硬件状态检测(比如有没有内存条,如果没有则会蜂鸣器报警),硬件的初始化以及进行后续操作
  3. 引导设备选择
    BIOS会根据用户之前用户设置的启动顺序(或默认设置),依据列表依次检测设备是否具有引导加载程序(是否有BootLoader,以此检查设备是否可引导)
  4. 启动BootLoader
    当BIOS检测到首个BootLoader的存在时,会调用此BootLoader。BootLoader一般存储在可引导设备的特定分区中。
  5. BootLoader启动后,可在硬盘中读取系统内核,并加载到内存中。完成内核的初始化
  6. 内核空间初始化完成后,会开始进行用户空间的初始化。比如加载系统服务、启动守护进程(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设置为开机启动时,会看到系统创建了一个软连接。所连接到的这个文件,就是我们所说的单元文件。里面有一些项

设置为开机启动 mariadb.service内容

三 管理计划任务

我们利用systemd,来创建一个定时任务。每五分钟向log.txt中写入一条时间日期。大概的流程如下:

建定时器流程
  1. 创建auto.sh文件,用于向log.txt中写入日期
    touch ./log.txt && chmod 666 ./log.txt
    touch ./auto.sh && chmod 777 ./auto.sh
    vim ./auto.sh
    
    auto.sh 中的内容
    #!/bin/bash
    date "+%Y-%m-%d %H:%M:%S">> /home/ubuntu/log.txt
    
  2. 创建my.timer
    sudo vim /usr/lib/systemd/system/my.timer
    
    my.timer 中的内容
    [Unit]
    Description=My Timer Service
    
    [Timer]
    OnBootSec=5min
    OnUnitActiveSec=5min
    
    [Install]
    WantedBy=multi-user.target
    
  3. 创建my.service
    sudo vim /usr/lib/systemd/system/my.service
    
    my.timer 中的内容
    [Unit]
    Description=My Timer Service
    
    [Service]
    User=ubuntu
    Group=ubuntu
    Type=simple
    ExecStart=/home/ubuntu/auto.sh
    
    [Install]
    WantedBy=multi-user.target
    
  4. 后续操作
    sudo systemctl daemon-reload
    sudo systemctl enable my.service
    sudo systemctl enable my.timer
    sudo systemctl start my.timer
    sudo systemctl status my.timer
    
  5. 查看文件中写入的内容
    tail -f ./log.txt
    
上一篇 下一篇

猜你喜欢

热点阅读