Cron Tab как определенный пользователь и виртуальная среда Python

Cron Tab как определенный пользователь и виртуальная среда Python

Хочу запустить ежечасное задание cron как определенный пользователь (xfeautomation) и виртуальную среду python. Запуская как определенный пользователь, мне придется добавить расположение скрипта в PATH? Мое текущее задание cron выглядит так:

0 * * * *  xfeautomation /opt/scripts/wf_venv/bin/python /opt/scripts/wf_api_linux.py 2>&l /opt/scripts/log.txt

Это правильный или оптимальный путь? TIA

решение1

переключиться на этого пользователя.

sudo su - xfeautomation

Бегать

crontab -e

Появится редактор файлов с пустым файлом. Добавьте туда свою работу без имени пользователя и сохраните ее.

0 * * * * /opt/scripts/wf_venv/bin/python /opt/scripts/wf_api_linux.py 2>&l /opt/scripts/log.txt

Проверка:

sudo su - xfeautomation crontab -l

ИЛИ

sudo crontab -u xfeautomation

решение2

При запуске от имени определенного пользователя мне придется добавлять местоположение скрипта в PATH?

Обычно вам не нужно изменять переменную среды PATH, когда вы используете абсолютные пути, как вы делаете сейчас с помощью/opt/scripts/wf_venv/bin/python /opt/scripts/wf_api_linux.py 2>&l /opt/scripts/log.txt

Как системный администратор вы можете создавать запланированные пакетные задания, которые будут запускаться под другим идентификатором пользователя:

  1. Как объяснено вэтот ответ:настроить персональный crontab для этого пользователя. Задания в личном crontab всегда будут выполняться под идентификатором пользователя их владельца.
    Обратите внимание, что когда вы как администратор настраиваете личный crontab для другого пользователя, этот пользователь сможет изменять и удалять эту спецификацию задания cron, отменяя вашу работу.

  2. В качестве альтернативы вы можетезапланировать системное задание из системного crontab. Системный crontab (обычно /etc/crontabи/или файлы drop-in в /etc/cron.d/) принадлежит пользователю root и не может быть изменен непривилегированными пользователями. Спецификация задания в системном crontab поддерживает дополнительное поле, отсутствующее в файлах personal crontab: в поле № 6 необходимо имя пользователя, например xfeautomationидентификатор пользователя, который будет использоваться для выполнения задания.
    Синтаксис, который вы разместили, верен для записи в /etc/crontabили файла drop-in, например/etc/cron.d/wf_api_linux

    0 * * * *  xfeautomation /opt/scripts/wf_venv/bin/python /opt/scripts/wf_api_linux.py 2>&l /opt/scripts/log.txt
    

Так как вы регистрируете все выходные данные и ошибки, это не проблема, но обычно cron отправляет стандартный вывод и ошибки пользователю root при настройке системного crontab и напрямую пользователю при использовании персонального crontab.

Насколько мне известно, по сути оба метода приводят к одинаковым условиям работы, и, за исключением вопросов, связанных с правом собственности на спецификацию работы и электронные письма, они эквивалентны.

Связанный контент