Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/334.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
在MacOS上每小时执行一次Python脚本 目标_Python_Macos_Cron_Cron Task - Fatal编程技术网

在MacOS上每小时执行一次Python脚本 目标

在MacOS上每小时执行一次Python脚本 目标,python,macos,cron,cron-task,Python,Macos,Cron,Cron Task,我有一个用python编写的脚本 连接到数据库 插入一些假数据 我的目标是每小时执行一次脚本 database.py CronniX 我做了一些研究,人们建议使用一系列应用程序来实现这一点 因此,我尝试下载/安装了CronniX 创建任务设置计划并运行它 它一直挂在上执行… 任务到黎明 除此之外,我还尝试了一次又一次直到黎明的任务 创建任务设置计划并运行它 结果 我的数据库里似乎没有任何东西,甚至说有35次成功执行。它所做的只是在Xcode窗口内弹出我的database.py 终点站

我有一个用python编写的脚本

  • 连接到数据库
  • 插入一些假数据
  • 我的目标是每小时执行一次脚本


    database.py

    CronniX

    我做了一些研究,人们建议使用一系列应用程序来实现这一点

    因此,我尝试下载/安装了CronniX

    创建任务
    设置计划
    并运行它

    它一直挂在
    上执行…


    任务到黎明

    除此之外,我还尝试了一次又一次直到黎明的任务

    创建任务
    设置计划
    并运行它

    结果

    我的数据库里似乎没有任何东西,甚至说有35次成功执行。它所做的只是在
    Xcode
    窗口内弹出我的
    database.py


    终点站 我运行了
    python database.py
    ,它工作得非常好,并且插入了数据


    我在想,这是许可问题,但我已经这么做了

    sudo chmod a+x数据库.py


    我错过了什么?实现这一目标的更好方法是什么


    如有任何建议/提示,将不胜感激

    您可以使用crontab,我想它已经安装在OSX上了

    打开终端并运行
    crontab-e
    。这将打开一个编辑器。你可以在那里打字


    @hourly/usr/bin/python database.py

    您也可以使用crontab:

    每小时:

    crontab 0 * * * * /path/to/script
    
    每分钟:

    crontab * * * * * /path/to/script
    
    要查看您的crontab,请执行以下操作:

    crontab -l
    
    要查看更多选项,请执行以下操作:

    man crontab
    

    根据Rafael Santos的建议,您可以像这样简单地使用cron:

    您可以键入:
    crontab-e
    并添加以下行:

    0 * * * * /path/to/your/script
    

    它将每小时运行您的脚本。或者,如果您正在使用Django,您可以使用它来做同样的事情。(它有一个crontab类型)

    运行一段时间,求和+1h,然后每5s验证一次电流,使用旧的时间+1h

    import datetime
    import time
    mytime= datetime.datetime.now()
    currenttime= str(datetime.datetime.time(mytime))
    currenttime = currenttime.split(':')
    data = list(currenttime)
    data[0] = str(int(data[0])+1) # [0] is the first part of 00:00:00, and +1 is the sum for the hour part
    print data
    print currenttime
    while True:
        mytime= datetime.datetime.now()
        currenttime= str(datetime.datetime.time(mytime))
        currenttime = currenttime.split(':')
        # Note: if want test code, delete the while and time.sleep()
        time.sleep(5)
        if data==currenttime:
            exit(0)
    

    您应该将其添加为函数,因为我的代码是丑陋的xDD

    您是否尝试了cron?有时候简单的解决方案效果最好,而您已经在使用终端了……如果我使用cron,我如何设置/配置它每60分钟运行一次。请告知,在此期间,我将阅读
    cron
    。谢谢你的建议。用python就可以了。使用一个线程并将其休眠一个小时。
    /database.py
    在没有python的情况下从终端工作吗?和
    /usr/bin/python database.py
    @cricket\u 007:如果我全部用python做,我必须打开终端,然后键入
    python database.py
    。我在找一个能在后台自动完成的东西。如果这里遗漏了什么,请纠正我。我可以把它缩短到一分钟进行测试以验证它是否有效吗?这行得通吗?
    crontab*****/path/to/script
    ?酷,现在就试试。谢谢。:)当我尝试
    crontab 0****/path/to/script
    时,我得到了
    crontab:0:没有这样的文件或目录
    ,这是不推荐使用的语法吗?@BigMoney您想先运行crontab-e,以便为crontab文件获得一个很好的编辑窗口。
    import datetime
    import time
    mytime= datetime.datetime.now()
    currenttime= str(datetime.datetime.time(mytime))
    currenttime = currenttime.split(':')
    data = list(currenttime)
    data[0] = str(int(data[0])+1) # [0] is the first part of 00:00:00, and +1 is the sum for the hour part
    print data
    print currenttime
    while True:
        mytime= datetime.datetime.now()
        currenttime= str(datetime.datetime.time(mytime))
        currenttime = currenttime.split(':')
        # Note: if want test code, delete the while and time.sleep()
        time.sleep(5)
        if data==currenttime:
            exit(0)