Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Linux-自定义服务在启动后立即停止_Python_Linux_Service_Daemon_Systemd - Fatal编程技术网

Python Linux-自定义服务在启动后立即停止

Python Linux-自定义服务在启动后立即停止,python,linux,service,daemon,systemd,Python,Linux,Service,Daemon,Systemd,在Debian 4.9上,我基于以下模板定义了一个自定义python3.5服务(守护进程): TestDaemon.py: import sys, pdaemon, time import MyLogger logger = None class TestDaemon(pdaemon.Daemon): def printversion(self): logger.info("You are using Python {}.{}.".format(

在Debian 4.9上,我基于以下模板定义了一个自定义python3.5服务(守护进程):

TestDaemon.py:

import sys, pdaemon, time
import MyLogger

logger = None


class TestDaemon(pdaemon.Daemon):
    def printversion(self):
        logger.info("You are using Python {}.{}.".format(sys.version_info.major, sys.version_info.minor))

    def run(self):
        self.printversion()
        logger.info("Runfake BEGIN")
        for i in range(10):
            logger.info("loop #{0}...".format(i))
            time.sleep(1)
        logger.info("Runfake END")

    def quit(self):
        logger.info("TestDaemon-quit")
        time.sleep(1)


if __name__ == '__main__':
    logger = MyLogger.MyLogger.getDaemonLog()
    i = 0
    for a in sys.argv:
        print("args[{0}]: {1}".format(i, a))
        i += 1
    if len(sys.argv) < 2:
        print("Usage: {0} start|stop|restart".format(sys.argv[0]))
        sys.exit(2)

    daemon = TestDaemon('/var/run/TestDaemon.pid')
    if 'start' == sys.argv[1] or '--start' == sys.argv[1]:
        daemon.start()
    elif 'stop' == sys.argv[1] or '--stop' == sys.argv[1]:
        daemon.stop()
    elif 'restart' == sys.argv[1] or '--restart' == sys.argv[1]:
        daemon.restart()
    else:
        print("Unknown command '{0}'".format(sys.argv[1]))
        sys.exit(2)
[Unit]
Description=MyTest service

[Service]
Type=forking
ExecStart=/bin/sh -c "/usr/bin/python3 /usr/share/mytest/TestDaemon.py start"
ExecStop=/bin/sh -c "/usr/bin/python3 /usr/share/mytest/TestDaemon.py stop"
ExecReload=/bin/sh -c "/usr/bin/python3 /usr/share/mytest/TestDaemon.py restart"

# Disable Python's buffering of STDOUT and STDERR, so that output from the
# service shows up immediately in systemd's logs
Environment=PYTHONUNBUFFERED=1

# Automatically restart the service if it crashes
Restart=no

# Our service will notify systemd once it is up and running
#Type=notify

# Use a dedicated user to run our service
User=mytest
Group=mytest

[Install]
# Tell systemd to automatically start this service when the system boots
# (assuming the service is enabled)
WantedBy=default.target

对于运行段,循环高达10是正常的。我想先尝试一下,如果它上升到10,因为这个过程在第一次迭代之后,或者有时在第二次迭代之后停止

服务日志的输出:

2020-09-17 11:51:15,078 : INFO : My daemon: start
2020-09-17 11:51:15,107 : INFO : You are using Python 3.5.
2020-09-17 11:51:15,108 : INFO : Runfake BEGIN
2020-09-17 11:51:15,108 : INFO : loop #0...
2020-09-17 11:51:15,152 : INFO : My daemon: stop
2020-09-17 11:51:15,153 : INFO : TestDaemon-quit
2020-09-17 11:51:15,353 : INFO : My daemon: stopped
daemon.log的输出:

Sep 17 11:51:15 vps817262 systemd[1]: Starting MyTest service...
Sep 17 11:51:15 vps817262 sh[29354]: args[0]: /usr/share/mytest/TestDaemon.py
Sep 17 11:51:15 vps817262 sh[29354]: args[1]: start
Sep 17 11:51:15 vps817262 systemd[1]: Started MyTest service.
Sep 17 11:51:15 vps817262 sh[29361]: args[0]: /usr/share/mytest/TestDaemon.py
Sep 17 11:51:15 vps817262 sh[29361]: args[1]: stop

journalctl-xe的输出:

sept. 17 11:51:15 vps817262 sudo[29349]: hypgnosis : TTY=pts/2 ; PWD=/home/hypgnosis ; USER=root ; COMMAND=/bin/systemctl start mytest
sept. 17 11:51:15 vps817262 sudo[29349]: pam_unix(sudo:session): session opened for user root by hypgnosis(uid=0)
sept. 17 11:51:15 vps817262 systemd[1]: Starting MyTest service...
-- Subject: L'unité (unit) mytest.service a commencé à démarrer
-- Defined-By: systemd
-- Support: https://www.debian.org/support
-- 
-- L'unité (unit) mytest.service a commencé à démarrer.
sept. 17 11:51:15 vps817262 sh[29354]: args[0]: /usr/share/mytest/TestDaemon.py
sept. 17 11:51:15 vps817262 sh[29354]: args[1]: start
sept. 17 11:51:15 vps817262 systemd[1]: Started MyTest service.
-- Subject: L'unité (unit) mytest.service a terminé son démarrage
-- Defined-By: systemd
-- Support: https://www.debian.org/support
-- 
-- L'unité (unit) mytest.service a terminé son démarrage, avec le résultat done.
sept. 17 11:51:15 vps817262 sudo[29349]: pam_unix(sudo:session): session closed for user root
sept. 17 11:51:15 vps817262 sh[29361]: args[0]: /usr/share/mytest/TestDaemon.py
sept. 17 11:51:15 vps817262 sh[29361]: args[1]: stop
现在我真正的问题是:为什么有东西在我的守护进程成功启动后立即调用“stop”命令来停止它?

它是从sudo会话开始后关闭的吗

我当时真的被卡住了:不知道谁/什么叫这站…:(

谢谢大家的帮助

问候

隆凸