树莓派Systemd服务管理智能RGB彩灯程序
今天我们来聊聊如何在树莓派上接入一款带RGB灯效的风扇。风扇内部集成了WS281x系列的智能彩灯,通过GPIO18引脚连接。原本打算用编程控制它实现酷炫的RGB灯光效果,但每次开机都需要手动配置、启动程序,还要将其放入后台运行以免占用终端。偶尔忘记操作,再想起来执行就十分麻烦。因此,索性采用Linu
今天我们来聊聊如何在树莓派上接入一款带RGB灯效的风扇。风扇内部集成了WS281x系列的智能彩灯,通过GPIO18引脚连接。原本打算用编程控制它实现酷炫的RGB灯光效果,但每次开机都需要手动配置、启动程序,还要将其放入后台运行以免占用终端。偶尔忘记操作,再想起来执行就十分麻烦。因此,索性采用Linux的systemd服务来统一管理这个程序,实现开机自启与便捷控制。
什么是systemd.service?
简单来说,systemd.service是一种服务单元配置文件。在树莓派的Linux系统中,/lib/systemd/system/目录下存放着一系列以“.service”结尾的文件,这些文件记录了systemd需要控制与监控的进程信息,也包括用户自定义的程序启动参数。它有几个核心特性:通用配置写在[Unit]和[Install]部分;服务专属配置写在[Service]部分;还可通过systemd.exec定义执行环境,systemd.kill定义进程终止方式,systemd.resource-control配置资源限制。若采用SysV init兼容模式,systemd会自动为SysV init脚本创建对应的服务单元。需要注意的是,自定义服务只需创建一个服务名称与脚本名称相同、后缀为“.service”的文件,再简单配置启动项即可。
硬件连接
先看树莓派侧的接线方式。在终端输入pinout,可显示引脚定义。下图展示了树莓派与冰塔散热器风扇的具体连接方案。硬件连接完成后,下一步就是驱动灯环。

确保树莓派已成功联网。IP地址、网关、DNS服务器均需正确——很多时候DNS配置有误会导致无法上网。可使用nslookup或ping检测网络连通性,按Ctrl+C终止测试。也可以编辑/etc/resolv.conf文件,修改nameserver字段来指定DNS地址。联网正常后,打开终端执行以下命令:

操作成功后,创建build目录并编译:

编译完成后,当前目录会生成一个绿色的可执行文件test。将其拷贝到/usr/bin/目录下,方便全局调用,无需修改环境变量。执行moodlight并放入后台,风扇灯光即开始闪烁。

配置systemd服务,实现开机自启
然而,关机后灯光效果便会消失。如何让系统开机时自动启动灯光程序,并能够通过命令行轻松开启或关闭呢?这正是本文的核心:编写systemd服务配置文件!
进入系统服务配置目录,编辑一个名为minitower_moodlight.service的文件。

填写以下配置内容:


保存退出后,执行以下命令:

此时系统中会增加一个名为minitower_moodlight的服务在后台运行。如需停止该服务,操作非常简单:


