Gostaria de bloquear um arquivo, executar alguns testes e desbloquear o arquivo. Como posso fazer isso. Eu poderia usar a linha de comando, perl ou um script de shell.
A razão pela qual eu gostaria de bloquear o arquivo é que, ocasionalmente, ao conectar- ftp
se ao nosso servidor Apache, obtemos um erro ao excluir arquivos: "Não é possível abrir ou remover um arquivo que contém um programa em execução". Gostaria de testar usando um ftp
comando de movimento em vez de um comando de exclusão para ver se percebo esse erro. Gostaria de testar se o bloqueio de um arquivo causaria esse erro.
Resumindo: o bloqueio de arquivos normalmente é suportado apenas por idiomas de nível superior (até onde eu sei).
Para exemplos de perl, você pode começar aqui https://stackoverflow.com/questions/34920/how-do-i-lock-a-file-in-perl ou qualquer um dos clássicos do Perl como https://docstore.mik.ua /orelly/perl/cookbook/ch07_12.htm (cuidado com os problemas de certificado SSL) ou algo semelhante.
Para scripts de shell, você deve considerar o comentário de JdeBP: por que você deseja bloquear seu arquivo. Dependendo da sua resposta, você pode considerar estratégias como alterar temporariamente as permissões de gravação no arquivo, renomear o arquivo e processar o arquivo renomeado antes de alterar o nome do arquivo de volta, trabalhar em uma cópia e reescrever o original posteriormente.
Você pode usar o comando rebanho: arquivo man do rebanho
Foi aqui que aprendi sobre isso. https://stackoverflow.com/questions/24388009/linux-flock-how-to-just-lock-a-file
Este é o meu script para bloquear um arquivo nomeado
2.txt
por 10 segundos (pequena adaptação do script no link):