用户 python 应用程序服务未在启动时启动

马丁约瑟夫

我的用户服务是一个 python 脚本,它不会在启动时运行。它作为用户 pi 在 raspbian 操作系统上运行。由于大多数这些问题,我可以启动该服务并且它运行良好,systemctl --user start argus但它不会在重新启动时启动。

[Unit]
Description=RAL Argus Service

[Service]
Environment=PYTHONUNBUFFERED=1
ExecStart=/usr/bin/python3 /home/pi/RAL/Argus/Hextapus_Base.py -bsi=5 -pupd=59 -bm=1
RemainAfterExit=yes
Restart=no

[Install]
WantedBy=multi-user.target

我已经运行,sudo loginctl --linger $USER因此即使 pi 用户未登录,该服务也应该运行。

脚本运行从传感器收集数据并在完成数据收集后关闭设备(现在发出 sudo shutdown)。RTC 再次唤醒系统,脚本运行并再次重复该过程。

在启动这里是输出 systemctl --user status argus

pi@raspberrypi:~ $ systemctl --user status argus
â—� argus.service - RAL Argus Service
   Loaded: loaded (/home/pi/.config/systemd/user/argus.service; enabled; vendor preset: enabled)
   Active: inactive (dead)

这是脚本的要点


def main():
    args=cli(argv) #parse args

    try:
        
        normal_operation(args)
            
        rtc_time = Hextapus.Get_string_utc_time_pcf(0)
        logger.warning("Issuing Shutdown command at RTC Time: {}".format(rtc_time))    #Indicate os shutdown during hard shutdown and RTC time stamp      
        os.system('sudo shutdown now')    
        return 0
        
    except KeyboardInterrupt:
        #This is so when debugging the loops are killed quickly
        logger.warning("Keyboard ESCAPE detected. Shutting Down")
            

if __name__ == '__main__':
       
    sys.exit(main(sys.argv))

因为当我运行 systemctl --user start argus 时该服务会在 pi 上关闭,所以我在 journalctl 中看到以下内容

Dec 03 20:35:39 raspberrypi python3[27653]: 2020-12-03 20:35:39,502 - WARNING - Issuing Shutdown command at RTC Time: 20201203203543
Dec 03 20:35:43 raspberrypi systemd[385]: Stopping RAL Argus Service...
Dec 03 20:35:43 raspberrypi systemd[385]: argus.service: Main process exited, code=killed, status=15/TERM
Dec 03 20:35:43 raspberrypi systemd[385]: argus.service: Succeeded.
Dec 03 20:35:43 raspberrypi systemd[385]: Stopped RAL Argus Service.

后续启动的 journalctl 中没有更多信息来说明服务正在运行或无法启动。我不确定脚本发出关闭的事实是否是我的问题的原因。

谢谢!

斯图尔特

您的服务没有启动,因为pi's 的--user总线在pi登录之前不会启动。虽然 Michal 的回答部分正确(您应该使用default.target而不是multi-user.targetin--user模式),但最好的答案是将您的服务放在系统总线上。

如果你想在不pi登录的情况下运行这个服务,那就把它放在系统总线上。这包括:

  • mv ~/.config/systemd/user/argus.service /etc/systemd/system/
  • 添加User=pi到 的[Service]部分argus.service

现在您的脚本拥有与pi在用户总线上运行时相同的所有权限,除了它独立于用户登录状态运行。唯一的缺点是您sudo在使用systemctl处理此单元时需要运行journalctl

--user总线的主要优点是允许用户使用systemctljournalctlsudo管理特定服务。它还允许根据用户的登录或注销来启动和停止服务。由于您的服务需要在没有用户输入且没有用户登录触发器的情况下启动,因此系统总线是最佳位置。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

以本地用户身份在启动时自动启动python GUI应用程序(beagle bone black)

来自分类Dev

如何为应用程序创建服务用户并在启动时从该用户运行它

来自分类Dev

在应用程序启动时登录用户

来自分类Dev

从finder启动时Python构建应用程序失败

来自分类Dev

检测用户单击或Windows启动时在C#中运行的应用程序

来自分类Dev

如何在启动时以特定用户身份运行应用程序?

来自分类Dev

当需要用户输入时,如何在启动时自动运行应用程序?

