Bash Script - caso esac - falha

0

O script a seguir está correto ??? Estava tudo bem até ontem!

Eu escrevi o seguinte script para ajudar um cron job a rodar a cada minuto e chamar outro script que pode fazer com que um comando seja executado mais de uma vez, o comportamento esperado é ter 4 processos do trabalho, qualquer coisa menos ou mais deve estar causando um reinício, então, por favor, deixe-me saber se o script a seguir está certo ou não?

#! /bin/bash

case "$(pidof command | wc -w)" in

0)  echo "Restarting command:     $(date)" >> log

    /usr/bin/sh x.sh
    ;;

4)  # all ok

    echo "All OK" >> log
    ;;

*)  for pid in $(ps -ef | grep "x" | grep "y" | awk '{print $2}'); do kill -9 $pid; done

    echo "Removed PIDs and RESTARTING FFMPEG: $(date)" >> /root/afarinEidSTs/log

    /usr/bin/sh x.sh
    ;;

esac

Ele não matará os processos, mesmo se eles obtiverem mais de 4, por quê?

No arquivo de log, só verei o resultado de "Restarting command: $(date)" .

É tão estranho, porque pidof ffmpeg | wc -w exibirá 23, mas o script não está matando todos e os reiniciando novamente!

Eu também tentei usar ([0-3]) em vez de 0) , como disse @jordanm, mas não ajudou.

    
por Parsa Samet 03.04.2017 / 08:13

1 resposta

1

É provavelmente porque o seu cron ou algo que você está usando para executar suas tarefas não pode executar todos os comandos que você usou. Para corrigir o problema, recomendamos que você use o caminho bsolute de qualquer comando, usando which pidof , which grep & c:

#!/bin/bash

case "$(/usr/sbin/pidof command | /usr/sbin/wc -w)" in

0)  echo "Restarting command:     $(date)" >> log

    /usr/bin/sh x.sh
    ;;

4)  # all ok

    echo "All OK" >> log
    ;;

*)  for pid in $(/usr/sbin/ps -ef | /usr/sbin/grep "x" | /usr/sbin/grep "y" | /usr/sbin/awk '{print $2}'); do kill -9 $pid; done

    echo "Removed PIDs and RESTARTING FFMPEG: $(date)" >> /root/afarinEidSTs/log

    /usr/bin/sh x.sh
    ;;

esac

Verifique os caminhos completos no seu sistema. Espero que possa ajudar.

    
por 03.04.2017 / 09:34