systemd的相关命令

systemctl list-unit-filesq   #查看linux的开机自动开启的所有服务
systemd-analyze   # 查看启动耗时                                                                                       
systemd-analyze blame    # 查看每个服务的启动耗时
systemd-analyze critical-chain   # 显示瀑布状的启动过程流
systemd-analyze critical-chain atd.service    # 显示指定服务的启动流

disable enable的原理

enable 就是创建了一个软链接

disable 就是删除了一个软链接

systemd文件格式说明

systemd unit 文件通常是由三部分组成的

[Unit] 定义的通用选项,比如描述信息,依赖关系等

[Service] 定义服务的类型,具体的启动关闭重启选项都在此部分配置

[Install] 定义由开机自启和不开机自启命令时实现的选项

unit 模块常用说明

image-20250423212231106

service 模块常用说明

image-20250423212428973

对于常见服务推荐使用forking 模式即可。

oneshot 适用于一次的服务

install 模块常用说明

WantedBY  #哪些服务需要被依赖

type=simple和type=forking的区别

使用Type=forking时,要求ExecStart启动的命令自身就是以daemon模式运行的。

Type=simple是一种最常见的通过systemd服务系统运行用户自定义命令的类型,也是省略Type指令时的默认类型。

Type=simple类型的服务只适合那些在shell下运行在前台的命令。也就是说,当一个命令本身会以daemon模式运行时,将不能使用simple,而应该使用Type=forking。比如ls命令、sleep命令、非daemon模式运行的nginx进程以及那些以前台调试模式运行的进程,在理论上都可以定义为simple类型的服务。

案例

自定义一个nginx脚本

vim /usr/lib/systemd/system/nginx.service
[Unit]
Description=The nginx HTTP and reverse proxy server
After=network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target

[Service]
Type=forking
PIDFile=/application/nginx-1.20.1/logs/nginx.pid
ExecStartPre=/usr/bin/rm -f /application/nginx-1.20.1/logs/nginx.pid
ExecStartPre=/application/nginx-1.20.1/sbin/nginx -t
ExecStart=/application/nginx-1.20.1/sbin/nginx
ExecReload=/application/nginx-1.20.1/sbin/nginx -s reload
KillSignal=SIGQUIT
TimeoutStopSec=5
KillMode=process
PrivateTmp=true

[Install]
WantedBy=multi-user.target

java程序

[Unit]
Description=eladmin
After=network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target

[Service]
Environment=JAVA_HOME=/usr/local/jdk
ExecStart=/usr/local/jdk/bin/java -jar /opt/eladmin/package/eladmin-system-2.7.jar


[Install]
WantedBy=multi-user.target

results matching ""

    No results matching ""