Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

OS Linux

[gentoo] beeindigen van een proces in een cron

Anoniem
dJeedJee
2 antwoorden
  • Ik heb een proces die automatisch opstart. Na twee uur wil ik hem weer stoppen. Hij start op in een cron-job. Maar hoe stop ik hem nu weer?

    Ik zat te denken aan een kill -pid. Maar nu veranderd de -pid steeds. De procesnaam blijft hetzelfde. Hoe kom ik achter de -pid van een procesnaam en hoe stuur ik deze waarde door naar de kill -pid.
  • er zijn grofweg drie manieren.

    1. killall (onder Linux, niet andere Unixen!): killall blackbox killt alle processen met de naam blackbox. Heeft je proces dus een duidelijk herkenbare naam, en weet je zeker dat er nooit onbedoeld andere processen met die naam draaien, dan kan dat.

    2. het programma start-stop-daemon uit het pakketje debianutils. Zie man start-stop-daemon. Erg handig, misschien wel de beste methode.

    3. de $! variabele van bash. schrijf een startscriptje voor je cron-taak:

    [code:1:bb77e81002]
    # start proces
    startproces argument blabla blaat &

    # de $! variabele bevat de pid van het laatst gestarte proces.
    echo $! > /var
    un/blaat.pid
    [/code:1:bb77e81002]

    stoppen kan dan zo:

    [code:1:bb77e81002]
    # stop proces
    kill `cat /var
    un/blaat.pid`
    rm -f /var
    un/blaat.pid
    [/code:1:bb77e81002]

    of, netter:

    [code:1:bb77e81002]
    # stop proces
    if test -r /var
    un/blaat.pid; then
    kill `cat /var
    un/blaat.pid`
    rm -f /var
    un/blaat.pid
    fi
    [/code:1:bb77e81002]


    Waar je wel op moet letten bij deze startconstructie, is of het proces niet zelf nog een keer een fork(2) uitvoert. In dat geval klopt de PID natuurlijk niet meer. Dit soort dingen werkt dus niet zomaar bij MySQL of Apache. Maar deze servertoepassingen hebben altijd wel hun eigen start-stop technieken. Raadpleeg daarvoor de documentatie.


    Verder kun je natuurlijk altijd met ps|grep|awk constructies gaan prutsen.





Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.