Розташування файлу crontab


53

Як і багато (більшість?) інших, я редагую свій crontab via crontab -e, де я зберігаю всі рутинні операції, такі як покрокове резервне копіювання, ntpdate, різні операції rsync, а також роблячи моє фонове Різдво тематичним раз на рік. З того, що я зрозумів, щойно в новому встановленні або новому користувачеві, це також автоматично створює файл, якщо його не існує. Однак я хочу скопіювати цей файл іншому користувачеві, тож де власне файл, який я редагую?

Якщо це залежить від дистрибутива, я використовую Centos5 та Mint 17


15
+1 лише для створення різдвяних фонових різдвяних тем на робочий стіл
Целада,

5
@Celada Це може бути нечасто, але все-таки це звичайне завдання.
Ярмунд

Відповіді:


54

Розташування cronфайлів для окремих користувачів є /var/spool/cron/crontabs/.
Від man crontab:

Кожен користувач може мати власний crontab, і хоча це файли /var/spool/cron/crontabs, вони не призначені для редагування безпосередньо.


7
Ключові слова там "вони не призначені для редагування безпосередньо", тому ця відповідь є неповною без команди Селада нижче, що забезпечує більш безпечну відповідь на питання "копіювати іншому користувачеві". Якщо у людей з'являється звичка безпосередньо редагувати кронштейни, не надсилаючи їх через команду crontab, вони відмовляються від безлічі перевірок, передбачених командою.
Monty Harder

@MontyHarder Я погоджуюсь, що "вони не призначені для редагування безпосередньо", але що робити, якщо в цьому є потреба, як-от є потреба зробити запис у crontab через bash-скрипт. Ви повинні використовувати точний файл, я не думаю, що жоден зовнішній інтерфейс не допоможе в цьому випадку, виправте мене, якщо я помиляюся.
Прабхат Кумар Сінгх

@PrabhatKumarSingh Ви все одно не повинні безпосередньо редагувати файл. Якщо ви прочитали команду Селада нижче, ви побачили приклад того, як сценарій може маніпулювати файлом crontab, не редагуючи його безпосередньо. man crontabпояснює, як це працює.
Monty Harder

34

heemayl вірно стосується розташування файлів crontab в Linux, але це може бути інакше в інших операційних системах, і "теоретично" також може бути в іншому місці в Linux. По суті, коли для доступу до файлів надається спеціальний інтерфейс, слід використовувати його. Це забезпечить cronможливість перевірки файлів перед їх встановленням, переконайтеся, що файли мають дозволи, необхідні їм, тощо.

Тому вам слід скопіювати кронтаб від одного користувача до іншого, використовуючи такий інтерфейс, як цей, а не прямий доступ до файлів.

crontab -u <user1> -l | crontab -u <user2>

3
Є багато вагомих причин, через які файлами crontab не слід безпосередньо маніпулювати чим-небудь, крім самої ОС. Це набагато краще рішення. Я дійсно думаю, що це потрібно включити до офіційної відповіді.
Monty Harder

@MontyHarder Не існує насправді "офіційної" відповіді. Є відповідь, яку людина, що запитувала, обрала як особисту корисну для нього (та, яка має галочку), і відповідь, яку вибрала громада (з найбільшою кількістю відгуків). Якщо коротко, у вас є 15 представників, ви можете припустити, що це правильна відповідь, відхиливши її. Крім того, якщо ви хочете запропонувати вдосконалити іншу відповідь, вам потрібно прокоментувати цю відповідь, інакше її автор не буде повідомлений про ваш коментар.
дероберт

2
Наслідком цієї відповіді є те, що слід перенаправляти вихід crontab -lдо файлу, переміщувати файл в іншу систему та передавати на нього crontab. А може навіть зробити це безпосередньо ( crontab -l | ssh $remote_host crontab).
Blacklight Shining

6
"Коли для доступу до файлів надається спеціальний інтерфейс, слід використовувати його." Уявіть, що кожна програма надала спеціальний інтерфейс для редагування конфігураційних файлів, а не просто експонування їх через fs. Це було б цілком роздратування, щоб слідкувати за цим.
Вітіко

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