(十八)Linux开机启动管理---systemd使用

常用命令 
使某服务自动启动systemctl enable httpd.service使某服务不自动启动systemctl disable httpd.service检查服务状态systemctl status httpd.service (服务详细信息) systemctl is-active httpd.service (仅显示是否 Active)显示所有已启动的服务systemctl list-units --type=service启动某服务systemctl start httpd.service停止某服务systemctl stop httpd.service重启某服务systemctl restart httpd.service修改配置文件后重启修改配置文件以后,需要重新加载配置文件,然后重新启动相关服务。# 重新加载配置文件 $ sudo systemctl daemon-reload # 重启相关服务 $ sudo systemctl restart foobar开机服务管理

开机启动unit

一旦修改配置文件,就要让 SystemD 重新加载配置文件,然后重新启动,否则修改不会生效。

$ sudo systemctl daemon-reload $ sudo systemctl restart httpd.service

开机不启动unit

查看开机是否启动

systemctl is-enabled test.service #查询服务是否开机启动

systemd查看开机自启动的程序

ls /etc/systemd/system/multi-user.target.wants/

查看systemd单元加载及活动情况

systemctl

显示启动失败的单元

systemctl --failed

查看systemd管理的所有单元

systemctl list-unit-files服务管理

启动服务

systemctl start httpd.service

关闭服务

systemctl stop httpd.service

重启服务

systemctl restart httpd.service

重新加载

systemctl reload httpd.service

查看状态

systemctl status httpd.service 包括启动状态、启动时间、主进程及相关进程、相关日志systemctlsystemctl是 Systemd 的主命令,用于管理系统。# 重启系统 $ sudo systemctl reboot # 关闭系统,切断电源 $ sudo systemctl poweroff # CPU停止工作 $ sudo systemctl halt # 暂停系统 $ sudo systemctl suspend # 让系统进入冬眠状态 $ sudo systemctl hibernate # 让系统进入交互式休眠状态 $ sudo systemctl hybrid-sleep # 启动进入救援状态(单用户状态) $ sudo systemctl rescuesystemctl list-units命令可以查看当前系统的所有 Unit 。# 列出正在运行的 Unit $ systemctl list-units # 列出所有Unit,包括没有找到配置文件的或者启动失败的 $ systemctl list-units --all # 列出所有没有运行的 Unit $ systemctl list-units --all --state=inactive # 列出所有加载失败的 Unit $ systemctl list-units --failed # 列出所有正在运行的、类型为 service 的 Unit $ systemctl list-units --type=service配置文件的区块

[Unit]区块通常是配置文件的第一个区块,用来定义 Unit 的元数据,以及配置与其他 Unit 的关系。它的主要字段如下。

Description:简短描述 Documentation:文档地址 Requires:当前 Unit 依赖的其他 Unit,如果它们没有运行,当前 Unit 会启动失败 Wants:与当前 Unit 配合的其他 Unit,如果它们没有运行,当前 Unit 不会启动失败 BindsTo:与Requires类似,它指定的 Unit 如果退出,会导致当前 Unit 停止运行 Before:如果该字段指定的 Unit 也要启动,那么必须在当前 Unit 之后启动 After:如果该字段指定的 Unit 也要启动,那么必须在当前 Unit 之前启动 Conflicts:这里指定的 Unit 不能与当前 Unit 同时运行 Condition:当前 Unit 运行必须满足的条件,否则不会运行 Assert:当前 Unit 运行必须满足的条件,否则会报启动失败!!!重要eg:After=network.target sshd-keygen.service After字段:表示如果network.target或sshd-keygen.service需要启动,那么当前.service应该在它们之后启动。 相应地,还有一个Before字段,定义sshd.service应该在哪些服务之前启动。 注意,After和Before字段只涉及启动顺序,不涉及依赖关系。

[Install]通常是配置文件的最后一个区块,用来定义如何启动,以及是否开机启动。它的主要字段如下。

[Service]区块用来 Service 的配置,只有 Service 类型的 Unit 才有这个区块。它的主要字段如下。

Type:定义启动时的进程行为。它有以下几种值。 Type=simple:默认值,执行ExecStart指定的命令,启动主进程 Type=forking:以 fork 方式从父进程创建子进程,创建后父进程会立即退出 Type=oneshot:一次性进程,Systemd 会等当前服务退出,再继续往下执行 Type=dbus:当前服务通过D-Bus启动 Type=notify:当前服务启动完毕,会通知Systemd,再继续往下执行 Type=idle:若有其他任务执行完毕,当前服务才会运行 ExecStart:启动当前服务的命令 ExecStartPre:启动当前服务之前执行的命令 ExecStartPost:启动当前服务之后执行的命令 ExecReload:重启当前服务时执行的命令 ExecStop:停止当前服务时执行的命令 ExecStopPost:停止当其服务之后执行的命令 RestartSec:自动重启当前服务间隔的秒数 Restart:定义何种情况 Systemd 会自动重启当前服务,可能的值包括always(总是重启)、on-success、on-failure、on-abnormal、on-abort、on-watchdog TimeoutSec:定义 Systemd 停止当前服务之前等待的秒数 Environment:指定环境变量Unit 配置文件的完整字段清单,请参考官方文档。日志管理Systemd 统一管理所有 Unit 的启动日志。带来的好处就是,可以只用journalctl一个命令,查看所有日志(内核日志和应用日志)。日志的配置文件是/etc/systemd/journald.conf。journalctl功能强大,用法非常多。

相关内容推荐