2011-12-20 10 views
32

Próbuję dodać linię do crontab na Ubuntu. W tej chwili robię crontab -e i edytuję tam crontab.Dołączanie do crontab ze skryptem powłoki na Ubuntu

Jednak nie mogę znaleźć prawdziwego pliku crontab, ponieważ wydaje się, że crontab -e daje tymczasową kopię roboczą.

/etc/crontab wygląda jak system crontab.

Jaka jest ścieżka pliku crontab zapisywanego jako crontab -e?

Dzięki!

+0

https://stackoverflow.com/questions/610839/how-can-i-programme-create-a-new-cron-job – dskrvk

+0

Możliwy duplikat [Jak mogę programowo utworzyć nowe zadanie cron?] (https://stackoverflow.com/questions/610839/how-can -i-programmatically-create-a-new-cron-job) –

Odpowiedz

22

Użyj crontab -l > file, aby wyświetlić listę crontab bieżącego użytkownika na file i crontab file, aby zainstalować nowy plik crontab.

1

Plik crontab użytkownika znajduje się w katalogu "/ var/spool/cron/crontabs" dla ubuntu.

[email protected]:~$ sudo ls -lh /var/spool/cron/crontabs/adyliu 
-rw------- 1 adyliu crontab 1.2K 2012-03-01 09:33 /var/spool/cron/crontabs/adyliu 

"adyliu" jest twoim loginem.

Musisz mieć uprawnienia root, aby zobaczyć ten plik.

Korzystanie z "crontab -e" może jest najlepszym sposobem modyfikacji skryptu cron.

w instrukcji:

użytkownicy nie mogą edytować pliki w tym katalogu bezpośrednio aby upewnić się, że tylko użytkownicy dozwolony przez system uruchomić okresowe zadania mogą dodać je i tylko składniowo poprawne crontaby będzie tam napisane: .

79

Można też zrobić to bez pliku tymczasowego:

(crontab -l ; echo "0 4 * * * myscript")| crontab - 
+0

Szkoda, że ​​nie spojrzałem na to pierwszy. miły. – mdandr

+2

Co oznacza 'crontab -'? – Noumenon

+3

'crontab-' oznacza zastąp crontab standardowym wejściem. – Duvrai

11

Jeśli crontab jest pusta należy używać 2>/dev/null:

(crontab -l 2>/dev/null; echo "0 4 * * * myscript")| crontab - 
+0

Podejmij go ostrożnie, ponieważ zrobienie tego w ten sposób' 2>/dev/null' może nie dać Ci znać o żadnym innym błędów, chciałbym osobiście raczej zobaczyć błąd raz niż pominąć wszystkie błędy na zawsze – Ordiel

+0

@Ordiel Czy są naprawdę jakieś inne błędy, które można uzyskać z 'crontab -l'? – Noumenon

+0

W typowym zachowaniu powłoki, rura już pomija stderr: więc bez dotykania stderr, komunikat o błędzie powinien nadal nie kończyć się w crontabie. Np. Jeśli * chcesz * stderr w rurze, w Bash dodasz '&' za rurą: | & – Rondo