Библиотека сайта rus-linux.net
Мои 10 ошибок при работе с командной строкой UNIX
Оригинал: My 10 UNIX Command Line MistakesАвтор: NIX CRAFT
Дата публикации: 21 июня 2009 года
Перевод: А. Кривошей
Дата перевода: апрель 2014 г.
Человек, который никогда не делал ошибку, никогда не испытывал ничего нового.
Альберт Эйнштейн
Ниже описаны несколько ошибок, которые я делал при работе с командной строкой UNIX. Некоторые из них привели к достаточно длинным простоям. Большинство этих ошибок относятся к тем временам, когда я начинал работать администратором UNIX.
Команда userdel
В файле /etc/deluser.conf было настроено удаление домашней директории и почтового ящика удаляемого пользователя (это было сделано предыдущим системным администратором, и это был мой первый день на работе). Я хотел просто удалить удалить пользовательский аккаунт, а в результате удалил все (обратите внимание, что опция "-r" была активирована в deluser.conf)
userdel foo
Перезагруженный Solaris
В Linux команда killall завершает процессы по имени (killall httpd). В Solaris она убивает все активные процессы. Как root, я убил все процессы, это был сервер базы данных Oracle...
killall process-name
Уничтоженный named.conf
Я хотел добавить новую зону в файл /var/named/chroot/etc/named.conf file, но вместо набрал:
./mkzone example.com > /var/named/chroot/etc/named.conf
Уничтоженные с помощью tar и rsync резервные копии
У меня была только одна резервная копия моего проекта, и я просто хотел извлечь из него директорию functions. Вместо этого я удалил всю резервную копию (обратите внимание на ключ "-c" вместо "-x").
cd /mnt/bacupusbharddisk tar -zcvf project.tar.gz functions
Похожий случай произошел, когда я, используя rsync, удалил все новые файлы путем перезаписи файлов из резервного набора (теперь я перешел на rsnapshot).
rsync -av -delete /dest /src
Удаление корневой директории Apache
У меня были созданы симлинки на директорию docroot моего веб-сервера (/home/httpd/http была символической ссылкой на /www). Для экономии места на диске я запустил rm -rf в директории http. К счастью, у меня была рабочая резервная копия.
Случайное изменение имени хоста и вызванная им ложная тревога
Случайно изменил текущее имя хоста (я хотел посмотреть настройки текущего имени хоста) для одного из узлов кластера. В результате в течение нескольких минут я получал предупреждающие сообщения.
hostname foo.example.com
Отключение сети общего пользования
Я хотел отключить VPN для сетевого интерфейса eth0, но в результате отключил eth1, войдя в систему с помощью SSH:
ifconfig eth1 down
Блокировка брандмауэра
Я внес изменения в sshd_config и изменил номер порта для ssh с 22 на 1022, но мне не удалось обновить правила брандмауэра. После быстрого обновления ядра я перезагрузил компьютер. Мне пришлось звонить в удаленный дата-центр, чтобы сбросить настройки брандмауэра (теперь я использую специальный скрипт сброса настроек брандмауэра, чтобы избежать блокировок).
Ввод команд не на том компьютере
Я хотел выключить свой компьютер с Fedora, но нечаянно вырубил удаленный сервер (я был авторизован там с помощью SSH):
service httpd stop
Неправильная запись CNAME DNS
Я создал неправильную запись DNS CNAME в файле зоны example.com. В итоге несколько посетителей отправились в /dev/null:
echo 'foo 86400 IN CNAME lb0.example.com' >> example.com && rndc reload
Неудачное обновление настроек Postfix RBL
В 2006 году ORDB вышла из строя. Но мне не удалось обновить настройки Postfix RBL. Однажды ORDB была снова активирована и возвращала каждый запрашиваемый IP-адрес как включенный в ее черный список. Результатом была катастрофа.
Заключение
Все люди ошибаются, но только мудрецы учатся на своих ошибках.
Уинстон Черчилль
Все эти ошибки научили меня следующему:
Резервная копия должна быть полной, находиться на съемном носителе, оффлайн, не на сайте, и быть протестированной.
Лучший способ сохранения всех данных файловой системы UNIX - утилита dump, которая единственная гарантирует восстановление данных во всех условиях (читайте публикацию Torture-testing Backup and Archive Programs).
Никогда не используйте rsync с одной директорией для резервного копирования. Создавайте снэпшоты с помощью rsync или rsnapshots.
Для хранения конфигурационных файлов используйте CVS.
Перед тем как нажать чертов Enter, перечитайте еще раз набранное вами в командной строке.
Для настройки своего сервера используйте хорошо протестированные скрипты или программы для управления настройками с открытым исходным кодом, такие как puppet, Cfengine или Chef.