+ Responder ao Tópico



  1. #1
    whinston
    Visitante

    Padrão script com ps

    Ae galera, estou usando: ps aux | grep "sendmail: accepting connections"
    E estou tendo a saída abaixo:

    root 1955 0.0 0.7 5912 1812 ? Ss 11:09 0:00 sendmail: accepting connections
    root 21497 0.0 0.2 4748 680 pts/0 R+ 17:46 0:00 grep sendmail: accepting connections

    Gostaria de fz um script do tipo: "o sendmail ta ativo? se sim, faça isto. senão, faça isto"

    Pretendo fazer isto com vários serviços e jogar num mysql. A parte que tá pegando pra mim é interpretar esta saída. Como ficaria o IF ?

    *lembrando que mesmo que não esteja rodando, ele retorna uma saída similar, que é o grep procurando

  2. #2

    Padrão script com ps

    ao inves de usar ps use o pidof

    pidof sendmail

    ai ele vai te retornar todos os pids q o sendmail ta usando, veja os scripts de inicializacao /etc/rc.d/ q lah tb tem um esquema para ver se os processos tao rodando, pra qdo por exemplo vc da um service httpd start e ele fala q jah ta rodando

  3. #3
    whinston
    Visitante

    Padrão grande!

    Citação Postado originalmente por 1c3_m4n
    ao inves de usar ps use o pidof

    pidof sendmail

    ai ele vai te retornar todos os pids q o sendmail ta usando, veja os scripts de inicializacao /etc/rc.d/ q lah tb tem um esquema para ver se os processos tao rodando, pra qdo por exemplo vc da um service httpd start e ele fala q jah ta rodando
    nussa, esta foi foda hein !!! muito util pra usar em scripts !
    pidof sendmail
    15994 1955

    vou dar uma olhada nos rc. tb, valeu!
    + 1 coisinha: tem programa que eu utiliza (o linux como servidor de aplicacao para algumas estacoes) que só de saber se tá rodando não me ajuda muito, eu preciso saber qtos processos tão abertos e se não for pedir d+, qto aqueles processos tão consumindo de memória e CPU.

    muito foda ?

  4. #4

    Padrão script com ps

    nesse caso vc vai ter q usar o ps mesmo cara

    #CPU
    ps aux | grep servico | awk {'print $3'}

    #MEM
    ps aux | grep servico | awk {'print $4'}

    eh meio gambi isso, nao sei se tem algum jeito melhor de pegar essas informacoes, vo da uma olhada no /proc q deve ter

  5. #5

    Padrão script com ps

    nao sei se essas informacoes tb sao uteis pra vc mas....
    por exemplo

    pidof mysql
    2220

    ls /proc/2220/

    lah tem bastante coisa

  6. #6
    whinston
    Visitante

    Padrão ainda to confuso

    Citação Postado originalmente por 1c3_m4n
    nesse caso vc vai ter q usar o ps mesmo cara

    #CPU
    ps aux | grep servico | awk {'print $3'}

    #MEM
    ps aux | grep servico | awk {'print $4'}

    eh meio gambi isso, nao sei se tem algum jeito melhor de pegar essas informacoes, vo da uma olhada no /proc q deve ter
    voltando a pergunta original veio, como que eu faria pra saber se tem processo rodando ou nao ?

    ainda olhando alguns rc. da vida, mas antigamente eles realmente avisavam "oh, ja tem um processo assim rodando".. atualmente eles derrubam e iniciam novamente

    a principio precisava de algo bem basiquinho, tipo assim, pelo comando pidof que vc me passo mesmo, se achar + de 2 resultados, ta rodando.. se for 1 soh eh o grep.

    como faria esta checagem ?

  7. #7

    Padrão script com ps

    Retirado do meu logrotate:
    Código :
            if test -n "`ps acx|grep mysqld`"; then
                    /usr/bin/mysqladmin flush-logs
            fi
    troque o mysqladmin pelo q vc quer executar

    os meus scripts se o servico jah estiver rodando e nao restarto nao, mas tb pra eles eu uso os arquivo.pid, exemplo:

    Código :
    #!/bin/sh
    # Begin $rc_base/init.d/squid
     
    # Based on sysklogd script from LFS-3.1 and earlier.
    # Rewritten by Rafael M. Capovilla - iceman NOSPAM underlinux com br
     
    . /etc/sysconfig/rc
    . $rc_functions
     
    PIDFILE=/var/run/squid.pid
    KILLDELAY=20
    CONFIGFILE=/etc/squid/squid.conf
    case "$1" in
            start)
                    echo "Starting Squid daemon..."
                    failure=0
                    if [ -f "$PIDFILE" ]
                    then
                            if /bin/ps p `cat $PIDFILE` | grep squid >/dev/null
                            then
                                    print_status warning running
                                    exit 0
                            else
                                    rm -f "$PIDFILE"
                                    if [ -f "$PIDFILE" ]
                                    then
                                            failure=1
                                    fi
                            fi
                    fi
                    if [ "$failure" = "1" ]
                    then
                            print_status failure
                    else
                            /usr/sbin/squid -D -f $CONFIGFILE  2>&1 >/dev/null &
                            evaluate_retval
                    fi
                    ;;
           stop)
                    echo "Stopping Squid daemon..."
                    if [ -e "$PIDFILE" ]
                    then
                            /usr/sbin/squid -k shutdown -f $CONFIGFILE 2>&1>/dev/null
                            evaluate_retval
                    else
                            print_status warning not_running
                            if [ -e "$PIDFILE" ]
                            then
                                    rm -f $PIDFILE
                            fi
                    fi
                    ;;
     
            restart)
                    $0 stop
                    sleep 1
                    $0 start
                    ;;
     
            reload)
                    echo "Reloading Squid daemon..."
                    if [ -f "$PIDFILE" ]
                    then
                            /usr/sbin/squid -k reconfigure -f $CONFIGFILE 2>&1>/dev/null
                            evaluate_retval
                    else
                            print_status warning not_running
                            if [ -e "$PIDFILE" ]
                            then
                                    rm -f $PIDFILE
                            fi
     
                    fi
                    ;;
                    status)
                    statusproc /usr/sbin/squid
                    ;;
            *)
                    echo "Usage: $0 {start|stop|restart|reload|status}"
                    exit 1
                    ;;
    esac