Мне нужно запускать сценарий ежедневно. Сценарий должен запускаться от имени определенного пользователя (например, user1), а не от имени пользователя root. Поэтому я поместил файл cron в /etc/cron.d и поместил имя пользователя в строку (2-й столбец). Но выдает ошибку, говорящую, что команда не найдена. Я подозреваю, что скрипт не был запущен как среда пользователя user1. Я что-то пропустил?
19
Ответы:
Только
/etc/crontab
файлы/etc/cron.d/
имеют поле имени пользователя. В этом файле вы можете сделать это:Из корневого каталога
sudo crontab -e
вы можете использовать:Или вы можете использовать действительный пользовательский crontab следующим образом:
Второй столбец в любом кронтабе файла в течение часа , что вы хотите получить эту работу , чтобы запустить в. Вы имели в виду шестое поле?
источник
/etc/cron.d/
файлы являются частью/etc/crontab
.sudo
тоже бессмысленно. Я удалю эту часть.sudo su...
обычно не требуется ;sudo -u <user> <command>
обычно достаточно. (b) sudo может захлебнуться в некоторых системах, если не подключен TTY (например, при запуске cron). Это можно исправить в вашем файле sudoers.Возможно, вам потребуется установить PATH для этого пользователя, если используемый вами исполняемый файл находится, скажем, в / usr / local / bin. Чтобы установить PATH, поместите что-то вроде этого перед cronjobs:
Другой способ - полностью указать путь к sample_executable в вашем cronjob, поэтому:
Если sample_executable ссылается на исполняемые файлы, не входящие в стандартную переменную PATH, вам следует использовать первый вариант.
источник
Типичный каталог для пользовательских crontabs находится в / var / spool / cron / crontabs. Формат файла тот, который не включает имя пользователя. Пользовательские crontabs принадлежат пользователю и названы в честь пользователя в режиме 0600. Лучше всего это сделать, написав файл вкладок и используя его
crontab -u username filename
для установки любых записей cron, которые вы хотите для этого пользователя.источник