抱歉篇幅过长:
我在 Stack Overflow 上发布了同一篇文章:https://stackoverflow.com/questions/69671377/attempting-to-enable-a-custom-service-in-ubuntu-18-04-minimal-returns-failed-to
在这个系统上,我安装了 AWS CLI2,以及支持包,以及各种通用包,如 unzip 和 wget。
我有一个运行 Ubuntu 18.04 LTS Minimal (ami-006e7e4c46a45d7d7) 的 AWS 实例。我有一个自己创建的 .service 文件 (backuptos3.service),它正在多个 CentOS 服务器上运行。它执行一个脚本。(Backup_To_S3.sh) 有一个配套的 .timer 文件,它应该会触发这个 .service 文件。(backuptos3.timer)
我在“/home/users/bin”中有一个“Backup_To_S3.sh”,权限为 755(这可能不是正确的词)。“backuptos3.service”和“backuptos3.timer”文件位于“~/.config/systemd/user”中,权限也为 755。这里的所有者与文件夹的所有者相同。
当我运行命令时:
sudo systemctl enable backuptos3.service
我收到错误:“无法启用单元:单元文件 backuptos3.service 不存在。”
我还没有找到一个令人信服的解释来解释为什么以及如何解决这个问题。有什么想法吗?
我用 18.04 LTS(不是最低版本)替换了服务器(毕竟是 AWS),但问题并没有解决。我查看了发行说明(碰巧……)什么也没做。
这似乎不合适:https://stackoverflow.com/questions/53297867/enable-docker-services-in-ubuntu-18-04
这两个看起来很合适,但我不明白发生了什么:https://github.com/nix-community/lorri/issues/68和https://github.com/abraunegg/onedrive/issues/250
我也看到了这个:无法启动 gunicorn.service:未找到单元 gunicorn.service。Ubunto 18.04。问题是,建议的答案就是我的问题开始的地方。
我用了https://www.linux.com/training-tutorials/systemd-timers-two-use-cases-0/最初构建文件。
我已在下面包含.service 和.timer 文件。
# backuptos3.service
[Unit]
Description= Uploads Backups to AWS S3
Documentation= ""
[Service]
Type= simple
User= ubuntu
ExecStart= /home/ubuntu/bin/Backup_To_S3.sh
TimeoutStopSec= 21600 # 6 hours
[Install]
WantedBy= multi-user.target
和
# backuptos3.timer
[Unit]
Description=backuptos3
[Timer]
Unit=backuptos3.service
OnCalendar=*-*-* 02:30:00
Persistent=true
[Install]
WantedBy=basic.target
更新:听了 Doug Smythies 的建议后,我又搜索了一下有关启用用户服务与启用根服务的信息。找到了一篇 stack overflow 文章 (https://stackoverflow.com/questions/66534369/error-failed-to-enable-unit-invalid-argument) 讨论了论点无效问题。这导致了另一篇文章 (https://stackoverflow.com/questions/48177558/what-does-failed-to-execute-operation-invalid-argument-mean-when-running-syst) 有一个系统分析器,sudo systemd-analyze verify yourname.service
我运行它并得出以下结论:
配置文件 /etc/systemd/system/./backuptos3.service 被标记为可执行。请删除可执行权限位。继续。backuptos3.service:服务有多个 ExecStart= 设置,这只允许用于 Type=oneshot 服务。拒绝。backuptos3.service:无法创建 backuptos3.service/start:单元 backuptos3.service 未正确加载:参数无效。backuptos3.service:命令 /home/centos/bin/PDFS3Uploader.sh 不可执行:没有此文件或目录尝试删除磁盘文件系统,我们不能允许这样做。
我将努力解决这个难题,看看是否能够取得进展。
答案1
Doug Smythies 在上面说得对。(除了这个之外,我想不出如何给予赞扬。)我遇到了几个问题,如上面的区块中所述。
返回我最初发布的错误的原因在于将 .service 和 .timer 文件放在了错误的位置。
其他问题与权限有关。我必须检查 .service 文件中的用户和用户目录,以及使用
sudo chmod 775 <Service-name>
和
sudo chown ubuntu:ubuntu <Service-name>
我还发现,不知何故...我将代码双重粘贴到了 .service 文件中。(我有一个猜测:有时我的右键单击会同时粘贴鼠标按钮的按下和抬起动作。)显然,Nano 在这里很有用。
谢谢大家的帮助!