Eu tenho um shell script que estou executando no Linux e no Sun Solaris, mas há uma diferença considerável no tempo gasto pelo script para executar.
Quando eu depurar o script em ambos os servidores usando 'set -x', descobri que um loop for, tomando sua saída de uma instrução 'awk', está demorando muito mais tempo no linux do que no solaris. depois de configurar a opção debug eu posso observar a execução linha por linha dos scripts e observo que o desempenho é muito mais lento no linux, mesmo que o mesmo conjunto de linhas seja executado em ambos os servidores.
a seguir é a parte do script que leva tempo:
for k in 'awk ' {print $1 }' StartAppTemp'
Também calculei o tempo gasto pelo loop for usando o comando abaixo:
time 'for k in 'awk ' {print $1 }' StartAppTemp''
O / P no linux:
real 0m0.002s
user 0m0.000s
sys 0m0.003s
O / p no Solaris
real 0m0.00s
user 0m0.00s
sys 0m0.00s
Aqui a precisão é de apenas 2 dígitos após o decimal.
script completo:
for k in 'awk ' {print $1 }' StartAppTemp';do
ps -p $k >/dev/null;
if test $? -eq 0 ; then
echo "running";
else
echo "Stopped";
fi;
done;
Existe uma maneira de melhorar o desempenho no Linux?
Tags solaris linux unix shell-script