Искусство программирования на языке сценариев командной оболочки - Мендель Купер
Шрифт:
Интервал:
Закладка:
Иногда возникает необходимость принудительной синхронизации буферов ввода-вывода с содержимым на магнитном носителе, как, например, при надежном удалении файла (см. Пример 12-42) или когда наблюдаются скачки напряжения в сети электроснабжения.
losetup
Устанавливает и конфигурирует loopback-устройства.
Пример 13-6. Создание файловой системы в обычном файле
SIZE=1048576 # 1 Мб
head -c $SIZE < /dev/zero > file # Создается файл нужного размера.
losetup /dev/loop0 file # Файл назначается как loopback-устройство.
mke2fs /dev/loop0 # Создание файловой системы.
mount -o loop /dev/loop0 /mnt # Монтирование только что созданной файловой системы.
# Спасибо S.C.
mkswap
Создание swap-раздела или swap-файла. Созданный swap-раздел (файл) нужно затем подключить командой swapon.
swapon, swapoff
Разрешает/запрещает использование swap-раздела (файла). Эта команда обычно используется во время загрузки системы или во время остановки.
mke2fs
Создает файловую систему ext2. Должна вызываться с правами суперпользователя.
Пример 13-7. Добавление нового жесткого диска
#!/bin/bash
# Добавление в систему второго жесткого диска.
# Программное конфигурирование. Предполагается, что устройство уже подключено к аппаратуре компьютера.
# Взято из статьи автора документа.
# "Linux Gazette", выпуск #38, http://www.linuxgazette.com.
ROOT_UID=0 # Этот сценарий должен запускать только root.
E_NOTROOT=67 # Код ошибки, если сценарий запущен простым пользователем.
if [ "$UID" -ne "$ROOT_UID" ]
then
echo "Для запуска этого сценария вы должны обладать правами root."
exit $E_NOTROOT
fi
# Будьте крайне осторожны!
# Если что-то пойдет не так, то вы можете потерять текущую файловую систему.
NEWDISK=/dev/hdb # Предполагается, что /dev/hdb -- это новое устройство. Проверьте!
MOUNTPOINT=/mnt/newdisk # Или выберите иное устройство для монтирования.
fdisk $NEWDISK
mke2fs -cv $NEWDISK1 # Проверка на "плохие" блоки (bad blocks) и подробный вывод.
# Обратите внимание: /dev/hdb1, *не* то же самое, что /dev/hdb!
mkdir $MOUNTPOINT
chmod 777 $MOUNTPOINT # Сделать новое устройство доступным для всех пользователей.
# Теперь проаерим...
# mount -t ext2 /dev/hdb1 /mnt/newdisk
# Попробуйте создать каталог.
# Если получилось -- отмонтируйте устройство и продолжим.
# Последний штрих:
# Добавьте следующую строку в /etc/fstab.
# /dev/hdb1 /mnt/newdisk ext2 defaults 1 1
exit 0
См. также Пример 13-6 и Пример 28-3.
tune2fs
Настройка отдельных параметров файловой системы ext2, например счетчик максимального количества монтирований без проверки. Должна вызываться с привилегиями пользователя root.
Очень опасная утилита. Вы можете использовать ее только на свой страх и риск, поскольку, по неосторожности, вы запросто можете разрушить файловую систему.
dumpe2fs
Выводит на stdout очень подробную информацию о файловой системе. Должна вызываться с привилегиями пользователя root.
root# dumpe2fs /dev/hda7 | grep 'ount count'
dumpe2fs 1.19, 13-Jul-2000 for EXT2 FS 0.5b, 95/08/09
Mount count: 6
Maximum mount count: 20
hdparm
Выводит или изменяет параметры настройки жесткого диска. Должна вызываться с привилегиями пользователя root. Потенциально опасна при неправильном использовании.
fdisk
Создание или изменение таблицы разделов на устройствах хранения информации, обычно -- жестких дисках. Должна вызываться с привилегиями пользователя root.
Пользуйтесь этой утилитой с особой осторожностью, т.к. при неправильном использовании можно легко разрушить существующую файловую систему.
fsck, e2fsck, debugfs
Набор команд для проверки, восстановления и отладки файловой системы.
fsck: интерфейсная утилита для проверки файловых систем в UNIX (может вызывать другие утилиты проверки).
e2fsck: проверка файловой системы ext2.
debugfs: отладчик файловой системы ext2. Одно из применений этой универсальной (и опасной) утилиты -- это восстановление удаленных файлов. Только для опытных пользователей!
Все эти утилиты должны вызываться с привилегиями пользователя root. При неправильном использовании, любая из них может разрушить файловую систему.
badblocks
Выполняет поиск плохих блоков (физические повреждения носителей) на устройствах хранения информации. Эта команда может использоваться для поиска плохих блоков при форматировании вновь устанавливаемых жестких дисков или для проверки устройств резервного копирования[ 40 ]. Например, badblocks /dev/fd0, проверит дискету на наличие поврежденных блоков.
Утилита badblocks может быть вызвана в деструктивном (проверка осуществляется путем записи некоторого шаблона в каждый блок, а затем производится попытка чтения этого блока) или в недеструктивном (неразрушающем -- только чтение) режиме.
mkbootdisk
Создание загрузочной дискеты, которая может быть использована для загрузки системы, если, например, была повреждена MBR (master boot record -- главная загрузочная запись). Команда mkbootdisk -- это сценарий на языке командной оболочки Bash, автор: Erik Troan, располагается в каталоге /sbin.
chroot
CHange ROOT -- смена корневого каталога. Обычно, команды и утилиты ориентируются в файловой системе посредством переменной $PATH, относительно корневого каталога /. Команда chroot изменяет корневой каталог по-умолчанию на другой (рабочий каталог также изменяется). Эта утилита, как правило, используется с целью защиты системы, например, с ее помощью можно ограничить доступ к разделам файловой системы для пользователей, подключающихся к системе с помощью telnet (это называется -- "поместить пользователя в chroot окружение"). Обратите внимание: после выполнения команды chroot изменяется путь к исполняемым файлам системы.
Команда chroot /opt приведет к тому, что все обращения к каталогу /usr/bin будут переводиться на каталог /opt/usr/bin. Аналогично, chroot /aaa/bbb /bin/ls будет пытаться вызвать команду ls из каталога /aaa/bbb/bin, при этом, корневым каталогом для ls станет каталог /aaa/bbb. Поместив строчку alias XX 'chroot /aaa/bbb ls' в пользовательский ~/.bashrc, можно эффективно ограничить доступ команде "XX", запускаемой пользователем, к разделам файловой системы.
При изменении корневого каталога, вам наверняка потребуется скопировать системные утилиты и разделяемые библиотеки в новый корневой каталог, поскольку после смены корневого каталога, директории с системными утилитами могут оказаться за пределами нового корневого каталога.
lockfile
Эта утилита входит в состав пакета procmail (www.procmail.org). Она создает lock file, файл-семафор (или, если угодно, файл блокировки), который управляет доступом к заданному файлу, устройству или ресурсу. Lock file служит признаком того, что данный файл, устройство или ресурс "занят" некоторым процессом, и ограничивает (или вообще запрещает) доступ к ресурсу другим процессам.
Файлы блокировок широко применяются для защиты системных почтовых каталогов от одновременной записи несколькими пользователями, для индикации занятости порта модема, и т.п. Сценарии могут использовать файлы блокировок для того, чтобы выяснить -- запущен ли тот или иной процесс. Обратите внимание: если в сценарии будет предпринята попытка создать файл блокировки, когда он уже существует, то такой сценарий скорее всего зависнет.
Как правило, файлы блокировки создаются в каталоге /var/lock. Проверка наличия файла блокировки может быть проверена примерно таким образом:.
appname=xyzip
# Приложение "xyzip" создает файл блокировки "/var/lock/xyzip.lock".
if [ -e "/var/lock/$appname.lock ]
then
...
mknod
Создает специальный файл для блочного или символьного устройства (может потребоваться при установке новых устройств в компьютер).
tmpwatch
Автоматически удаляет файлы, к которым не было обращений в течение заданного периода времени. Обычно вызывается демоном crond для удаления устаревших файлов системного журнала.
MAKEDEV
Утилита предназначена для создания файлов-устройств. Должна запускаться с привилегиями пользователя root, в каталоге /dev.
root# ./MAKEDEV
Это своего рода расширенная версия утилиты mknod.
Команды резервного копирования
dump, restore
Команда dump создает резервные копии целых файловых систем, обычно используется в крупных системах и сетях[ 41 ]. Она считывает дисковые разделы и сохраняет их в файле, в двоичном формате. Созданные таким образом файлы, могут быть сохранены на каком-либо носителе -- на жестком диске или магнитной ленте. Команда restore -- "разворачивает" файлы, созданные утилитой dump.
fdformat