从服务

时间:2015-11-06 00:01:58

标签: python service output upstart

我编写了一个Python脚本并作为服务运行,脚本本身会检查网络流量,最后它会吐出一个print语句。 我不知道最后怎么会看到印刷文字。它会显示在终端上吗?

我的想法是,如果此脚本作为服务运行并且我已登录,我想查看打印结果。

service.conf(修复运行级别,如果它也有问题,我可以运行它作为最后一个服务)

description "Network Check"
author  "I am the user"

start on runlevel [234]
stop on runlevel [0156]

chdir /home/foo
exec /home/foo/test.py
respawn

剧本:

#!/usr/bin/python
import psutil
import time
final_bytes=0
diff=0
while ((final_bytes/1000000)  < 500):
    bytes = psutil.net_io_counters()
    if (bytes.bytes_recv  - diff) > 1000000:
        time.sleep(1)
        if final_bytes != 0:
                final_bytes = final_bytes + (bytes.bytes_recv  - diff)
        else:
                final_bytes =1
    else:
        time.sleep(0.5)
    diff = bytes.bytes_recv

print "Total Bytes transferred: ", final_bytes / 1000000 ,"MB"

1 个答案:

答案 0 :(得分:0)

一种可能的选择是设置系统日志服务器(本地或远程)以将输出记录到。

import logging
import logging.handlers

# Set up the logging
FORMAT = "[%(filename)s:%(lineno)s - %(funcName)20s ] %(message)s\n"
logging.basicConfig(format=FORMAT)
_LOG = logging.getLogger(__name__)
_LOG.setLevel(logging.DEBUG)
sysLogServer = "127.0.0.1" # This could be a remote server address also
sysLogPort = 514
sysLogHandle = logging.handlers.SysLogHandler(address=(sysLogServer, sysLogPort))
sysLogHandle.setFormatter(logging.Formatter( __name__ + ":" + FORMAT))
_LOG.addHandler(sysLogHandle)

如果要生成日志消息,可以使用设置日志记录功能,如下所示:

_LOG.debug("Total Bytes Transfered...")

这会导致您的代码生成UDP syslog数据包。下一步是设置本地syslog监听器。例如,可以找到基本指南here

请注意。上面的例子比格式化要复杂得多,它只是我用来在我的内容输出中包含函数名的典型格式。