Eu precisava de um método de linha de comando para criar um arquivo cujo tamanho em bytes fosse a porcentagem de espaço livre em um disco. Eu pretendo executá-lo via cron a cada cinco minutos, mas primeiro um script de shell serve.
A plataforma de destino é o ambiente BSD4.3 em DOMAIN / OS, então eu tenho ksh
, awk
, sed
e os comandos BSD usuais, mas não as versões GNU.
Eu posso executar um comando lvolfs -a
( não um comando BSD) que lista o espaço livre do volume neste formato:
# free # total % free node id entry directory
732532 1295672 57 4D72C /
3787184 4165732 91 52055 //tr3
-------------------------------
4519716 5461404 82.76% 2 volumes.
Assim, parece simples extrair os valores, neste caso 57 e 91, identificando-os pelos IDs dos nós hexadecimais, 4D72C e 52055, respectivamente.
Eu imediatamente pensei 'dd pode fazer isso', então, concentrando-me no nó 4D72C primeiro, eu criei:
/com/lvolfs -a | \
awk -e '/4D72C/ { print $3 }' | \
sed -e 's|^|dd if=/dev/rdsk of=//tr2/test/data/tr2.free bs=|' | \
sed -e 's|$| count=1|' >//tr2/archive/dirlist
. //tr2/archive/dirlist
E dirlist
parece
dd if=/dev/rdsk of=//tr2/test/data/tr2.free bs=57 count=1
Funciona, e eu precisarei repetir algo assim para o nó 52055, mas gostaria de saber se dd
é a única maneira de usar comandos BSD realmente básicos. Alguém teria alguma sugestão?
EDIT: Mais algumas informações sobre o sistema de destino ... é uma HP / Apollo DN433 'Engenharia Workstation', os joelhos da abelha quando foi lançado no início dos anos 80, mas agora tão impressionante quanto um sistema 486DX. O sistema operacional nativo tenta imitar o Unix fornecendo um 'ambiente' BSD4.3 com um conjunto razoável de comandos BSD, mas há uma tentação de misturar comandos do BSD e Aegis (como lvolfs
) como eu fiz aqui.
Eu tenho duas estações de trabalho e cada uma controla o equipamento de teste automático. As duas estações de trabalho estão conectadas em rede e o diretório raiz da rede //
inclui tr2 (ID do nó 4D72C) e tr3 (identificação do nó 52055). Você realmente não quer ou precisa saber tudo isso - Eu gostaria apenas de dar a impressão de que nada deveria ser dado como garantido. Não quero que ninguém perca muito tempo com essas coisas - esse é o meu trabalho, mas agradeço qualquer sugestão que você possa ter. O Korn Shell ainda é um mistério para mim.
UPDATE: o comando df -a
em DOMAIN / OS fornece
$ df -a
Filesystem kbytes used avail capacity Mounted on
/dev/wn96a 1295672 563904 731768 44% //tr2
/dev/wn96a 4165732 379804 3785928 9% //tr3
----------------------------------
5461300 943700 4517600 17%
O qual, por mencionar os nomes mais familiares tr2 e tr3 , pode ser preferível. O único obstáculo ligeiro é que obtemos espaço em disco usado não livre , mas isso pode ser superado.