Книга: Искусство программирования на языке сценариев командной оболочки
Пример 28-1. Удаление cookie-файлов
Пример 28-1. Удаление cookie-файлов
if [ -f ~/.netscape/cookies ] # Удалить, если имеются.
then
rm -f ~/.netscape/cookies
fi
ln -s /dev/null ~/.netscape/cookies
# Теперь, все cookie-файлы, вместо того, чтобы сохраняться на диске, будут "вылетать в трубу".
/dev/zero
Подобно псевдоустройству /dev/null, /dev/zero так же является псевдоустройством, с той лишь разницей, что содержит нули. Информация, выводимая в этот файл, так же бесследно исчезает. Чтение нулей из этого файла может вызвать некоторые затруднения, однако это можно сделать, к примеру, с помощью команды od или шестнадцатиричного редактора. В основном, /dev/zero используется для создания заготовки файла с заданой длиной.
Пример 28-2. Создание файла подкачки (swapfile), с помощью /dev/zero
#!/bin/bash
# Создание файла подкачки.
# Этот сценарий должен запускаться с правами root.
ROOT_UID=0 # Для root -- $UID 0.
E_WRONG_USER=65 # Не root?
FILE=/swap
BLOCKSIZE=1024
MINBLOCKS=40
SUCCESS=0
if [ "$UID" -ne "$ROOT_UID" ]
then
echo; echo "Этот сценарий должен запускаться с правами root."; echo
exit $E_WRONG_USER
fi
blocks=${1:-$MINBLOCKS} # По-умолчанию -- 40 блоков,
#+ если размер не задан из командной строки.
# Ниже приводится эквивалентный набор команд.
# --------------------------------------------------
# if [ -n "$1" ]
# then
# blocks=$1
# else
# blocks=$MINBLOCKS
# fi
# --------------------------------------------------
if [ "$blocks" -lt $MINBLOCKS ]
then
blocks=$MINBLOCKS # Должно быть как минимум 40 блоков.
fi
echo "Создание файла подкачки размером $blocks блоков (KB)."
dd if=/dev/zero of=$FILE bs=$BLOCKSIZE count=$blocks # "Забить" нулями.
mkswap $FILE $blocks # Назначить как файл подкачки.
swapon $FILE # Активировать.
echo "Файл подкачки создан и активирован."
exit $SUCCESS
Еще одна область применения /dev/zero -- "очистка" специального файла заданного размера, например файлов, монтируемых как loopback-устройства (см. Пример 13-6) или для безопасного удаления файла (см. Пример 12-42).
Пример 28-3. Создание электронного диска
#!/bin/bash
# ramdisk.sh
# "электронный диск" -- это область в ОЗУ компьютера
#+ с которой система взаимодействует как с файловой системой.
# Основное преимущество -- очень высокая скорость чтения/записи.
# Недостатки -- энергозависимость, уменьшение объема ОЗУ, доступного системе,
# относительно небольшой размер.
#
# Чем хорош электронный диск?
# При хранении наборов данных, таких как таблиц баз данных или словарей, на электронном диске
#+ вы получаете высокую скорость работы с этими наборами, поскольку время доступа к ОЗУ
# неизмеримо меньше времени доступа к жесткому диску.
E_NON_ROOT_USER=70 # Сценарий должен запускаться с правами root.
ROOTUSER_NAME=root
MOUNTPT=/mnt/ramdisk
SIZE=2000 # 2K блоков (измените, если это необходимо)
BLOCKSIZE=1024 # размер блока -- 1K (1024 байт)
DEVICE=/dev/ram0 # Первое устройство ram
username=`id -nu`
if [ "$username" != "$ROOTUSER_NAME" ]
then
echo "Сценарий должен запускаться с правами root."
exit $E_NON_ROOT_USER
fi
if [ ! -d "$MOUNTPT" ] # Проверка наличия точки монтирования,
then #+ благодаря этой проверке, при повторных запусках сценария
mkdir $MOUNTPT #+ ошибки возникать не будет.
fi
dd if=/dev/zero of=$DEVICE count=$SIZE bs=$BLOCKSIZE # Очистить электронный диск.
mke2fs $DEVICE # Создать файловую систему ext2.
mount $DEVICE $MOUNTPT # Смонтировать.
chmod 777 $MOUNTPT # Сделать электронный диск доступным для обычных пользователей.
# Но при этом, только root сможет его отмонтировать.
echo "Электронный диск "$MOUNTPT" готов к работе."
# Теперь электронный диск доступен для любого пользователя в системе.
# Внимание! Электронный диск -- это энергозависимое устройство! Все данные, хранящиеся на нем,
#+ будут утеряны при остановке или перезагрузке системы.
# Если эти данные представляют для вас интерес, то сохраняйте их копии в обычном каталоге.
# После перезагрузки, чтобы вновь создать электронный диск, запустите этот сценарий.
# Простое монтирование /mnt/ramdisk, без выполнения подготовительных действий, не будет работать.
exit 0
- Пример 28-3. Создание электронного диска
- Пример 12-42. Надежное удаление файла
- Пример 28-2. Создание файла подкачки (swapfile), с помощью
- Пример установочного скрипта
- Пример из практики
- Резервное копирование многофайловых баз данных
- Восстановление из резервных копий многофайловых баз данных
- Создание файлов с блокировкой
- ПРИМЕР ПРОСТОЙ ПРОГРАММЫ НА ЯЗЫКЕ СИ
- Примеры получения статистики
- Пример применения метода «пять почему»
- Рекомендуемое расширение для файлов баз данных - *.ib