it-swarm-ru.tech

Как запустить задание cron от имени пользователя?

Я хотел бы запустить задание cron в качестве конкретного пользователя на моей машине. Как я могу указать пользователя для задания cron для запуска?.

Задания cron будут выполняться на сервере (на Ubuntu 10.0.4). «Пользователи» - это пользователи, которые были созданы специально для выполнения определенных задач на стороне сервера. Эти «пользователи» имеют следующие общие черты:

  • Невозможно войти в систему
  • Ограниченный доступ к определенным папкам/файлам
64
morpheous

Предполагая, что вы не можете просто войти и добавить его в crontab этого пользователя, поместите файл в /etc/cron.d. Он должен быть отформатирован как обычный cronjob, но с дополнительным полем. Перед выполнением команды и по истечении времени поставьте пользователя. Вы должны быть в состоянии найти примеры уже в вашей системе.

Пример:

#<timing>   <user> <command>
11 * * * *  root   /usr/lib/command
75
Daenyth

От имени пользователя root отредактируйте cron пользователя user1:

crontab -u user1 -e

Вы также можете начать свою команду с:

su user1 -c foo bar

Но часто сценарии сами уменьшают свой доступ при запуске от имени пользователя root.

40
Eric Darchis

Я искал это в течение пары недель, и это, наконец, сработало ...

Создайте свой скрипт как user1

ssh [email protected]
nano hourly-event.sh

введите некоторую команду

#!/bin/bash
echo "YAY it works" > /home/user1/yay.txt

сделать его исполняемым

chmod 755 hourly-event.sh

отредактируйте crontab для user1

Sudo crontab -u user1 -e

поместите строку внизу, указывая на ваш сценарий (ы)

# m h  dom mon dow   command
*   *   *   *   *    bash ./hourly-event.sh

выход - сохранение изменений (при сохранении будет отображаться каталог/tmp ... все в порядке)

подождите минуты

откройте ваш вновь созданный yay.txt

nano /home/user1/yay.txt

теперь у вас должно быть открытое окно nano с надписью «YAY it работает» в качестве первой и единственной строки, если в нижней части окна nano указано «Новый файл ... ну .. я не знаю»

вы также можете проверить новую запись в crontab для user1 по адресу:/var/spool/cron/crontabs/user1

PEACE

1
user220364

Иногда вы можете захотеть, чтобы пользователь загрузил свою среду, особенно при использовании «rbenv», «nvm», вот так:

0 0 * * * source ~/.bash_profile && cd /opt/app/current && bundle exec Ruby ...

(здесь команда source ~/.bash_profile загрузит вам среду Ruby или Node.

0
Siwei Shen 申思维