質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.35%
cron

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

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

Python

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

Q&A

解決済

2回答

2165閲覧

crontabでpython osモジュールでのmkdirができない

momokoko

総合スコア38

cron

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

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

Python

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

0グッド

0クリップ

投稿2020/06/15 13:35

編集2020/06/15 13:40

タイトル通りですが、目的のフォルダでフォルダ作成ができないです。
下記のdebag.pyがフォルダが作成されないコードです。

$ cat debag.py #!/usr/bin/env python3 import os os.mkdir("/Users/apple/Desktop/koko/momo")
$ crontab -l */1 * * * * /Users/apple/tomtools/debag.py
$ ls -d $PWD/debag.py /Users/apple/tomtools/debag.py

crontabではなく実行ファイルをそのまま実行すると想定どおりに動きます。

$ debag.py
$ ls ~/Desktop/koko momo

過去の質問でもcrontabについて質問させていただきましたが、それを参考にしても解決には至りませんでした。
ご教授頂けたら嬉しいです。

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2020/06/15 18:40

envコマンドは使わず直接/usr/bin/python3とか使いたいPythonのインタプリタを指定するのが良いでしょう。envは諸刃の剣です。
guest

回答2

0

可能性を一つずつ潰すのが良いです。

  1. スクリプトに問題がある
  2. crontabに問題がある

最初にスクリプトに問題がある可能性を考えます。

terminal

1$ debag.py

と書かれていますがcrontabと同じように「フルパス」で起動するのが良いでしょう。

terminal

1$ /Users/apple/tomtools/debag.py

この理由はこのパス以外にdebag.pyが存在し、そちらが呼ばれている可能性があるためです。
フルパスにして問題なく実行できる場合crontabに問題があると考えるのが良いでしょう。

通常にログインした場合とcrontabから起動された場合で挙動が異なる場合、最初に環境変数が異なることを疑って下さい。.bashrcもしくは.bash_profileが読み込まれていないためです。対処方法としては読み込むように

shell

1*/1 * * * * source /Users/apple/.bashrc;/Users/apple/tomtools/debag.py

とする必要があります。

なおmacはcronからメールが来ますのでmailコマンドで確認できます。Linuxなら/var/log以下を確認して下さい。

投稿2020/06/15 14:11

yymmt

総合スコア1615

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

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

yymmt

2020/06/15 14:18

python3が見つかっていないのでPATH設定に問題があります。macOSなら.bash_profile、Linuxなら.bashrcに記述されていることが多いです。回答文中にある source を追記するようにしてみて下さい。.bashrcにするか.bash_profileにするかはどちらに設定が記述されているかによります。
momokoko

2020/06/16 07:59

ありがとうございます! ぼくの環境の場合、 echo PATH=$PATH した結果をコピペで、crontabの先頭に貼り付けたら動くようになりました。 ありがとうございました。
guest

0

ベストアンサー

とりあえず、エラーが出てないか見ましょう。
Macって、エラーメールが飛んでこないのでしょうかね。

crontab

1*/1 * * * * /Users/apple/tomtools/debag.py 2>/tmp/error.txt

投稿2020/06/15 13:55

otn

総合スコア85901

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

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

momokoko

2020/06/15 14:16

ご回答ありがとうございます! cat /tmp/error.txt env: python3: No such file or directory このようなエラーが出ました。
otn

2020/06/15 14:20 編集

では、python3にパスが通ってません。 案1: type python3 で pytho3のフルパスを調べ、それをコピペで、スクリプトの1行目を #!pytho3のフルパス に変える。 案2: echo PATH=$PATH した結果をコピペで、crontabの先頭に、 PATH=/~~~~ と書く。
momokoko

2020/06/16 07:56

案2で無事動くことが確認できました! ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問