Dodaj wiersze do crona ze skryptu


Odpowiedzi:


49

Możesz powtórzyć linię w dolnej części bieżącego pliku crontab w następujący sposób:

#!/bin/bash

line="* * * * * /path/to/command"
(crontab -u userhere -l; echo "$line" ) | crontab -u userhere -

+1, bo mnie do tego pobiłeś (miałem błąd skryptu podczas testowania: D). Myślę, że należy dodać jedną rzecz: system musi zostać poinformowany o cronzmianie.
Rinzwind

Wiedziałem, że to wyścig, na który trzeba będzie odpowiedzieć! Masz rację, że cron musi zostać powiadomiony. Dlatego nie możesz po prostu powtórzyć polecenia do końca tabeli. Przetestowałem, że powyższy skrypt działa i cron zaczyna uruchamiać polecenie.
Richard Holloway,

13
Aha i myślę, że to również crontab
popełni

7
Ostrzega cię, że crontab użytkowników nie istnieje, jeśli tak jest, ale wtedy go utworzy. Wasze komentarze oceniam jako wnikliwe.
Richard Holloway,

3

Jeśli chcesz edytować wartość w swoim crontab, możesz zrobić coś w stylu:

$ crontab -l | sed -e 's/foo/bar/' | crontab -

Oczywiście musisz uważać na swoją zamianę, aby upewnić się, że pasuje ona tylko do linii, które chcesz zmienić; w przeciwnym razie wszystkie fooszostaną zmienione na bars(w tym przykładzie).

Zaletą tej metody jest to, że nie zastępujesz całego pliku crontab. (Metaforyczna pinceta zamiast młota.)

Możesz użyć dowolnego polecenia edycji zamiast sed . Na przykład, jeśli chcesz użyć ed do poprawienia linii, która zaczyna się tak:

2 * * * * /sbin/flitch --days 3,4 > /var/log/flitch.out 2>&1

Powiedzmy, że ten wiersz jest jednym z wielu wierszy lub masz wiele różnych crontabów do aktualizacji w różnych systemach i wiesz tylko, że twoja linia będzie jedyną linią z zawartym flitchw niej terminem .

Może wyglądać następująco:

$ cat /tmp/edscript
/flitch
s/3/9/
w
q
$ crontab -l > /tmp/out && ed /tmp/out < /tmp/edscript && crontab - < /tmp/out
$ crontab -l
...
2 * * 1 * /sbin/flitch --days 9,4 > /var/log/flitch.out 2>&1
...

Teraz muszę przyznać, że prawie 100% czasu sed zrobi to, co zrobi ed , ale zawsze dobrze jest mieć dodatkowe narzędzie na szwajcarskim nożu wojskowym. ^. ^

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.