Utworzyłem skrypt, który doda zadanie crona na podstawie specyfikacji użytkownika, ale nie działa, ponieważ muszę odświeżyć crona za każdym razem Dołączam zadanie w crontab. Czy istnieje sposób na odświeżenie crona bez przerywania procesu?

Odpowiedź

Dopóki skrypt używa crontab do dodawania i usuwania specyfikacji zadań dla użytkownika, nie ma potrzeby ponownego uruchamiania demona cron.

Strona podręcznika Cron AIX 7.1 mówi :

Kiedy wprowadzasz zmiany do plików crontab za pomocą polecenia crontab, wiadomość informująca o zmianie jest wysyłana do demona cron.

Zobacz także crontab instrukcję .

Ogólny przepływ działań, które Twój skrypt take:

  1. Pobierz tabelę crontab użytkownika do pliku tekstowego za pomocą crontab -l >crontab.txt.
  2. Manipuluj plikiem tekstowym, dodając, usuwając lub zmieniając specyfikacje zadań.
  3. Załaduj tabelę crontab użytkownika z nowymi specyfikacjami za pomocą crontab crontab.txt.

Polecenia w pierwszym i ostatnim kroku muszą być wykonane jako użytkownik (pierwszy krok może być również wykonany jako crontab -l username >crontab.txt jak np root).

To działałoby na każdym Uniksie używającym cron.

Komentarze

  • A co w przypadku istniejących miejsc pracy? Czy muszę najpierw umieścić go w tym samym pliku tekstowym, a następnie dołączyć nowe zadanie przed załadowaniem go do tabeli crontab?
  • @Shan Jak już wspomniałem, otrzymałeś bieżącą tabelę crontab dla użytkownika, a następnie zmodyfikujesz ją przed ponownym załadowaniem. Więc tak, dołączyłbyś nowe zlecenia do pliku utworzonego przez crontab -l.

Odpowiedź

AIX 7.1 Strona podręcznika cron mówi :

Demon cron czyta plik konfiguracyjny, gdy jest aktywowany i kiedy otrzymuje sygnał rozłączenia.

Więc po prostu kill -HUP cron_pid powinienem to zrobić.

Komentarze

  • Próbowałem już tego, ale chciałbym odświeżyć konfigurację bez przerywania procesu.
  • @Shan Polecenie kill wysyła sygnały do procesu. Ogólnie rzecz biorąc, procesy można zabić, tj. Faktycznie umrzeć, po otrzymaniu sygnału. Ale w przypadku procesu cron obsługuje on sygnał, nie umiera i ponownie odczytuje swoją konfigurację.
  • Część strony podręcznika, którą zacytowałeś, to odnosząc się do cron ' s pliku konfiguracyjnego , /etc/cronlog.conf, a nie do samych plików crontab.
  • Nie mogę przekształcić tego w odpowiedź na to pytanie; kiedy ręcznie edytuję plik crontab i cron HUP, nowe zadanie crona nie jest wykonywane.
  • @JeffSchaller jest poprawne, musisz albo zabić -9 cron_pid, albo użyć crontab na pliku crontab, zgodnie z sugestią Kusalanandy w drugiej odpowiedzi, aby przeładować crontab.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *