Czy mam zapisać plik crontab w / tmp?

11

Przesyłam ssh do serwera i chcę dodać kilka codziennych zadań (szczególnie w celu odnowienia biletów Kerberos, nawet gdy się wyloguję i nadal chcę, aby moje programy na ekranie lub tmux nadal działały) do crona. Więc uruchamiam crontab -ei dodaję następujące,

00 00 * * * kinit -R
00 12 * * * kinit -R

Kiedy go zapisuję, redaktor pyta mnie:

File Name to Write: /tmp/crontab.HMpG7V 

Czy nie jest tak, że pliki w /tmpsystemie mogą zostać usunięte przez system operacyjny? Zwłaszcza po wylogowaniu z serwera?

Gdzie mam przechowywać plik crontab? Czy mogę zapisać plik crontab pod $ HOME lub w innym miejscu?

Tim
źródło
Czy mogę zapisać plik crontab pod $ HOME? Dlaczego potrzebuję dowiązania symbolicznego?
Tim

Odpowiedzi:

15

crontab -eotwiera plik w / tmp zamiast rzeczywistego pliku crontab, aby mógł sprawdzić, czy w nowym pliku crontab nie ma błędów, i zapobiec nadpisaniu pliku crontab tymi błędami. Jeśli nie ma żadnych błędów, twój aktualny plik crontab zostanie zaktualizowany. Gdyby crontab -epo prostu napisał prosto do twojego pliku crontab, ryzykowałbyś, że wszystkie cronjoby nie uruchomią się z powodu błędu składniowego w nowym pliku crontab.

sudoedit, visudo, vipw, Itd. Działają na tej samej zasadzie.

Nie martw się, twój prawdziwy crontab żyje w nieulotnej lokalizacji na dysku.

jayhendren
źródło
gdzie ostatecznie jest przechowywany mój plik crontab? Jeśli wyloguję się z serwera, co stanie się z moim plikiem crontab? (Nie jestem administratorem i nie mam uprawnień roota do serwera)
Tim
1
twój prawdziwy crontab mieszka gdzieś w /var/spool(zwykle), ale nigdy nie powinieneś dotykać twojego prawdziwego crontab i nigdy nie powinieneś tego robić - crontab -ezamiast tego użyj . Prawdopodobnie nie masz odpowiedniego poziomu dostępu do edycji surowego pliku crontab.
jayhendren
jeśli się wylogujesz, nic nie stanie się z twoim crontabem. nie mieszka w / tmp.
jayhendren
(1) Czy plik crontab jest przeznaczony dla pojedynczego użytkownika czy dla wszystkich użytkowników? (2) Jak mogę sprawdzić, czy moja edycja pliku crontab działa?
Tim
crontabs są na użytkownika. aby sprawdzić, czy działa cronjob, możesz sprawdzić dzienniki cron. zazwyczaj w /var/log/cron.log, ale mogą to być również inne lokalizacje.
jayhendren
5

/tmpjest miejscem, w którym zapisywany jest tymczasowy plik crontab. Po zapisaniu i wyjściu, crontabdokonam zmian w innym, bardziej odpowiednim katalogu w twoim systemie (zwykle w /var/spool/cron, jeśli dobrze pamiętam). Więc nie martw się, system operacyjny może usunąć twoje / tmp, ale nigdy nie usunie twoich crontabs.

Valmiky Arquissandas
źródło
1

Pliki Crontab znajdują się w / var / spool / cron / crontabs / pod własną nazwą użytkownika lub identyfikatorem użytkownika. Ponieważ mogą wystąpić sytuacje, w których zlokalizowany tutaj plik crontab nie jest już połączony z kontem logowania, zaleca się zapisanie kopii w katalogu domowym, powiedzmy /home/userid/.crontab, aby można ją było łatwo przywrócić w razie potrzeby do. Pozwala to również na umieszczenie go pod kontrolą wersji, jeśli chcesz.

Jeśli twój katalog domowy zostanie przeniesiony do innego systemu, często crontab z katalogu bufora nie towarzyszy mu, chyba że administrator systemu weźmie to pod uwagę. Kopia zapasowa / var / spool nie jest zawsze tworzona lub przywracana, gdy system wymaga ponownego uruchomienia.

Dlatego ponownie zaleca się przechowywanie kopii pliku crontab w katalogu domowym.

Użyj swojego ulubionego edytora (pico, vi, emacs itp.), Aby edytować ~ / .crontab, a następnie użyj crontab, aby zastosować go do / var / spool / crontabs. Lubię to:

% pico ~/.crontab; crontab ~/.crontab

Jeśli lubisz aliasy, możesz zamiast tego uruchomić jeden.

JonathanS
źródło
1
Czy muszę coś zrobić, aby plik crontab mojego domu zastępował pliki crontab w innym miejscu?
Tim
Po prostu uruchom „crontab ~ / .crontab”, a zastosujesz go w / var / spool / cron / crontabs. Użyj pico, emacs lub vi, aby edytować ~ / .crontab przed wprowadzeniem jakichkolwiek zmian.
JonathanS
To tak naprawdę nie odpowiada na pytanie.
nikt
@AndrewMedico: Główne pytanie brzmiało: „Gdzie mam przechowywać plik crontab? Czy mogę zapisać plik crontab pod $ HOME lub w innym miejscu?” A może odwołujesz się do pytania Tima w komentarzu tutaj?
JonathanS