【问题标题】:How to make a bash file to run a python script every 2 hours? [closed]如何使 bash 文件每 2 小时运行一次 python 脚本? [关闭]
【发布时间】:2020-08-25 21:54:57
【问题描述】:

我在虚拟环境中有一个 python 脚本,我想使用 cronjob 每 2 小时运行一次

这是我的 python 脚本:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time



PATH = "/usr/bin/chromedriver"

driver = webdriver.Chrome(PATH)



driver.get("http://bitcoin.works")
driver.maximize_window()
time.sleep(2)
driver.find_element_by_link_text('LOGIN').click()
time.sleep(3)
driver.find_element_by_id("login_form_btc_address").send_keys("MyEmail")
driver.find_element_by_id("login_form_password").send_keys("securePassword")
driver.find_element_by_id("login_button").click()
time.sleep(4)
driver.find_element_by_class_name("pushpad_deny_button").click()
time.sleep(7)
driver.find_element_by_id("free_play_form_button").click()
time.sleep(3)

driver.quit()

我还在我的文件夹中创建了一个名为 run.sh 的文件

有以下内容

#!/bin/sh

python run.py

我比没有

chmod a+x run.sh

之后我在 crontab -e 下编辑了我的文件

到这里

0 */2 * * *  cd Documents/scraping && /bin/bash/ run.sh

为什么我需要 cd Documents/scraping && /bin/bash/run.sh 行?

【问题讨论】:

    标签: python linux cron cron-task


    【解决方案1】:

    在 cronjob 中尝试以下命令

    0 */2 * * *   /bin/bash/ ~/Documents/scrapping/run.sh
    

    我认为这可能会有所帮助

    【讨论】:

      【解决方案2】:

      您可以将此行添加到您的 crontab 中:

      0 */2 * * *  python <path>/run.py
      

      您可以通过以下方式做到这一点:

      crontab -e
      

      【讨论】:

      • 为什么我需要包含 ?我能不能只做 0 */2 * * * python run.py
      • crontab 是一个系统级实用程序。它需要知道您的文件所在的位置。
      • 但是 python Documents/scraping/run.py 不起作用
      【解决方案3】:

      确保您的 bash 脚本具有可执行权限:

      chmod +x run.sh
      

      输入crontab -e

      然后键入以下命令:

      0 */2 * * * cd /location/of/folder && /bin/bash run.sh
      # Dont forget to leave a blank line at the end of the file
      

      将目录更改为文件所在的位置很重要,因为run.sh 中的命令不是绝对路径。

      【讨论】:

      • 我的python文件没有保存在/bin/bash-我的python文件在Documents/scrapping/run.py中
      • 我认为我需要运行 .sh 文件?
      • @charliebrown:我后来意识到你有run.pyrun.sh。试试我上面提到的步骤:)
      • 在 crontab -e 我把这一行放在 0 */2 * * * cd Documents/scrapping && /bin/bash/ run.sh 这足以让它运行吗?我的 sh 文件正确吗?
      • 您可以通过简单地从终端执行来验证您的run.sh 是否正确执行。进入你的终端,将你的目录更改为run.sh 的位置,然后输入./run.sh,如果这有效,那么你的 cronjob 应该可以正常执行。