Как программно запустить службу cron на веб-сервере? - PullRequest
0 голосов
/ 23 апреля 2020

Я застрял на этом некоторое время, и это новая территория для меня, поэтому мне нужна помощь. Я работаю над проектом, в котором создается служба cron, когда пользователь создается с помощью веб-приложения. Тем не менее, я сталкиваюсь с проблемами при запуске службы cron. Вот что я пробовал

1) Создание службы cron с использованием

crontab -l | { cat; echo "'comand'"; } | crontab -

Это создает хорошую работу. Тем не менее, он создает его с www-data в качестве пользователя, и те не показывают, чтобы выполнить.

Я должен упомянуть, что я устанавливаю путь к

PATH=/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin

, поскольку я запускаю сценарий python, который я выполнил с помощью chmod +x, и помещаю соответствующие заголовки, чтобы убедиться, что он работает правильно (что он делает). Кроме того, все пути являются полными путями. Чтобы быть более понятным, вот фактическая команда, которую я использую внутри crontab

*/10 * * * * /home/user/path-to script/script.py --user_id 1 --db_file /home/user/path-to-file/file.db

Однако скрипт никогда не запускается.

2) Создание файла в /etc/cron.d , но из моего тестирования я понял, что это работает, только если файл создан как пользователь root, который, поскольку пользователь, создающий файл, имеет значение www-data, задание снова не будет выполняться.

для справки, я делаю это так:

*/10 * * * * user /home/user/path-to script/script.py --user_id 1 --db_file /home/user/path-to-file/file.db

Что повторяет шаги 2 и 3, используя пользователя, который входит в группу sudo или является пользователем root. Это говорит мне, что мне нужно создать задание cron, используя одного из этих двух пользователей, но я не уверен, как это сделать программно, когда www-data используется для веб-операций.

Другой вариант, который я рассмотрел, - это использование crontab -u user для программного добавления задания пользователю, которого я знаю, работает, но проблема в том, что для этого мне нужен доступ sudo, и я не хочу передать пароль sudo при создании cronjob или сделать что-то, что может быть потенциально опасным (например, устранение необходимости использовать sudo, поскольку я знаю, что это возможно, но, на мой взгляд, это может быть очень плохо, если кто-то получит доступ к учетной записи и, следовательно, имеет повышенные привилегии) ​​

Справка будет очень полезна.

Что касается стека, если он полезен, я использую Ubuntu 18.04.3 (LTS) x64 и Apacahe2

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...