Мне нужно, чтобы это запускалось в файле 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
Что я делаю не так?
Существует гораздо более простой способ (должен быть выполнен как пользователь root
)
echo '* / 15 * * * * www-data php -f / var /www/nextcloud/cron.php '> /etc/cron.d/wwwcron
Я бы использовал ОДИНОЧНЫЕ кавычки, а не ДВОЙНЫЕ кавычки, чтобы предотвратить любую возможность расширения метасимвола' * '.
www-data
необходимо выполнить задание crontab, используя php -f
как [пользователь] внутри строка cronjob: * / 15 * * * * php -f /var/www/nextcloud/cron.php
(Это инструкции Nextcloud. Они все правильно поняли, не пытайтесь взломать это, в в моем случае.)
www-data
должен запускать само задание cron как crontab (не /etc/cron.d
и др.) Обычно это настраивается из терминал:
Запуск от имени root
в этом примере ...
crontab -u www-data -e
... добавить строку cronjob (см. выше).
crontab -u www-data -l
... и он должен совпадать.
Но мне нужно, чтобы это было сделано как сценарий, а не crontab -e
в терминале.
задания 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
О, счастливого дня!