Używam crontab po raz pierwszy. Chcesz napisać kilka bardzo prostych zadań testowania crona i uruchomić je.
$crontab * * * * * echo "Hi"
nic nie produkuje.
crontab */1 * * * * echo "hi"
mówi */1: No such file or directory
.
Jak wyświetlić listę aktualnie uruchomionych zadań crona (nie tylko tych, które posiadam, ale także tych, które rozpoczęli inni użytkownicy, np. Root).
Jak mogę usunąć konkretne zadanie CRON?
cron
administration
xyz
źródło
źródło
Odpowiedzi:
Nie możesz tak używać
crontab
. Użyj,man crontab
aby przeczytać o prawidłowym sposobie wywoływania tego narzędzia.Będziesz chciał użyć
crontab -e
do edycji wpisów crona bieżącego użytkownika (możesz dodawać / modyfikować / usuwać linie). Służycrontab -l
do wyświetlania bieżącej listy skonfigurowanych zadań.Jeśli chodzi o wyświetlanie plików crontab innych użytkowników, nie jest to możliwe bez rootowania w domyślnych instalacjach. Zobacz Jak wyświetlić listę wszystkich zadań cron dla wszystkich użytkowników, aby dowiedzieć się, jak wyświetlić listę wszystkiego (jako root).
Uwaga: zachowaj szczególną ostrożność, używając znaków globowania powłoki w wierszu poleceń (
*
a?
zwłaszcza).*
zostanie rozwinięty do listy plików w bieżącym katalogu, co może mieć nieoczekiwane efekty. Jeśli chcesz przekazać*
coś jako argument, zacytuj to ('*'
).źródło
mail
z linii poleceń powinien uzyskać dostęp do lokalnej skrzynki pocztowej, jeśli jest skonfigurowana). Aby zobaczyć „cześć” w środowisku graficznym, można ustawić zadanie jako:* * * * * export DISPLAY=:0; xmessage 'hi'
.Istnieją dwa sposoby edytowania własnych
crontab
:interaktywnie, używając
crontab -e
, który otworzycrontab
edytor określony przez$VISUAL
lub$EDITOR
, lubnieinteraktywnie, używając
crontab crontab.txt
, który po prostu zaimportujecrontab
wpisy z plikucrontab.txt
, zastępując istniejącą aktywną tabelę crontab dla bieżącego użytkownika.Problem polega na tym, że po prostu
crontab
źle używasz polecenia.Poniższe informacje dotyczą nieinteraktywnej manipulacji crontabem:
Aby programowo usunąć określone zadania , możesz zrobić coś takiego
gdzie
PATTERN
jest wyrażenie regularne, które będzie pasować do zadań, które chcesz usunąć. Tutajcrontab -l
da ci swój obecnycrontab
.Lub, jeśli masz wpisy w pliku o nazwie
crontab-fragment.txt
, który chcesz usunąć z aktywnego crontab,Odczytuje bieżącą tabelę crontab i odfiltrowuje (usuwa) każdą linię, która również występuje w pliku
crontab-fragment.txt
w bieżącym katalogu (przy użyciu pełnego porównania ciągów linii). Wynik jest zapisywany,crontab.txt
a następnie ładowany stamtąd, aby zastąpić bieżący plik crontab.Aby dodać jedno lub kilka zadań , zrób coś takiego
Zakłada się, że plik
crontab-fragment.txt
zawiera wpisy, które chcesz dodać. Odczytuje bieżący plik crontab, dołącza do niego wpisycrontab-fragment.txt
i tworzycrontab.txt
.crontab.txt
Plik następnie zastępuje bieżącej tabeli.źródło
Jeśli chcesz interaktywnie modyfikować plik crontab, uruchom polecenie
crontab -e
bez żadnej innej opcji. Spowoduje to uruchomienie edytora na kopii crontab; po wyjściu z edytora edytowana kopia stanie się nowym crontabem. Możesz kontrolować, który edytor jest uruchamiany poprzez zmienne środowiskoweVISUAL
iEDITOR
. Aby wyświetlić listę crontab, uruchomcrontab -l
.Jeśli chcesz zmodyfikować crontab w skrypcie zestawu
VISUAL
iEDITOR
na ścieżkę do skryptu lub do powłoki snippet, który modyfikuje plik dostarczany w miejscu. Edytored
jest tutaj możliwością lubsed -i
jeśli twoja implementacjased
ma tę opcję. Jeśli chcesz bezwarunkowo dodać linię, możesz użyćecho … >>
. Uważaj na cytowanie; w razie wątpliwości napisz skrypt i podaj nazwę skryptu jakoEDITOR
.źródło
Jest trochę późno, ale dla innych, którzy tu szukają. Są łatwiejsze sposoby niż manipulowanie strumieniami wejścia / wyjścia za pomocą
VISUAL
iEDITOR
.Możesz po prostu napisać harmonogram crona w pliku, 1 zadanie na linię i użyć polecenia
crontab [filename]
, abyś mógł włączyćcat
swoje zadaniafilename
jako część skryptu, a następnie, jeśli chcesz, na końcu wywołać crontab.w rzeczywistości jest to najczęstsze użycie jako
man crontab
wskazówki, wymieniając je najpierwźródło
Jeśli chcesz dodać wpisy do
crontab
automatyzacji lub z wiersza poleceń, możesz to zrobić (ustawiając godziny, które chcesz mieć)Następnie:
przeładować crontabs.
źródło
/var/spool/cron
. Lepszym sposobem byłoby wykonaniecrontab(1)
polecenia.Wypróbuj za pomocą tego polecenia:
następnie dodaj swoją pracę crona:
w tym pliku.
źródło
Chciałbym podkreślić sposób, w jaki opisuję poniżej, chociaż zostało to wspomniane wcześniej w innym komentarzu. Uważam, że jest to bardzo przydatne podczas dodawania wpisów do pliku, a następnie dodawania pliku do crontab. Plik ten zawierałby dwa wpisy poniżej i nazwa pliku to
hello-world-crontab.txt
.0 09 * * * echo "Hello world!" >> /home/user/greeting.txt
0 09 * * * python /home/user/greeting.py
Następnie wykonałem poniższe polecenie, aby dodać te wpisy do crontab.
$ crontab hello-world-crontab.txt
Następnym krokiem jest sprawdzenie, czy te wpisy zostały dodane.
$ crontab -l
Krótkie wyjaśnienie, co robi każdy wpis:
/home/user/greeting.txt
codziennie o 9 rano.0 09 * * * echo "Hello world!" >> /home/user/greeting.txt
0 09 * * * python /home/user/greeting.py
źródło