Ik heb een script gemaakt dat een cron-taak zal toevoegen op basis van gebruikersspecificaties, maar het zal niet werken omdat ik cron elke keer moet vernieuwen Ik voeg een taak toe in crontab. Is er een manier om cron te vernieuwen zonder het proces te doden?

Antwoord

Zolang je script gebruikt crontab om taakspecificaties voor de gebruiker toe te voegen en te verwijderen, het is niet nodig om de cron daemon opnieuw te starten.

De AIX 7.1 cron manual pagina zegt :

Wanneer u wijzigingen aanbrengt naar de crontab-bestanden met behulp van het crontab commando, wordt een bericht dat de wijziging aangeeft naar de cron daemon gestuurd.

Zie ook de crontab handleiding .

De algemene reeks acties die uw script zou uitvoeren take:

  1. Haal de crontab van de gebruiker naar een tekstbestand met crontab -l >crontab.txt.
  2. Manipuleer het tekstbestand door jobspecificaties toe te voegen, te verwijderen of te wijzigen.
  3. Laad de crontab van de gebruiker met de nieuwe specificaties met crontab crontab.txt.

De opdrachten in de eerste en laatste stap moeten worden uitgevoerd als de gebruiker (de eerste stap kan ook worden uitgevoerd als crontab -l username >crontab.txt zoals bijv root).

Dit zou werken op elke Unix die cron gebruikt.

Reacties

  • Wat als er bestaande banen zijn? Moet ik het eerst in hetzelfde tekstbestand plaatsen en dan de nieuwe job toevoegen voordat ik het in de crontab laad?
  • @Shan Zoals ik al zei, zou je de huidige crontab voor de gebruiker krijgen en dat aanpassen voordat u het opnieuw laadt. Dus ja, je voegt nieuwe jobs toe aan het bestand geproduceerd door crontab -l.

Answer

AIX 7.1 cron manual pagina zegt :

De cron daemon leest het configuratiebestand wanneer het is geactiveerd en wanneer het het ophangsignaal ontvangt.

Dus gewoon kill -HUP cron_pid zou het moeten doen.

Reacties

  • Ik heb dit al geprobeerd, maar ik wil mijn configuratie vernieuwen zonder het proces te beëindigen
  • @Shan Het kill commando stuurt signalen naar het proces. In het algemeen kunnen processen worden gedood, d.w.z. ze sterven daadwerkelijk door een signaal te ontvangen. Maar in het geval van een cron proces behandelt het het signaal, sterft niet en herleest zijn configuratie.
  • Het gedeelte van de man-pagina dat u citeerde is verwijzend naar cron ' s configuratiebestand , /etc/cronlog.conf, niet de crontab-bestanden zelf.
  • Ik kan hier geen antwoord op geven voor deze vraag; wanneer ik handmatig een crontab-bestand en HUP cron bewerk, wordt de nieuwe cron-taak niet uitgevoerd.
  • @JeffSchaller is correct, je moet ofwel -9 cron_pid doden of crontab gebruiken op een crontab-bestand zoals voorgesteld door Kusalananda in het andere antwoord om de crontab opnieuw te laden.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *