• [^] # Re: init

    Posté par . En réponse au message comment tuer des process fils automatiquement dans un script shell.... Évalué à 3.

    Pour ne pas tuer à l'aveugle, un bon moyen est de vérifier le contenu de /proc/$pid . Évidemment ça ne fonctionne que sous linux, sous d'autres Unix il faut adapter.

    Par ex en regardant dans /proc/$pid/cmdline on peut retrouver la ligne de commande qui a servi à lancer le process.

    Dans les script /etc/init.d/, on peut trouver parfois des trucs sympa :


    running_pid() {
    # Check if a given process pid's cmdline matches a given name
    pid=1ドル
    name=2ドル
    [ -z "$pid" ] && return 1
    [ ! -d /proc/$pid ] && return 1
    cmd=`cat /proc/$pid/cmdline | tr "000円" "\n"|head -n 1 |cut -d : -f 1`
    # Is this the expected server
    [ "$cmd" != "$name" ] && return 1
    return 0
    }


    Évidemment reste le cas foireux où le pid a été réutilisé par le même process, mais là il faut vraiment pas avoir de bol. En plus les pid vont en s'incrémentant, le max est 32k, donc il faudrait avoir une rotation complète ET une relance du "bon" process pour être dans ce cas... Si ça t'arrive, joue au loto ;-)