捕获屏幕截图时在后台运行的Python脚本

捕获屏幕截图时在后台运行的Python脚本,python,linux,debian,Python,Linux,Debian,我创建了一些python代码,以便在访问某个站点时捕获屏幕截图。 当我从终端运行代码时,它运行良好并给出输出。当设置为cron作业或启动脚本时,它似乎不起作用。有什么不对劲吗?投诉无法启动显示,但如何解决?代码如下 #!/usr/bin/python2.7 import time import subprocess def get_current_status(netss): netss = subprocess.check_output(“ss -rt”, shell=True)

我创建了一些python代码,以便在访问某个站点时捕获屏幕截图。 当我从终端运行代码时,它运行良好并给出输出。当设置为cron作业或启动脚本时,它似乎不起作用。有什么不对劲吗?投诉无法启动显示,但如何解决?代码如下

#!/usr/bin/python2.7
import time
import subprocess
def get_current_status(netss):
    netss = subprocess.check_output(“ss -rt”, shell=True)
    if “facebook” in netss:
        out_put = subprocess.check_output(‘import -window root “/home/user/test/new_$(date +%F-%N).png”‘, shell=True)
        time.sleep(3)
    elif “youtube” in netss:
        out_put = subprocess.check_output(‘import -window root “/home/user/test/new_$(date +%F-%N).png”‘, shell=True)

     else:
        print(“Not yet time to capture”)

def main():
    get_current_status(“netss”)
while True:
    main()
    time.sleep(10)

我在python3中使用subprocess.getoutput并在python脚本中设置显示环境,将其整理出来。您也可以将此python脚本作为cronjob运行。当我在“python的类和对象”中获得gr.OUND时,我开发了这个。请看下面的代码:

#!/usr/bin/env python3
import subprocess
import time
import pyscreenshot as ImageGrab
import os
if not 'DISPLAY' in os.environ:
    os.environ['DISPLAY'] = ":0"

class NewCapture:
    command = subprocess.getoutput("sudo ss -nt state established dst :443")
    file_name = time.strftime("%Y-%m-%d-%H-%M-%S" +".png")
    grab = ""
    def funct_capture(self):

        if ":443" in self.command:

            self.grab = ImageGrab.grab_to_file("/home/user/test/%s" % self.file_name)

        else:
            pass

firstcommand = NewCapture()
firstcommand.funct_capture()

你能粘贴你得到的准确错误吗?这可能是因为cron作业尝试运行时显示器处于休眠状态吗?确切的错误是,在图像捕获时显示器无法显示。您可以在您的机器上尝试该代码,并意识到它在终端中运行良好,但当设置为cronjob或作为服务运行时,情况并非如此。当设置为使用“update-rd.rc command defaults”作为服务运行时,其中的命令是调用它的shell脚本,它会得到显示错误。你什么意思?在测试模式下,您意识到捕获间隔很短,因此显示未休眠。我昨天让它运行。我必须创建一个单独的bashshell脚本,由python脚本调用。bash脚本是捕获屏幕截图的脚本,它使用xwd并声明要捕获的显示。看起来像这样/bin/bash export DISPLAY=:0&&/usr/bin/xwd-DISPLAY:0.0-root-out file_name如果直接从python脚本运行xwd命令,只要为登录的用户指示DISPLAY参数,它也可以很好地工作。