本文介绍在Ubuntu20.04系统上创建一个 systemd 服务,延迟 5 秒启动 glmark2-es2。
1. 创建 hua-chips-auto-service.sh 脚本
启动时运行 glmark2-es2 测试,新建脚本 /usr/local/bin/hua-chips-auto-service.sh。
#!/bin/bash
# 等待5秒
sleep 5
# 设置 XAUTHORITY 以确保脚本可以访问当前用户的 X 会话
export XAUTHORITY=/home/hua-chips/.Xauthority
# 设置 DISPLAY 环境变量,以指向默认的显示器
export DISPLAY=:0
# 进行图形性能测试
glmark2-es2
使脚本可执行:
sudo chmod +x /usr/local/bin/hua-chips-auto-service.sh
2. 创建 systemd 服务文件
新建文件/etc/systemd/system/hua-chips-auto.service
sudo vi /etc/systemd/system/hua-chips-auto.service
[Unit]
Description=HuaChips Auto Service
# 定义服务在图形界面启动后再启动
After=graphical.target
[Service]
Type=oneshot
RemainAfterExit=yes
# 使用hua-chips用户执行脚本
ExecStart=/bin/su - hua-chips -c "/usr/local/bin/hua-chips-auto-service.sh"
Environment=DISPLAY=:0
Environment=XAUTHORITY=/home/hua-chips/.Xauthority
[Install]
WantedBy=default.target
3. 启用和启动服务
# 重新加载 systemd 配置以识别新的服务文件
sudo systemctl daemon-reload;
# 启用服务,使其在系统启动时自动运行
sudo systemctl enable hua-chips-auto.service;
# 立即启动服务以测试配置
sudo systemctl start hua-chips-auto.service
# 检查服务状态以确保正常运行
sudo systemctl status hua-chips-auto.service
正常返回结果,带SUCCESS字段:
hua-chips@hua-chips:~$ sudo systemctl status hua-chips-auto.service
[sudo] password for neardi:
● hua-chips-auto.service - HuaChips Auto Service
Loaded: loaded (/etc/systemd/system/hua-chips-auto.service; enabled; vendor preset: enabled)
Active: active (exited) since Mon 2024-09-02 13:52:09 UTC; 11min ago
Process: 558 ExecStart=/bin/su - hua-chips -c /usr/local/bin/hua-chips-auto.sh (code=exited, status=0/SUCCESS)
Main PID: 558 (code=exited, status=0/SUCCESS)
Sep 02 13:46:20 hua-chips systemd[1]: Starting Neardi Auto Service...
Sep 02 13:46:20 hua-chips su[558]: (to hua-chips) root on none
Sep 02 13:46:20 hua-chips su[558]: pam_unix(su-l:session): session opened for user neardi by (uid=0)
Sep 02 13:52:09 hua-chips systemd[1]: Finished hua-chips Auto Service.