Stworzyłem skrypt, aby zainstalować dwa skrypty na crontab.
#!/bin/bash
sudo crontab -l > mycron
#echo new cron into cron file
echo "*/05 * * * * bash /mnt/md0/capture/delete_old_pcap.sh" >> mycron #schedule the delete script
echo "*/12 * * * * bash /mnt/md0/capture/merge_pcap.sh" >> mycron #schedule the merge script
#install new cron file
crontab mycron
rm mycron
Skrypt jest uruchamiany i dodaje dwie linie do crontab. Ale jeśli ponownie uruchomię skrypt, ponownie doda te wiersze, więc będę miał cztery wiersze z tym samym tekstem. Chcę, aby skrypt instalacyjny działał tak, aby wiersze wstawione do crontab się nie powtarzały. Jak mogę to zrobić
Odpowiedzi:
Poleciłbym użyć
/etc/cron.d
ponadcrontab
.Możesz umieszczać pliki, w
/etc/cron.d
których zachowują się jak wpisy crontab. Chociaż format jest nieco inny.Na przykład
/etc/cron.d/pcap
:Różnica w formacie polega na dodaniu użytkownika do uruchomienia zadania, tak jak po specyfikacji czasu.
Teraz możesz po prostu sprawdzić, czy plik istnieje, a jeśli go zastąpisz, nie ma to znaczenia.
Zauważ, że możliwe, że twój demon cron może nie mieć
/etc/cron.d
. Nie wiem, które demony cron je mają, ale vixie cron jest standardowym demonem cron na Linuksie i tak jest.źródło
Zamiast tego możesz zadeklarować funkcję:
i przywołaj to, mówiąc:
Doprowadziłoby to do dodania linii tylko wtedy, gdy nie ma jej w pliku.
źródło
-F
stałabygrep
interpretować jako wzorzec stałej łańcucha.z bash używam
Użyj również tego skryptu, aby dodać wpisy cron na zdalnych serwerach
źródło
Możesz napisać skrypt i dodać go do crontab, aby go zatrzymać:
źródło
kill -9
należy to robić tylko w ostateczności - unix.stackexchange.com/questions/8916/...