Seu script perl no meio provavelmente está sofrendo de buffer . Experimente os comandos sem o | /home/Beer/./addtimestamp.pl
. Se isso resolver o problema, tente adicionar:
$| = 1;
para o script perl.
O script a seguir serve para gerar "vmstat", por exemplo, a cada 15 segundos, mas, por algum motivo, ele só faz isso se houver atividade ou quando eu mato o script. Em outros casos, ele fica lá.
#!/bin/bash
#!/bin/sh
ps -ef | grep -v grep | grep "vmstat 15" | awk '{ print $2 }' | xargs kill
ps -ef | grep -v grep | grep "iostat 15" | awk '{ print $2 }' | xargs kill
ps -ef | grep -v grep | grep "mpstat 15" | awk '{ print $2 }' | xargs kill
today='date +%Y-%m-%d.%H:%M:%S'
find /var/log/ -name data_collection -type d -exec mv /var/log/data_collection /home/Beer/"data_collection_${today}" \;
mkdir -p /var/log/data_collection
vmstat 15 | /home/Beer/./addtimestamp.pl > /var/log/data_collection/vm_stat &
iostat 15 | /home/Beer/./addtimestamp.pl > /var/log/data_collection/ios_stat &
mpstat 15 | /home/Beer/./addtimestamp.pl > /var/log/data_collection/mp_stat &
Estou achando que o '&' símbolo no final tem algo a ver com isso, eu só fiz isso para que eu possa executar cada comando de uma só vez.
Seu script perl no meio provavelmente está sofrendo de buffer . Experimente os comandos sem o | /home/Beer/./addtimestamp.pl
. Se isso resolver o problema, tente adicionar:
$| = 1;
para o script perl.