crontabが動かなくてガチでイライラしてるんだが
■ このスレッドは過去ログ倉庫に格納されています
コマンドライン上では動くが
crontabに書くとCould not open input fileとなります
教えて下さい
権限周りの問題かと思ってるんですが何一つわかりません カレントディレクトリの問題じゃね
とにかく全部フルパスで指定してみ >>2
はい、全部フルパスで指定しています。
僕が全然理解してない部分は、crontabの所有者権限?みたいな話なのでおそらくそこかなとは思ってるんですが何一つわかりません 一応、コマンドラインではどこのディレクトリからでも動くようなコマンドになってます。 それユーザ間違ってない?
それかcrontabのファイルがないか
もしくはcrontabで実行するコマンドのエラーか ユーザーを指定みたいなプロセスを一切取ってないので全く理解が追いついてません
crontab -eで書き込みました
ログを吐き出すようにしてるので一応毎分ログは更新されてるんですが
とにかく、phpファイルを開けてないようです 開くphpファイルは777にしてます。
となるとcrontabの所有者権限(???)ということになるのでしょうか >>6
どのユーザー、というのがよくわからず、確認方法もよく分からないのですが
一応、自分の名前のユーザでcrontab -lで出てくるので
自分の名前ってことになるのですかね。
(rootではないということ) くーろんのインストールディレクトリみにいこ
rwxr-xr-xでそ? crontab -u <user>で指定したユーザのcrontabを変更できる
現在のユーザはroot?一般ユーザ? >>13
なるほど! -u は変更コマンドだったのですか。
現在は一般ユーザです。
設定するにあたって一度もユーザ変更してません。 >>11
それじゃあsudo crontab -u rootで編集できる? >>15
つまり、rootにする必要があるってことですか?
やってみます sudo crontab -u rootやったあとにパスワード入れてOKおしたらカーソルがよく分からない位置に移動するんですがこれはなんなんでしょうか。
ctrl+cで戻りますが
反映されていない? ちな、上記で変更した後も一般ユーザでcrontab -lで出てくるので
変更されてないでしょうか。 sudo crontab -u root
だけでOKなのですか?
その後にパラメータを指定しなくていいですか。 まだ解決してないのか
とりあえず打ったコマンドと出力を貼るんだ >>25
コマンド一行だけなので、改行してません、、 ちなみに文字列をエコーするコマンドなんですか
ちゃんと動いてたらターミナルに出るんですか?
一応エラーログが出るように書いてて、それが毎分「couldn't open〜」なので
動いてはいるはず >>28
こちらです。
* * * * * /usr/bin/php -q /Users/namae/Desktop/follower/twitter-followers-id/top.php > /tmp/tempra.log 2>&1 とりあえずchmod 777は意味ないからchmod 755にしておこう
原因わからんまじで あと、テンプラログとtop.phpのパーミッションも 天ぷらログはディレクトリ的にパーミッションは大丈夫じゃね top.phpの中で読み込んでるファイルの権限がないとかね テンプラログの中身は
Could not open input file: /Users/namae/Desktop/follower/twitter-followers-id/top.php
です。
top.phpのパーミッションは、777です。 top.phpの上位フォルダのパーミッションかなー
followerにchmod -R 755かけたらどうなる? top.phpは文字列をエコーするだけのファイルです。 >>38
やってみましたが、前後でls-laで確認すると特にパーミッションに影響なさそうですね、、 上の書き込みだと、
ls -l /User/中略/top.php
ってやってもダメってこと? crontabで* * * * * echo test
は動く? とりあえず全部分解だ
crontabの中身を
*** ls /User > /temp/tempra1.log
*** ls /User/namae > /temp/tempra2.log
って感じで全部確認してみたら >>42
やってみました。まさかの、動かないですねw
ターミナルの問題か? >>41
最初からフルパーミッションがあった、ということです。
755に変更しても
drwx〜みたいな文字列に変化がありませんでした。 crontab -eで書き込んで:wqで保存する際に、iTermからポップアップが出るのですが
ここでOK押してもターミナルがコンピュータを制御できていない? >>46
>>42のまま登録してない?
リダイレクトさせないと動いたかどうかわからんのでは? >>50
すいません、リダイレクトとはどういうことでしょうか?
僕の思い込みかもしれませんが
この内容でセットしたら
1分ごとにターミナルに「test」って表示されるもんだと思ってるんですが 要するに>〜でログに吐き出すことをリダイレクトって言ってますか? あ、今ググったら出てきました。リダイレクトの意味。
(>)のことだったんですね。
改めてやってみます >>51
> ←これがリダイレクト
crontabさんが実行した標準出力はcrontabさんしか拾えないと思うよ
コマンドライン2窓出して片方にecho testして両方のコマンドラインにtestって出ないでしょ?
>1分ごとにターミナルに「test」って表示されるもんだと思ってるんですが
は叩いてない方の窓でtestが出ることを期待してる >
crontabさんが実行した標準出力はcrontabさんしか拾えないと思うよ
コマンドライン2窓出して片方にecho testして両方のコマンドラインにtestって出ないでしょ?
ありがとうございます!!!なんとなく見えてきました。
crontabって名前にもあるように、別のタブが存在する、みたいなイメージなんですね。 なるほど、そう考えるとitermからのポップアップがでるのは、リダイレクトを含むコマンドを書いた時だけでした。 おお、ログファイルに'test'を出力することはできました! /tmpにtop.php置いて
* * * * * /usr/bin/php -q /tmp/top.php > /tmp/tempra.log 2>&1
してみたらどう? >>58
まさしく今それを試したとこでした。
tmpにphpファイル置いて文字列エコーもできたので
php自体は動かせてるということがわかりました! ls-laをやった時に
所有者の隣に出る文字列が
tmpフォルダの中のやつはwheelで
twitter-followers-id/のやつはstaffなんですが
これは関係ありそうでしょうか? じゃあ
/Users/namae/Desktop/follower/twitter-followers-id/
のパスがcrontabだと解決出来ないんだろうね
パスがWindowsチックに見えるんだけどcドラとかの指定がいるとか要るんかね
/c/Users~とか 今調べてたらこんなのが出てきたんですけどこれが本質ですかね。
https://qiita.com/miyamotok0105/items/a1427895a1cf188e8f89
絶対パス指定する前に環境変数をうんたらかんたらしないといけないみたいな。 絶対パスで指定されてるから
>>44
これ試してみて
どこかがおかしいんだろうから >>66
いいんだよ
指摘に対してどれだけ変な回答して伸ばすかってスレなんだから crontabの中身ってvscodeとかで触れないですか?
全部vimでやるのは面倒でして。 Desktopのパーミッションがdrwx------@
なんですがこれが原因ですかね?
Desktopと同じ階層では動きました キターーーッ!
Desktopの中に入れた途端にcouldn't openになりました。
やはりデスクトップのパーミッションだったようです >>65
/namae
でlsは出力できましたが
/namae/Desktopにした途端に
lsが
operation not permittedと出ました。
これおかしいですよね? おっと、Desktopだけじゃなくて、同じ階層のDocumentsフォルダもlsが許されませんでした。
おかしいですね。 いえ、どのパスからがおかしいかを突き止めただけで、かいけつはしてません。 ようやく解決しました😂😂
https://qiita.com/yumenomatayume/items/7fd6286bfb79acb222de
フルディスクアクセスで
/usr/sbin/cron
を追加しないといけなかったようです。
これでnamaeは以下のフォルダにもアクセスできました
むずすぎだろ。 皆さんのおかげでcrontabへの理解が深まりました
本当にありがとうございました。
感謝いたします ■ このスレッドは過去ログ倉庫に格納されています