OneDrive 服务在 Raspberry Pi 上的 Ubuntu 上不断停止

OneDrive 服务在 Raspberry Pi 上的 Ubuntu 上不断停止

我已经安装了 OneDrive 客户端 onedrive v2.4.22-1+np1 (https://github.com/abraunegg/onedrive) 在运行 Raspberry Pi 4 的 Ubuntu 服务器(Ubuntu 22.04.1)上。

安装后,我通过以下方式启动了服务

systemctl --user enable onedrive
systemctl --user start onedrive 

只要我登录,与 OneDrive 的同步就可以按预期进行。当我离开系统时,它会在一段时间后停止同步。系统上运行着另一项依赖于同步的服务。这项服务仍然运行良好,但由于缺乏同步,会产生过时的结果,并且结果在云中不可见。

当我通过 SSH 登录 Raspberry 上的服务器并在systemctl --user status onedrive登录后立即获取服务状态时,我可以看到 onedrive 客户端在我登录后立即启动,而它应该在我未登录的情况下持续运行:

Dec 14 12:45:27 raspi-server onedrive[19550]: Configuration file successfully loaded
Dec 14 12:45:27 raspi-server onedrive[19550]: Notification (dbus) server not available, disabling
Dec 14 12:45:28 raspi-server onedrive[19550]: Configuring Global Azure AD Endpoints
Dec 14 12:45:29 raspi-server onedrive[19550]: Initializing the Synchronization Engine ...
Dec 14 12:45:29 raspi-server onedrive[19550]: Initializing monitor ...
Dec 14 12:45:29 raspi-server onedrive[19550]: OneDrive monitor interval (seconds): 300
Dec 14 12:45:29 raspi-server onedrive[19550]: Starting a sync with OneDrive

根据文档https://github.com/abraunegg/onedrive/blob/master/docs/USAGE.md#how-to-run-a-user-systemd-service-at-boot-without-user-loginsystemctl --user enable onedrive我应该使用命令和安装服务systemctl --user start onedrive,但su - root首先使用。使用时出现身份验证错误su - root。如果我没有提升权限,同步会正常工作,但在我未登录时会停止。如果我使用sudo systemctl --user enable onedrive而不是使用su - root,我会收到错误消息Failed to connect to bus: $DBUS_SESSION_BUS_ADDRESS and $XDG_RUNTIME_DIR not defined (consider using --machine=<user>@.host --user to connect to bus of other user)。链接的文档处理类似的错误消息,对于 Raspberry Pi 上的 Ubuntu,根据文档,第一步是“从 /home/root/.config/onedrive 创建指向 /root/.config/onedrive/ 的符号链接”.但我没有目录/主目录/根目录/也不/根/.配置/,所以我被困在这里。

我不知道如何找出我的服务配置出了什么问题。我该如何让 onedrive 服务持续运行?

编辑:

缺少的部分是 loginctl enable-linger <your_user_name> 我从接受的答案点 4 中获取的终端命令。有了这个,它现在就可以很好地工作了。

答案1

披露:我是 Linux 版 OneDrive 客户端的开发人员 -https://github.com/abraunegg/onedrive

如果我没有提升权限就执行此操作,则同步可以进行,但如果我没有登录,同步就会停止。

正确的操作流程如下:

  1. 以非 root 用户身份登录。

  2. 根据您的需求配置应用程序,并使用 --synchronize --dry-run 进行一次同步,验证它是否正常工作

  3. 按照以下要求启用并启动非 root 用户所需的服务https://github.com/abraunegg/onedrive/blob/master/docs/USAGE.md#onedrive-service-running-as-a-non-root-user-via-systemd-with-notifications-enabled-arch-ubuntu-debian-opensuse-fedora

    systemctl --user enable onedrive; systemctl --user start onedrive

  4. 启用您的用户帐户按以下方式停留https://github.com/abraunegg/onedrive/blob/master/docs/USAGE.md#how-to-run-a-user-systemd-service-at-boot-without-user-login

    loginctl enable-linger <your_user_name>

这是正确的使用流程并且已经过多次验证。

此外,将来请在此处提出讨论要点:https://github.com/abraunegg/onedrive/discussions问这样的问题。

相关内容