systemd(一)

Systemd介绍

按下电源键,随着风扇转动的声音,显示器上开启的图标亮起。之后,只需要静静等待几秒钟,登录界面显示,输入密码,即可愉快的玩耍了。
这是我们大概每天都做的事情。那么中间到底发生了什么?
简单地说,从BIOS或者UEFI开始读取硬盘。接下来,进入bootloader(LILO或者GRUB),bootloader开始载入内核,内核初始化完毕后,紧接着进入用户空间的初始化。
用户空间的启动的第一个进程即pid=1,就是从一个叫init的程序开始的,这也是本文的主角

08-17
### 配置 systemd 开机自动执行脚本或服务 在 Linux 系统中,`systemd` 是个系统和服务管理器,广泛用于现代发行版中以实现开机自动运行脚本或服务。通过创建自定义的 `systemd` 服务单元文件,可以确保特定脚本在网络连接就绪后自动执行。 要实现开机自动执行脚本,首先需要编写个服务单元文件。该文件通常包含 `[Unit]`、`[Service]` 和 `[Install]` 三个部分。在 `[Unit]` 段中,使用 `After=` 指定服务在网络服务启动之后运行,例如 `network-online.target`,以确保脚本运行时网络环境已经就绪。同时,`Wants=` 可用于指定对网络服务的依赖关系[^1]。 ```ini [Unit] Description=Run Custom Script at Boot After=network-online.target Wants=network-online.target ``` 在 `[Service]` 段中,使用 `ExecStart=` 指定需要执行的脚本路径。`Type=oneshot` 表示该服务只执行次脚本任务,不持续运行。如果希望服务在执行失败后自动重启,可以设置 `Restart=on-failure` 并通过 `RestartSec=` 指定重启前的等待时间。 ```ini [Service] Type=oneshot ExecStart=/usr/local/bin/boot-script.sh Restart=on-failure RestartSec=10 RemainAfterExit=yes ``` 在 `[Install]` 段中,指定服务应被哪个目标启用,例如 `multi-user.target`,以便在系统启动时自动运行脚本。 ```ini [Install] WantedBy=multi-user.target ``` 保存该服务文件为 `/etc/systemd/system/boot-script.service` 后,需要重新加载 `systemd` 配置以识别新创建的服务单元: ```bash sudo systemctl daemon-reload ``` 启用服务以确保其在系统启动时自动运行: ```bash sudo systemctl enable boot-script.service ``` 如需立即运行该服务而不重启系统,可执行以下命令: ```bash sudo systemctl start boot-script.service ``` 为确保脚本执行过程中不会因路径或权限问题导致失败,需确保脚本具有可执行权限。例如: ```bash chmod +x /usr/local/bin/boot-script.sh ``` 此外,如果脚本依赖特定环境变量,可以在 `systemd` 服务文件中使用 `Environment=` 指令设置环境变量。例如: ```ini [Service] Environment="PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin" ``` 为了调试服务执行过程,可以将标准输出和错误信息记录到 `systemd-journald` 日志中,便于排查问题: ```ini [Service] StandardOutput=journal StandardError=journal ``` 查看服务执行日志的命令如下: ```bash journalctl -u boot-script.service ``` 为防止服务在短时间内频繁重启,可以限制重启次数。例如,以下配置表示在 60 秒内最多重启 5 次: ```ini [Service] StartLimitIntervalSec=60 StartLimitBurst=5 ``` ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值