Systemd¶
自动化脚本¶
目录位置: ~/.config/systemd/user/
目录位置: ~/.config/systemd/user/
创建用户级服务单元¶
用户级服务单元文件用于定义和管理用户级别的后台服务、定时任务等。
创建服务单元文件示例:
mkdir -p ~/.config/systemd/user/
nano ~/.config/systemd/user/myservice.service
服务单元文件内容示例:
[Unit]
Description=My Custom User Service
After=network.target
[Service]
Type=simple
ExecStart=/home/username/path/to/your/script.sh
Restart=on-failure
Environment=MY_VARIABLE=some_value
[Install]
WantedBy=default.target
创建用户级定时器¶
定时器单元用于按计划执行任务,类似于cron作业。
创建定时器单元文件示例:
nano ~/.config/systemd/user/mytimer.timer
定时器单元文件内容示例:
[Unit]
Description=Run my script daily
Requires=myservice.service
[Timer]
OnCalendar=daily
Persistent=true
[Install]
WantedBy=timers.target
对应的服务单元文件:
nano ~/.config/systemd/user/mytimer.service
[Unit]
Description=My Timer Service
[Service]
Type=oneshot
ExecStart=/home/username/path/to/your/task.sh
EnvironmentFile=%h/.config/environment.d/90-my-vars.conf
常用操作命令¶
启用和启动服务:
# 重新加载配置
systemctl --user daemon-reload
# 启用服务(开机自启)
systemctl --user enable myservice.service
# 启动服务
systemctl --user start myservice.service
# 启用定时器
systemctl --user enable mytimer.timer
systemctl --user start mytimer.timer
查看服务状态:
# 查看服务状态
systemctl --user status myservice.service
# 查看所有用户服务
systemctl --user list-units
# 查看定时器状态
systemctl --user list-timers
日志查看:
# 查看服务日志
journalctl --user -u myservice.service
# 实时查看日志
journalctl --user -u myservice.service -f
环境变量继承¶
服务可以继承用户环境变量:
[Service]
EnvironmentFile=%h/.config/environment.d/90-my-vars.conf
ExecStart=/usr/bin/env bash -c 'echo $MY_VARIABLE'
注意事项¶
- 用户会话持久性:确保用户会话在登录后保持活动状态
- 路径使用绝对路径:避免使用~或相对路径
- 权限管理:用户级服务以当前用户权限运行
- 日志管理:使用journalctl查看用户级服务日志
通过systemd用户级服务,可以实现精细化的用户级别进程管理和自动化任务调度。