创建systemd服务单元

笔记本suspended后数秒无故wake up问题排查("ACPI: Waking up from system sleep state S3",解决休眠问题的方法是通过systemd管理rc.local启动来执行电源管理设置。

此外为了解决nVidia显卡的屏幕亮度调节问题,还需要启动时执行 setpci 指令。本文描述如何将脚本打包成systemd的服务单元配置,采用标准systemd实现脚本或服务运行。

在RHEL/CentOS 7上,兼容以往的init模式的启动脚本,依然提供了 /etc/rc.local 配置,只是需要systemd管理rc.local启动

Arch Linux没有默认rc.local支持,但还是可以参考 rc.local support on Arch Linux with systemd自己搞一个兼容方式。

  • 编辑 /usr/lib/systemd/system/rc-local.service :

[Unit]
Description=/etc/rc.local Compatibility

[Service]
Type=oneshot
ExecStart=/etc/rc.local
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target
  • 编辑 /etc/rc.local 设置:

#!/usr/bin/bash

echo XHC1 | tee /proc/acpi/wakeup
setpci -v -H1 -s 00:01.00 BRIDGE_CONTROL=0
  • /etc/rc.local 添加可执行属性:

chmod 755 /etc/rc.local
  • 激活服务

systemctl enable rc-local.service

Use systemd to Start a Linux Service at Boot 有一个简单的将脚本运行成服务的方法可以参考

参考

Last updated