EK bio photo

EK

Totally not a hacker

Email Twitter Github

Ответы для Yandex.ru. Это набор вопросов которые доступны на сайте yandex.ru в разделе Вакансии.

Ссылка на вакансию: Системный администратор Unix

Вопрос 2:

Вам нужно проапгрейдить ядро и операционную систему на ста одинаково настроенных серверах. Как вы будете решать эту задачу?

Ответ:

Все зависит от конкретной ОС. В RHEL\CentOS\Fedora через yum\rpm(если есть уже собранное ядро в rpm пакете). Для Ubuntu\Debian - apt-get install или dpkg -i. Если стоит вопрос как выполнить эту команду удаленно на 100х серверах, то тут очень мгого факторов которые могут на это повлиять. Где-то есть система управления конфигурациями типа Chef\Puppet\cfengine или что-то своем самописное. В самом простом случаем можно в цикле выполнить на 100х серверах команду обновления.

for server in `cat server.lst`;do ssh -t login@$server 'sudo yum install kernel';done

Вопрос 3:

На сервере под управлением Linux собран программный RAID5 на десяти SCSI-дисках. Один диск в этом массиве помечен как faulty. Как узнать Host, Channel, ID и LUN этого диска?

Ответ:

Всю основную информацию про softraid в Linux можно узнать выполнив команду cat /proc/mdstat Больше информации покажет команда mdadm –detail /dev/md0. Чтобы узнать Host, Channel, ID и LUN дисков установленных в сервере выполняем cat /proc/scsi/scsi Там представлена информация вида Host: scsi0 Channel: 00 Id: 01 Lun: 00

Вопрос 4:

Есть сервер с Linux, на котором 16 ГБ RAM и 4 ГБ swap. Что нужно сделать, чтобы запущенные на сервере программы не могли получить суммарно больше 9 ГБ памяти (без изменения объема доступной ядру памяти)?

Ответ:

Можно сделать через настройку системных лимитов. Прописав в /etc/security/limits.conf

* hard as 9000000000

Второй вариант установка лимитов через linux cgroups создаем группу с лимитами в /etc/cgconfig.conf group memlimit { memory { memory.limit_in_bytes = 9000000000;(Задает максимальный размер памяти и пространства подкачки) } }

Добавляем правило в /etc/cgrules.conf:

newuser   memory   memlimit

Это позволить ограничить все процессы по памяти для юзера - newuser

Вопрос 5:

Имеется веб-сервер с очень маленьким временем ответа на запросы. Однако пользователи из некоторых сетей, например, ADSL или домашних, жалуются, что долго загружаются страницы с этого сервера, а иногда загрузка вообще «замирает». Ping при этом без потерь и больших задержек, с других веб-узлов страницы загружаются хорошо. Почему такое может происходить?

Ответ:

Причина тут скорей всего гдето посередине между конечным пользователем и сервером.Если есть прокси-сервер дома или в офисе то скорей всего проблема с ним, с его настройками\производительностью. Может быть проблема с софтом на компьютере пользователя - программные фильтры\фаерволлы\антивирусы и тд

Вопрос 6:

Как будет выглядеть кусок конфигурационного файла Apache, который будет запрещать доступ к каталогу /var/www/restricted для клиентов, использующих браузер Browser всех версий, кроме версии 3.14? User-Agent для Browser выглядит как “Browser v$VERSION”.

Ответ:

Прописываем в конфиг Apache

<Directory /var/www/restricted>
SetEnvIfNoCase User-Agent "^Browser v3.14" ok
Order Allow,Deny
Allow from env=ok
Deny from all
ErrorDocument 403 /noindex.html
</Directory>

Вопрос 7:

Вы работаете с СУБД MySQL. У вас настроена репликация с одного сервера на другой. Мониторинг показывает, что репликация не работает. Как вы будете чинить неработающую репликацию (мастер-база работает 24х7х365)?

Ответ:

Для правильных действий, нужно больше информации, но я приведу примеры из личного опыта. Самое просто что может быть это в настройках mysql в /etc/my.cnf прописано skip-slave-start и слэйв сервер был перезагружен, чинится просто зайти в mysql и выполнить slave start Следующая из распостранненых это ошибка типа Error ‘Duplicate entry ‘123’ for key 1’ on query.. это значит что на слэйвей в базе уже есть такие данные, скорей всего это ошибка кода. Чинится это в самом простом случае пропуском данной ошибки SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1; START SLAVE; ну или полным востановленим рэплики из последнего бэкапа с мастера. Сделать это можно так же несколькими способами, если есть бэкап нужно развернуть его и выставить значения для бинлога change master to master_log_pos=4,master_log_file=’mysql-bin.000666’;

Вопрос 8:

Как можно посмотреть содержимое ip-пакетов, приходящих на хост test.yandex

Ответ:

Самое просто использовать tcpdump с выводом в STDOUT или с записью в файл и с последующим анализом

tcpdump -X host test.yandex
tcpdump -w /tmp/test.yandex.cap host test.yandex
tcpdump -vvAr /tmp/test.yandex.cap - читаем содержимое дампфайла.

Есть еще другие способы.

ngrep host test.yandex
tshark host test.yandex (утилита tshark входит в пакет wireshark)