LoginSignup
1
2

【cron】Pythonスクリプト(selenium)を定期実行したい...のに動かない??

Posted at

目次

目的
結論
crontabって?
設定してみると...

目的

先日、cronでseleniumを用いたPythonのスクリプトを定期実行したかったのですが、なかなか沼にハマったため手順を少しまとめておきます。

結論

DISPLAYを記述してあげましょう。

crontabって?

簡単にいうとUNIX系のOSで使える、定期実行のための便利なコマンドです。

crontab -e コマンドで設定できます。

$ crontab -e

この辺の操作は調べたらいくらでも出てくると思うので割愛します。

設定してみると...

適当にPythonのスクリプトを書いて設定してみます。

import datetime
now = datetime.datetime.now()
date_string = now.strftime("%Y-%m-%d %H:%M:%S")
print(date_string)
* * * * * /usr/bin/python /home/test/Desktop/test.py >> /home/test/cron.log 2>&1

動くかと思いきや、、、動きません。
どうやらcrontabにはパスをちゃんと書いてあげる必要があるようです。

$ echo $PATH
/usr/local/sbin:...

これを書いてあげます。

PATH=/usr/local/sbin:...
* * * * * /usr/bin/python /home/test/Desktop/test.py >> /home/test/cron.log 2>&1

するとちゃんと動きました!
必要そうな環境変数はちゃんと渡してあげたほうがいいですね。

seleniumを用いたスクリプトを設定してみる

ではseleniumを用いたスクリプトを指定してみましょう。
適当にテスト用のスクリプトを用意してみます。

from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager

driver = webdriver.Chrome(ChromeDriverManager().install())
driver.get("https://www.google.com")
driver.quit()

すると、、、、動かない。

うんともすんとも言いません。

色々調べてみると、DISPLAYも書いてあげる必要があるようです。
というのも、環境変数のDISPLAYがブラウザの表示に必要なようです。全然知らなかったです。

調べてみます。

$ env | grep DISPLAY

DISPLAY=:0

ちゃんと書いてみます。

PATH=/usr/local/sbin:...
DISPLAY=:0
* * * * * /usr/bin/python /home/test/Desktop/test.py >> /home/test/cron.log 2>&1

ようやく動きました!!!!!!

というわけで、cronでselenium(に限った話ではないですが)を定期実行したいときはちゃんと環境変数を渡しましょうというお話でした。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2