来自分类Dev

添加 Root 密码并在启动时在 MongoDB Docker 容器上创建应用程序用户

来自分类Dev

如何在 Django/Python 应用程序中启动时执行装饰器函数?

来自分类Dev

在应用程序启动时将用户定向到不同视图控制器的最快方法

来自分类Dev

C# 用户定义的应用程序设置不会在系统启动时加载

来自分类Dev

如何根据用户是否登录来处理在应用程序启动时显示不同的视图控制器?

来自分类Dev

App Windows 10用户启动文件夹未在启动时启动

来自分类Dev

OS X应用程序-用户登录系统时自动启动应用程序

来自分类Dev

OS X应用程序-用户登录系统时自动启动应用程序

来自分类Dev

如何在启动时以非root用户身份运行python脚本

来自分类Dev

启用的systemd用户服务未在登录时启动

来自分类Dev

systemd 用户服务未在登录时启动

来自分类Dev

systemd:用户服务在启动时以目标默认/图形启动,但不是多用户

来自分类Dev

角度材料选择在应用程序启动时不显示当前的ngx-translate语言(在用户手动选择语言之前)

来自分类Dev

在应用程序启动时如何将值(用户和users_profiles)加载到数据库中?

来自分类Dev

如何在Android应用程序每次启动时为他保存保管箱用户详细信息而不进行身份验证?

来自分类Dev

在启动时启动应用程序

来自分类Dev

启动时启动应用程序

来自分类Dev

启动时启动应用程序

来自分类Dev

如何从 Windows 上的服务在未登录的用户桌面上启动应用程序

来自分类Dev

Python/Tkinter 应用程序在 Raspberry Pi 启动时运行

来自分类Dev

在 Linux 启动时运行 python3 应用程序

来自分类Dev

当应用程序重新启动且用户已授予位置访问权限时如何再次启动服务

Related 相关文章

  1. 1

    以本地用户身份在启动时自动启动python GUI应用程序(beagle bone black)

  2. 2

    如何为应用程序创建服务用户并在启动时从该用户运行它

  3. 3

    在应用程序启动时登录用户

  4. 4

    从finder启动时Python构建应用程序失败

  5. 5

    检测用户单击或Windows启动时在C#中运行的应用程序

  6. 6

    如何在启动时以特定用户身份运行应用程序?

  7. 7

    当需要用户输入时,如何在启动时自动运行应用程序?

  8. 8

    添加 Root 密码并在启动时在 MongoDB Docker 容器上创建应用程序用户

  9. 9

    如何在 Django/Python 应用程序中启动时执行装饰器函数?

  10. 10

    在应用程序启动时将用户定向到不同视图控制器的最快方法

  11. 11

    C# 用户定义的应用程序设置不会在系统启动时加载

  12. 12

    如何根据用户是否登录来处理在应用程序启动时显示不同的视图控制器?

  13. 13

    App Windows 10用户启动文件夹未在启动时启动

  14. 14

    OS X应用程序-用户登录系统时自动启动应用程序

  15. 15

    OS X应用程序-用户登录系统时自动启动应用程序

  16. 16

    如何在启动时以非root用户身份运行python脚本

  17. 17

    启用的systemd用户服务未在登录时启动

  18. 18

    systemd 用户服务未在登录时启动

  19. 19

    systemd:用户服务在启动时以目标默认/图形启动,但不是多用户

  20. 20

    角度材料选择在应用程序启动时不显示当前的ngx-translate语言(在用户手动选择语言之前)

  21. 21

    在应用程序启动时如何将值(用户和users_profiles)加载到数据库中?

  22. 22

    如何在Android应用程序每次启动时为他保存保管箱用户详细信息而不进行身份验证?

  23. 23

    在启动时启动应用程序

  24. 24

    启动时启动应用程序

  25. 25

    启动时启动应用程序

  26. 26

    如何从 Windows 上的服务在未登录的用户桌面上启动应用程序

  27. 27

    Python/Tkinter 应用程序在 Raspberry Pi 启动时运行

  28. 28

    在 Linux 启动时运行 python3 应用程序

  29. 29

    当应用程序重新启动且用户已授予位置访问权限时如何再次启动服务

热门标签

归档