Ответы для 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)