web-dev-qa-db-ja.com

crontabをuser:www-dataとして実行する方法は?

私のLAMPはuser:www-dataとして動作するように設定されており、すべてのファイルとフォルダーはその権限で作成されます。

Crontabをuser @ ubuntuとしてセットアップしました。

だから私はcrontab -eを行い、このコマンドを使用します:

*/5 * * * * php /var/www/public/voto_m/artisan top >/dev/null 2>&1

基本的に、このコマンドは指定された場所にキャッシュファイルを作成しますが(問題はありません)、そのキャッシュファイルはuser:www-dataパーミッションではなくuser:userパーミッションで作成されます。

デフォルトでuser:www-data権限でファイルを作成するようにするにはどうすればよいですか?
ファイルが再作成されるたびに、chownに移動できません。

ありがとう。

29
arma

システムcrontab /etc/crontabにエントリを書き込むことができます。これは、実行するユーザーを指定する追加の引数を取ります(通常はrootですが、www-dataにすることができます)。

あなたの行は次のようになります:

*/5 * * * * www-data php /var/www/public/voto_m/artisan top >/dev/null 2>&1

または、suを使用して、ユーザーwww-dataのcrontabを編集できます。

Sudo su -c "crontab -e" www-data
37
mivk

-u引数を指定してcrontabを実行し、特定のユーザーのcrontabを編集することもできます。

Sudo crontab -u www-data -e
47
Code Commander

ユーザーwww-dataとしてcrontabを実行するには、次のコマンドを使用できます。

crontab -u www-data -e

次に、たとえば15分ごとにphpファイルを実行する行を記述します。

*/15  *  *  *  * php -f /path_to_cron/cron.php

保存すると、エディターから次のように求められます。

File Name to Write: /tmp/crontab.HMpG7V 

そこに保存してください、心配ありません。 crontab -eは、実際のcrontabではなく/ tmpにファイルを開くため、新しいcrontabでエラーをチェックし、実際のcrontabをそれらのエラーで上書きできないようにします。エラーがなければ、実際のcrontabが更新されます。 crontab -eが実際のcrontabに直接書き込んだ場合、crontab全体が吹き飛ばされる危険があります。

Cronjobが実行されていることを確認するには、cronログを確認できます。通常、/ var/log/cron.logで、または次のコマンドを実行します。

crontab -u www-data -l
3
spacebiker