|
From: | Andreyev Dias de Melo |
Subject: | Re: [shell-script] Como saber se um arquivo está em uso? |
Date: | Tue, 16 Nov 2004 14:23:59 -0200 |
User-agent: | Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.6) Gecko/20040113 MultiZilla/1.6.4.0b |
Miguel Da Silva wrote:
Olá para todos, estou fazendo um script que vai dividir o log do meu servidor de FTP e separá-lo por semana, quanto a isso nao tenho problemas. A coisa se complica no seguinte: esse FTP que tenho possui uma movimentaçao considerável e sempre que há alguma açao o FTP está logando o que acontece. Bem, suponhamos que justamente na hora que quero processar o arquivo de logs algum infeliz está baixando alguma coisa e o FTP vai escrever no arquivo e acontece aqueles erros porque o arquivo está aberto etc e tal. Seria uma verdadeira coincidência, mas por via das dúvidas queria evitar isso ...
Miguel,Se ele estiver aberto, e dependendo de como ele estiver aberto, vc não poderá removê-lo, mas poderá apagar seu conteúdo, sobreescrevendo-o com o "buraco negro" do Unix, o /dev/null.
Alguém sabe faço para saber se um arquivo está aberto?! O Linux gera algum arquivo lock?!
Alguns serviços gravam seu PID no /var/run/, por exemplo o apache usa o '/var/run/httpd.pid', e ainda usando o apache como exemplo, fazem um link simbólico do /proc para seu arquivo de log:
$ ls -la /proc/18802/fd/2lrwx------ 1 root root 64 Nov 16 14:15 /proc/18802/fd/2 -> /var/log/httpd/error_log
Como dito por outros colegas, vc pode ver se o lsof ou o fuser não atendem as suas necessidades, e acho que talvez o utilitário 'logrotate' seja interessante pra vc tbm.
BTW, como esta é uma lista de shell-script, vc mesmo pode tentar rodar seus logs:[ "$(date +%a" == "Sun" -a ! -e "ftp_logfile_week$(date +%V)" ] && (cp ftp_logfile "ftp_logfile_week$(date +%V)"; cat /dev/null > ftp_logfile; kill -HUP $(cat /var/run/ftpd.pid) )
Ou seja, se hoje for domingo e não existir um ftp_logfile_week desta semana, copia o ftp_logfile para o ftp_logfile_week desta semana, esvazia o arquivo com nada e 'sacode' seu daemon de ftp.
Como sempre, eu NÃO testei o comando acima, NÃO teste-o em ambientes de produção!!! HIH!
Andreyev
[Prev in Thread] | Current Thread | [Next in Thread] |