BASH- создать crontab 'www-data', который запускает файл PHP

Мне нужно, чтобы это запускалось в файле cron в /etc/cron.d/ :

* / 15 * * * * php -f /var/www/nextcloud/cron.php

... но мои скрипты не запускаются. Его разрешения установлены на 644, и мне нужно создать его с помощью сценария Shell / BASH. Я использую:

echo "* / 15 * * * * php -f /var/www/nextcloud/cron.php"> / etc / cron. d / nccron

Что я делаю не так?

-1
задан 23 November 2018 в 19:06
2 ответа

Существует гораздо более простой способ (должен быть выполнен как пользователь root )

echo '* / 15 * * * * www-data php -f / var /www/nextcloud/cron.php '> /etc/cron.d/wwwcron

Я бы использовал ОДИНОЧНЫЕ кавычки, а не ДВОЙНЫЕ кавычки, чтобы предотвратить любую возможность расширения метасимвола' * '.

0
ответ дан 5 December 2019 в 20:19
  1. Чтобы запустить задание PHP cron, www-data необходимо выполнить задание crontab, используя php -f как [пользователь] внутри строка cronjob:

* / 15 * * * * php -f /var/www/nextcloud/cron.php

(Это инструкции Nextcloud. Они все правильно поняли, не пытайтесь взломать это, в в моем случае.)

  1. www-data должен запускать само задание cron как crontab (не /etc/cron.d и др.)

Обычно это настраивается из терминал:

Запуск от имени root в этом примере ...

crontab -u www-data -e ... добавить строку cronjob (см. выше).

crontab -u www-data -l ... и он должен совпадать.

Но мне нужно, чтобы это было сделано как сценарий, а не crontab -e в терминале.

  1. Сделайте это. через shellscript (опасность?):

задания crontab находятся в: / var / spool / cron / crontabs / USER

с разрешениями: -rw ------- ... www -data crontab

Сценарий, который работал:

Запуск от имени root в t его пример ...

echo "*/15 * * * * php -f /var/www/nextcloud/cron.php" >> /var/spool/cron/crontabs/www-data
chown www-data:crontab /var/spool/cron/crontabs/www-data
chmod 600 /var/spool/cron/crontabs/www-data

О, счастливого дня!

0
ответ дан 5 December 2019 в 20:19

Теги

Похожие вопросы