Я застрял на этом некоторое время, и это новая территория для меня, поэтому мне нужна помощь. Я работаю над проектом, в котором создается служба 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