Ubuntu 22.04下如何编写systemd服务所需脚本以实现开机自动执行指定rclone同步命令
Ubuntu 22.04下如何编写systemd服务所需脚本以实现开机自动执行指定rclone同步命令
别担心,你完全不用因为自己不是程序员犯愁,整个操作其实非常直观,我一步步带你完成:
第一步:创建执行同步命令的脚本
先打开终端,找到
rclone命令的绝对路径(这样能避免开机时环境变量找不到命令的问题),输入:which rclone你会得到类似
/usr/bin/rclone的输出,记下来这个路径。接下来创建脚本文件,比如放在你的用户目录下,方便管理:
nano /home/你的用户名/rclone_sync.sh(把
你的用户名换成你实际的Ubuntu用户名,比如如果你的用户名是alice,就写/home/alice/rclone_sync.sh)在打开的nano编辑器里,粘贴以下内容:
#!/bin/bash # 这里替换成你刚才查到的rclone绝对路径 /usr/bin/rclone sync / b2-004:alice-ubtntu-2295 --copy-links >> /home/你的用户名/rclone_sync.log 2>&1简单解释下:
#!/bin/bash:告诉系统用bash解释器来执行这个脚本- 后面就是你要运行的同步命令,用绝对路径的rclone更稳妥,避免开机时找不到命令
>> /home/你的用户名/rclone_sync.log 2>&1:把命令的输出和错误信息都写到日志文件里,方便以后排查问题
按
Ctrl+O保存内容,再按Ctrl+X退出nano编辑器。给脚本添加执行权限,不然系统没法运行它:
chmod +x /home/你的用户名/rclone_sync.sh先手动测试一下脚本能不能正常运行,输入:
/home/你的用户名/rclone_sync.sh运行完后可以查看日志确认执行情况:
cat /home/你的用户名/rclone_sync.log
第二步:创建systemd服务文件
systemd需要一个配置文件来明确什么时候、怎么运行你的脚本:
用root权限创建服务文件:
sudo nano /etc/systemd/system/rclone-sync.service在编辑器里粘贴以下内容:
[Unit] Description=开机自动执行rclone同步命令 # 确保网络完全就绪后再运行,因为云同步必须依赖网络 After=network-online.target Wants=network-online.target [Service] # 只运行一次,同步完成后就结束 Type=oneshot # 替换成你的脚本绝对路径 ExecStart=/home/你的用户名/rclone_sync.sh # 替换成你的用户名,确保用你的用户权限运行,避免权限问题 User=你的用户名 # 同步完成后不需要重启服务 Restart=no [Install] # 多用户模式下开机启动 WantedBy=multi-user.target同样按
Ctrl+O保存,Ctrl+X退出编辑器。
第三步:启用并测试服务
重新加载systemd,让它识别新的服务文件:
sudo systemctl daemon-reload设置服务开机自动启动:
sudo systemctl enable rclone-sync.service可以手动测试一下服务能不能正常运行(模拟开机时的执行逻辑):
sudo systemctl start rclone-sync.service运行完后查看日志确认结果:
cat /home/你的用户名/rclone_sync.log
如果一切正常,下次开机的时候这个同步命令就会自动执行了!
备注:内容来源于stack exchange,提问作者Beta Wolf
相关产品推荐
相关产品推荐

