🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
cron

cronは、Unix系OS上でデーモンプロセスとして動作する、スクリプトの自動実行が可能なジョブスケジューラです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

1735閲覧

cronのpathを複数指定したい

TK_T

総合スコア6

cron

cronは、Unix系OS上でデーモンプロセスとして動作する、スクリプトの自動実行が可能なジョブスケジューラです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/03/16 01:11

macでcronを使用してpythonを動かしています。

現状

test.pyというパイソンファイルに

from selenium import webdriver driver = webdriver.Chrome() driver.get('https:google.com')

と記載し、crontabに

PATH=/usr/bin:/bin:/usr/local/bin/chromedriver */1 * * * * /Users/XXXXX/.pyenv/shims/python ~/python/test.py

と記載すると実行されます。

質問

pythonの実行を

/Users/XXXXX/.pyenv/shims/python ~/python/test.py

ではなく

python ~/python/test.py

と通常のターミナルと同じ記述で行いたいのですが、crontabの文頭にPATHを複数設定することは可能なのでしょうか。
試しに

PATH=/usr/bin:/bin:/usr/local/bin/chromedriver PATH=/Users/XXXXX/.pyenv/shims/python */1 * * * * python ~/python/test.py

とcrontabに記載してみましたが動きませんでした。
もし解決方法があればご指摘頂けますと幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

PATH=の後は、コマンド検索パスに登録するディレクトリを、:区切りで複数並べて記載します。

つまり、/Users/XXXXX/.pyenv/shims/pythonをディレクトリなしのpythonだけで実行したいのであれば、そのディレクトリ部分の/Users/XXXXX/.pyenv/shimsを、PATH=で設定する値の先頭に追加すればいいのです。

PATH=/Users/XXXXX/.pyenv/shims:/usr/bin:/bin:/usr/local/bin/chromedriver

末尾ではなく先頭に追加する理由は、同名のpythonコマンドが/usr/bin/binなどに存在する場合に、そちらが起動されることを防ぐためです。

投稿2021/03/16 01:17

編集2021/03/16 01:18
Daregada

総合スコア11990

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

TK_T

2021/03/16 04:29

ありがとうございます! そもそも PATH=/usr/bin:/bin:/usr/local/bin/chromedriver 自体が /usr/binと/binと/usr/local/bin/chromedriverの3つのパスを記載していたのですね。 理解できました。ありがとうございます。 先頭に追加する理由もありがとうございました。スッキリしました。 とすると、chromedriverのパスも前の方がよく、 PATH=/Users/XXXXX/.pyenv/shims:/usr/bin:/bin:/usr/local/bin/chromedriver も PATH=/Users/XXXXX/.pyenv/shims:/usr/local/bin/chromedriver:/usr/bin:/bin の方が良いのでしょうか?
Daregada

2021/03/16 07:04

前の質問を見ている人にしかわかりませんが、chromedriverの実行ファイルが/usr/binと/binに存在せずにエラーになっていましたよね。 ですから、末尾に追加しても問題ありません。
TK_T

2021/03/17 01:42

ありがとうございます。 更に無知な質問で申し訳ないのですが、一般的には狭い範囲から順番に前に書いていった方が良いのでしょうか? 今回は/usr/binにも/binにもchromedriverがないのでどちらでもいいかと思うのですが、 一般的な記述としてはpythonのパスのように前に付けておいたほうが安全、という事はありますでしょうか。 PATH=/Users/XXXXX/.pyenv/shims:/usr/local/bin/chromedriver:/usr/bin:/bin
Daregada

2021/03/17 02:12

一般的には「同名のコマンドが存在する場合に優先順位の高いパスを前に書く」です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問