Essa é outra ideia que eu tive, que é que o loop pode estar perdendo a posição args;
directory1=$1
directory2=$2
echo "starting" > /var/www/html/${directory2}.log
rep='du -sk /home/repository_${directory1} | awk '{print $1}''
dirsize='du -sk /home/${directory2} | awk '{print $1}''
while [ "$dirsize" -lt "$rep" ]; do
dirsize='du -sk /home/${directory2} | awk '{print $1}''
echo "New directory size: $dirsize."
echo "$dirsize\$rep" > /var/www/html/${directory2}.log
sleep 2;
done
echo "Loop Complete"
echo "done" > /var/www/html/${directory2}.log
- tente executar o script como
/bin/bash
em vez desh
, pois faltash
em alguns recursos (lixo); -)
É provável que o usuário que o php / apache está executando o script não tenha permissão para acessar um ou mais arquivos em seu script, ou que o selinux ou alguma restrição de segurança esteja impedindo que o apache / php inicie o sh
intérprete.
experimente $ ps -ef | egrep "(php|httpd|apache)"
quando o script estiver rodando para ver se você pode saber com qual usuário o php está sendo executado.
tente executar o script como o usuário do apache assim;
sudo -u apache /bin/bash -x script.sh arg1 arg2
deve fornecer alguma saída habilitada para depuração para ver onde o problema pode estar.
Se o script estiver sendo executado, mas estiver travado, você poderá usar o strace para ver o que está acontecendo fazendo assim;
# ps -ef | grep sleep
root 24242 22711 0 14:02 pts/0 00:00:00 sleep 10000
root 24249 22711 0 14:03 pts/0 00:00:00 grep sleep
# strace -fp 24242
Process 24242 attached - interrupt to quit
restart_syscall(<... resuming interrupted call ...> <unfinished ...>