Мне нужно запускать скрипт ежедневно. Сценарий должен запускаться от имени конкретного пользователя (например, user1), а не от имени пользователя root. Поэтому я помещаю файл cron в /etc/cron.d и помещаю имя пользователя в строку (2-й столбец). Но выдает ошибку о том, что команда не найдена. Я подозреваю, что сценарий не был запущен как среда user1. Я что-то пропустил?
Только /etc/crontab
и файлы в /etc/cron.d/
есть поле для имени пользователя. В этом файле вы можете сделать это:
1 1 * * * username /path/to/your/script.sh
Из корневого crontab sudo crontab -e
ты можешь использовать:
1 1 * * * su username -c "/path/to/your/script.sh"
Или вы можете использовать реальный crontab пользователя следующим образом:
sudo crontab -u username -e
В второй столбец в любом файле crontab указывается час, в который вы хотите запустить задание. Вы имели ввиду шестое поле?
Возможно, вам потребуется установить PATH для этого пользователя, если исполняемый файл, который вы используете, находится, скажем, в / usr / local / bin. Чтобы установить PATH, поставьте перед cronjobs что-то вроде этого:
PATH=/bin:/usr/bin:/usr/local/bin
*/5 * * * * user1 sample_executable
Другой способ - полностью указать путь к sample_executable в задании cron, поэтому:
*/5 * * * * user1 /path/to/sample_executable
Если sample_executable ссылается на исполняемые файлы не в стандартном PATH, вы должны использовать первый вариант.
Типичный каталог для пользовательских crontabs находится в / var / spool / cron / crontabs. Формат файла - это тот, который не включает имя пользователя. Пользовательские crontab принадлежат пользователю и названы в честь пользователя с режимом 0600. Для этого лучше всего написать файл вкладки и использовать crontab -u username filename
для настройки любых записей cron для этого пользователя.