Мне нужен был метод командной строки для создания файла, размер которого в байтах равен проценту свободного места на диске. Я собираюсь запускать его через cron каждые пять минут, но сначала подойдет скрипт оболочки.
Целевой платформой является среда BSD4.3 в DOMAIN/OS, поэтому у меня есть ksh
, awk
, sed
и обычные команды BSD, но не версии GNU.
Я могу запустить команду lvolfs -a
(не команда BSD), которая перечисляет свободное место на томе в следующем формате:
# free # total % free node id entry directory
732532 1295672 57 4D72C /
3787184 4165732 91 52055 //tr3
-------------------------------
4519716 5461404 82.76% 2 volumes.
таким образом, кажется простым извлечь значения, в данном случае 57 и 91, идентифицируя их по шестнадцатеричным идентификаторам узлов, 4D72C и 52055, соответственно.
Я сразу подумал, что dd может это сделать, поэтому, сконцентрировавшись сначала на узле 4D72C, я придумал:
/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
И dirlist
выглядит как
dd if=/dev/rdsk of=//tr2/test/data/tr2.free bs=57 count=1
Это работает, и мне нужно будет повторить что-то подобное для узла 52055, но мне интересно, является ли dd
единственным способом, использующим действительно базовые команды BSD. Есть ли у кого-нибудь предложения?
РЕДАКТИРОВАТЬ: Еще немного справочной информации о целевой системе ... это HP/Apollo DN433 'Engineering Workstation', колени пчелы, когда она была выпущена в начале 80-х, но теперь примерно такая же впечатляющая, как система 486DX. Нативная ОС пытается имитировать Unix, предоставляя «среду» BSD4.3 с разумным набором команд BSD, но есть соблазн смешивать команды BSD и Aegis (например, lvolfs
), как я это сделал здесь.
У меня есть две рабочие станции, каждая из которых управляет автоматическим испытательным оборудованием. Две рабочие станции объединены в сеть, и сетевой корневой каталог //
включает в себя tr2 (идентификатор узла 4D72C) и tr3 (идентификатор узла 52055). Вы действительно не хотите или не должны знать все эти вещи - я просто хотел бы создать впечатление, что ничто не должно восприниматься как должное. Я не хочу, чтобы кто-то тратил слишком много времени на эти вещи - это моя работа, но я был бы признателен за любые ваши предложения. Оболочка Корн для меня все еще остается загадкой.
ОБНОВЛЕНИЕ: команда df -a
в DOMAIN/OS дает
$ 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%
Который, поскольку он упоминает более знакомые имена tr2 и tr3, может быть предпочтительным. Единственное небольшое препятствие состоит в том, что мы используем свободное место на диске, но это можно преодолеть.