Як запустити роботу cron як конкретного користувача?


66

Я хотів би виконати роботу cron як конкретного користувача на своїй машині. Як я можу вказати користувача для виконання завдання cron як ?.

Завдання cron працюватимуть на сервері (працює на Ubuntu 10.0.4). "Користувачі" - це користувачі, створені спеціально для виконання конкретних завдань на сервері. Ці "користувачі" мають спільне:

  • Не вдається увійти в систему
  • Обмежений доступ до певних папок / файлів

Відповіді:


79

Припустимо, що ви не можете просто увійти та додати його до crontab цього користувача, введіть файл /etc/cron.d. Він повинен бути відформатований як звичайна робота, але з додатковим полем. Перед командою для запуску та після закінчення часу встановіть користувача. Ви повинні мати можливість знайти приклади, які вже є у вашій системі.

Приклад:

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

Я думаю, що це правильна відповідь. Мені доведеться шукати кілька прикладів і ще кілька досліджувати.
морфний

2
Плюс один від мене, це найкращий спосіб робити те, що ти хочеш. Точніше загляньте у файл / etc / crontab, і ви побачите, що після шаблону часу та перед командою там написаний "root". Це означає, що "root" виконує ці команди. Просто додайте власний графік і замість "root" використовуйте будь-якого користувача. Також зауважте, що якщо ви користуєтеся кронтабками для користувача (як це запропонував Ерік Д), ви можете втратити функціональність системного crontab (/ etc / crontab та /etc/cron.d).
Паткос Чаба

3
Я вважаю, що crontab -u <user> -eнайкращим рішенням буде просто зберегти все в одному місці, що можна зробити як root. Мені подобається групувати свої завдання cron за функціями, хоча, а не просто за користувачем, тому це найкраще рішення для мене.
Стюарт Н

41

Як root, щоб відредагувати cron user1:

crontab -u user1 -e

Ви також можете розпочати свою команду з:

su user1 -c foo bar

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


1

Я шукав це пару тижнів, і це, нарешті, спрацювало ...

Створіть свій сценарій як user1

ssh user1@ipaddress
nano hourly-event.sh

введіть якусь команду

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

зробити його виконуваним

chmod 755 hourly-event.sh

редагуйте crontab для користувача1

sudo crontab -u user1 -e

покладіть рядок у нижній частині, що вказує на ваш сценарій

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

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

чекайте черги хвилини

відкрийте щойно створений yay.txt

nano /home/user1/yay.txt

тепер у вас буде відкрите нано-вікно з "YAY, це працює" як перший і єдиний рядок, якщо внизу вашого нано-вікна сказати Новий файл ... ну .. я не знаю

ви також можете перевірити ваш нещодавно записаний запис crontab для user1 за адресою: / var / spool / cron / crontabs / user1

МИР


0

Іноді, можливо, ви хочете, щоб користувач завантажував своє оточення, особливо при використанні "rbenv", "nvm", саме так:

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

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.