użytkownika odbywają się pod /var/spool/cron/crontab/$USER
, jak wspomniano w crontab man page:
Crontab to program służący do montażu, demontażu lub tabel używanych do napędu cron (8) demon. Każdy użytkownik może mieć własny plik crontab i chociaż są to pliki w/var/spool /, nie są przeznaczone do bezpośredniej edycji. Dla SELinux w trybie MLS może być jeszcze więcej crontabów - dla każdego zakresu. Aby uzyskać więcej informacji zobacz selinux (8).
Jak wspomniano na stronie człowieka, a powyższy cytat, nie należy edytować/używanie tych plików bezpośrednio, a zamiast tego należy użyć dostępnych crontab
poleceń takich jak crontab -l
do listy wpisy crontab użytkownika, crontab -r
do usunięcia crontab użytkownika lub crontab -e
do edycji wpisów crontab użytkownika.
Aby usunąć wpis crontab ręcznie, można użyć polecenia crontab -r
, aby usunąć wszystkie wpisy crontab użytkownika lub crontab -e
, aby bezpośrednio edytować plik crontab.
Z ansibl można to zrobić za pomocą modułu cron na state: absent
tak:
hosts : all
tasks :
- name : remove ntpdate cron entry
cron :
name : ntpdate
state : absent
Jednak ta opiera się na komentarzu, że ansibl stawia wyżej wejścia crontab, które można zobaczyć z tego prostego zadania:
hosts : all
tasks :
- name : add crontab test entry
cron :
name : crontab test
job : echo 'Testing!' > /var/log/crontest.log
state : present
które następnie konfiguruje wpisu crontab, który wygląda tak:
#Ansible: crontab test
* * * * * echo Testing > /var/log/crontest.log
Niestety, jeśli masz wpisy crontab, które zostały ustawione poza modułem cronu Ansible, będziesz musiał zastosować mniej czyste podejście do porządkowania wpisów w tekście.
Do tego będziemy po prostu musieli wyrzucić crontab naszego użytkownika za pomocą cron -r
i możemy powoływać się to poprzez powłokę z gry, która wygląda mniej więcej tak:
hosts : all
tasks :
- name : remove user's crontab
shell : crontab -r
Możemy wtedy użyć dodatkowych zadań, aby ustawić zadania, które chciałeś zachować lub dodać, prawidłowo wykorzystują moduł cron Ansible.