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:
- Haal de crontab van de gebruiker naar een tekstbestand met
crontab -l >crontab.txt
. - Manipuleer het tekstbestand door jobspecificaties toe te voegen, te verwijderen of te wijzigen.
- 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
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 eencron
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.
crontab -l
.