Наши партнеры

UnixForum





Библиотека сайта 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.