Showing posts with label linux. Show all posts
Showing posts with label linux. Show all posts

Wednesday, November 6, 2019

Linux: команды


Всем, привет!
Продолжаю работать над вопросами. Решил вынести в отдельный пост команды, которыми пользую каждый день.
Весь список тут

1. Что выполняет команда ```tee```?


2. Что выполняет команда ```awk```?


3. Что выполняет команда ```tr```?



4. Что выполняет команда ```cut```?



5. Что выполняет команда ```tac```?



6. Что выполняет команда ```curl```?



7. Что выполняет команда ```wget```?



8. Что выполняет команда ```watch```?



9. Что выполняет команда ```head```?



10. Что выполняет команда ```tail```?



11. Что выполняет команда ```less```?



12. Что выполняет команда ```cat```?



13. Что выполняет команда ```touch```?



14. Что выполняет команда ```sar```?



15. Что выполняет команда ```netstat```?



16. Что выполняет команда ```tcpdump```?



17. Что выполняет команда ```lsof```?



18. Что выполняет команда ```cpio```?


19. Что выполняет команда ```ps```?



20. Что выполняет команда ```nohup```?



Linux: веб вопросы


Всем, привет!
Продолжаю список интересных вопросов, которые задают на собеседовании админам или девопсам.
В этот раз рассматриваем вопросы, связанные с вебом и сетью.
Весь список тут

Какую функцию выполняет DNS в сети?


Какие записи ДНС вы знаете, для чего они используются?



Что такое HTTP?


Что такое HTTP-proxy и как он работает?


Кратко опишите как работает HTTPS.


Что означает директива upstream в настройках nginx'a?


Кратко опишите действия по созданию и установке ssl-сертифката для сайта https://foo.example.com


Можно ли использовать несколько SSL-хостов на одном айпи-адресе?


Что такое wildcard сертификат?


Tuesday, October 22, 2019

Zabbix: настройка мониторинга

Всем привет!
В этой статье рассмотрим настройку мониторинга на zabbix'e: подключим шаблон мониторинга, включим мониторинга порта и системных компонентов. В качестве подопытного возьмем сервер Apache.
Что имеем в самом начале - это установленный сервер Zabbix'a на CentOs'e.

Для начала посмотрим, что предлагает использовать сам Zabbix для мониторинга веб-сервера Apache. Вариантов много, остановимся на решении без подключения внешних скриптов (Template App Apache2 for Zabbix 4.0 that works without any external scripts). Из этого решения нам нужен файл xml, загружаем. При импорте у меня он не захотел импортироваться сразу, поэтому пришлось скопировать содержимое, а сам файлик создать отдельно. 
Проверяем, что модуль status_module в апаче установлен, если нет - устанавливаем.
httpd -M 2>/dev/null | grep status_module

В конфиг апача вносим такие настройки:
<Location /server-status>
    SetHandler server-status
    Order deny,allow
</Location>
ExtendedStatus On 

Перегружаем апач. 
 

На странице Templates создаем новый шаблон изxml-файла.
На странице Configuration-Hosts создаем  новый хост: указываем имя и группу(рекомендую создать отдельную групу для ваших серверов, а не использовать группу по умолчанию).
В настройках агента(/etc/zabbix/zabbix_agentd.conf) этого нового хоста, не забудьте добавить разрешения для основного сервера, с которого осуществляется мониторинг, у меня это 10.30.1.41
Server=127.0.0.1, 10.30.1.41

Далее - прицепляем импортированный шаблон "Template App Apache2 Zabbix agent".

Переходим на вкладку Applications, там должно появиться ваше первое приложения для апача. Добавим еще одно, назовем его Open ports, внутри этого приложения кликаем на Add item - добавим новое условие мониторинга. Указываем название и приложение. В настройках нас интересует ключ net.tcp.service[http,10.30.1.41,80] (служба http, айпи-адрес и порт).
Сохраняем. Ждем пару минут, переходим на вкладку Monitoring-Latest data
Итак, для текущего примера получаем минимальный пакет для мониторинга веб-сервера и работающего порта. В дашборд выведу пару графиков, выглядят они, конечно, приятно, но по большому счету это просто красота:) 


Успехов!

Friday, October 18, 2019

Zabbix: установка оффлайн

Всем привет!
Сегодня устанавливаем Zabbix в оффлайн режиме. Как обычно в оф. документации все просто, проверим - так ли это. Для данной задачи используется сервер с CentOs'ом, который имеет доступ в интернет, чтобы можно было скачать нужные пакеты, и второй сервер без доступа к интернету. На этот сервер и будем устанавливать заббикс.
Для начала берем все нужное(загружаем в папку tmp):
yum install --downloadonly --downloaddir=/tmp /
zabbix40-server-mysql /
zabbix40-web-mysql /
zabbix40-agent /
yum install createrepo -y --downloadonly --downloaddir=/tmp 

Возможно, что еще понадобятся и эти зависимости: deltarpm, python-deltarpm
С помощью createrepo сделаем репозитарий из локальной нашей папки с загруженными пакетами:

createrepo /custom_repo/
Перенесем туда все пакеты, далее переподключаем репозиторий.
yum clear all
yum repolist 

Загрузили, перенесли все пакеты на второй сервер.
Приступаем к установке и сразу же получаем ошибку:
Error: Package: zabbix40-server-mysql-4.0.12-1.el7.x86_64 (LocalRepo)
           Requires: libcrypto.so.10(OPENSSL_1.0.2)(64bit)

Версия openssl требует обновления.
Бежим качаем 2 пакета(на текущий момент такая версия):
openssl-1.0.2k-19.el7.x86_64.rpm
openssl-libs-1.0.2k-19.el7.x86_64.rpm
Далее удаляем старый openssl, обновляем openssl-libs(зависимости) и устанавливаем новую версию openssl. Продолжаем установку:
yum install zabbix40-server-4.0.12-1.el7.noarch.rpm

Далее все гут, едем дальше.
yum install  zabbix40-web-4.0.12-1.el7.noarch.rpm
Получаю ошибку:
Error: Package: php-5.4.16-46.el7.x86_64 (LocalRepo)
           Requires: httpd-mmn = 20120211x8664


Отсутствует httpd - идем качаем зависимости:
yum install httpd -y --downloadonly --downloaddir=/tmp
yum install apr.x86_64 -y --downloadonly --downloaddir=/tmp
yum install apr-util -y --downloadonly --downloaddir=/tmp
yum install httpd-tools -y --downloadonly --downloaddir=/tmp
yum install mailcap -y --downloadonly --downloaddir=/tmp
Продолжаем установку httpd:

yum install httpd

yum install zabbix40-web-4.0.12-1.el7.noarch.rpm 

Далее идет установка СУБД, я устанавливаю MariaDB.

 yum install mariadb-server-5.5.64-1.el7.x86_64.rpm

Если вы получаете ошибки такого рода:
#systemctl status mysql
● mysql.service
   Loaded: not-found (Reason: No such file or directory)
   Active: inactive (dead)
# mysql
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (111)

Значит у вас не запущен сервер СУБД - проверьте тот ли пакет вы установили и запустите службу. 

systemctl start mariadb.service
Создаем БД и импортируем скрипты для работы(строго по порядку):
shell> mysql -uroot -p<пароль> 
mysql> create database zabbix character set utf8 collate utf8_bin; 
mysql> grant all privileges on zabbix.* to zabbix@localhost identified by '<пароль>'; 
mysql> quit;

shell> cd database/mysql 
shell> mysql -uzabbix -p<пароль> zabbix < schema.sql
shell> mysql -uzabbix -p<пароль> zabbix < images.sql 
shell> mysql -uzabbix -p<пароль> zabbix < data.sql

В конфиге сервера /etc/zabbix/zabbix_server.conf указываем настройки сервера:
DBHost=localhost 
DBName=zabbix 
DBUser=zabbix 
DBPassword=zabbix_pass
Запускаем сервер
systemctl start zabbix-server
Не забываем включить его в автозапуск
systemctl enable zabbix-serverЕсли у вас на этом же сервере стоит и агент, то включаем его:
systemctl enable zabbix-agent.service 
Вносим изменения в настройки httpd и php. Например, date.timezone = Europe/Moscowр, у меня конфиги из папки http не считывались и возникла ошибка:
Time zone for PHP is not set (configuration parameter "date.timezone").
Поэтому пришлось поправить этот параметр в /etc/php.ini
date.timezone = Europe/Moscow
Запускаем httpd и браузером заходим на адрес сервера http://ip-servera/zabbix
Заполняем все поля, указывваем параметры подклюбчения, имя сервера и другие настройки.
Установка на этом завершена. Логин-пароль по умолчанию Admin/zabbix. 

Успехов!

Wednesday, October 9, 2019

Linux: вопросы среднего уровня


Всем, привет!
Продолжаю список интересных вопросов, которые задают на собеседовании Linux админам.
В этот раз рассмотрим вопросы среднего уровня(middle)
Весь список тут

Вопросы среднего уровня:
20. Что обозначает ```&``` после команды?



21. Что обозначает ```& disown``` после команды?



22. Что такое фильтр пакетов (packet filter) и как он работает?



23. Что такое виртуальная память(Virtual Memory)?



24.Что такое swap и для чего используется?



Что такое "sticky bit"?



Для чего предназначен бит неизменяемости(immutable bit)?



Что такое жесткая ссылка, символическая? Чем отличаются? Что произойдет если удалить источник, на который указывает ссылка?



Что такое айнод(inode) и какие поля в нем хранятся?



Что такое SNMP и для чего он используется?



Как уменьшить размер файла, который используется в текущий момент(например, файла лога)?



Что такое переадресация SSH-порта?

Как добавить пользователя без использования команд useradd/adduser?

Опишите команду mknod и расскажите когда вы её используете?


Загрузка диского пространства 100%, вы удалили огромный файл логов, но df показывает - нет свободного места. В чем проблема?

Вы получаете ошибку "filesystem is full", хотя 'df' говорит об обратном, место есть. В чем проблема?


Расскажите как работает команда 'ps'.


Что происходит с дочерним процессом, который завершил свое выполнение, но у которого нет родительского процесса ожидающего его завершение? Почему это плохо?


Кратко опишите каждое состояние процесса(process states) в ОС Linux.


Вы запускаете скрипт и хотите посмотреть вывод в терминале и сохранить в файл, как это можно сделать?


Объясните, что выполнит данная команда echo "1" > /proc/sys/net/ipv4/ip_forward


Какие типы файлов вы знаете в ОС Linux?


В чем разница между процессом и потоком?



Tuesday, October 8, 2019

Linux: курьезные вопросы


Всем, привет!
Продолжаю список интересных вопросов, которые задают на собеседовании Linux админам.
На этот раз очередь курьезных вопросов или веселых.
Так что будьте готовы к вопросу "чем отличается крокодил от холодильника" :)
Весь список тут

Веселые вопросы:
1. Админ случайно выполнил команду: ```chmod 444 /bin/chmod ```. Как починить?


2. Вы забыли(потеряли) пароль рута, что делать?


3. Вы перезапустили удаленно сервер, но через 10 минут вы по-прежнему не можете к нему подключиться по SSH. В чем может быть проблема?


4. Вы застряли на необитаемом острове, какие 5 утилит командной строки вы бы выбрали?


5. Вы случайно удалили файл с запущенным скриптом, возможно ли его можно восстановить?


6. Что приозойдет 19 Января 2038?


7. Как перегрузить сервер, если команда reboot не отвечает?


8. Чем отличается rest от json'a?


Коллеги, расскажите о вопросах, которые вам показались курьезными на собеседовании! :) Успехов!

Thursday, October 3, 2019

Linux: простые вопросы


Всем, привет!
Русифицировал популярные вопросы, которые задают на собеседовании Linux админам.
Вот весь список. Тут собрал ответы

Простые вопросы:
1. Как называется главный пользователь Linux системы и назовите его UID?


2. Как посмотреть все файлы, включая скрытые в директории?


3. Какой командой можно удалить папку вместе со всем содержимым?


4. Какой командой можно посмотреть утилизацию памяти в Linux'e?


5. Какой командой осуществить поиск строки "my string" внутри директории рекурсивно?


6. Как подключится к удаленному серверу через SSH?


7. Как посмотреть переменные среды?


8. Когда запускаете ```ifconfig -a``` получаете ошибку "command not found". С чем это может быть связано?


9. Что произойдет если нажать TAB-TAB?


10. Какой командой можно посмотреть все доступное место на диске Unix/Linux системы?


11. Какими командами можно проверить записи DNS?


12. Какой командой можно изменить владельца файла? Установить разрешения на файл?


13. Что выполнит данная команда ```chmod +x FILENAME```?


14. Что означают разрешение 0750 для файла? Отличается от разрешений для директории?


15. Как добавить нового юзера без разрешения на логин(login permissions)?


16. Как добавить/удалить пользователя из группы?


17. Что выполнит данная команда CTRL-c?


18. Что находится в файле /etc/services?


19. Как перенаправить стандартный вывод STDOUT и стандартный вывод ошибок STDERR? (> /dev/null 2>&1)


20. Какая разница между подключением по Telnet и SSH?


21. Какими командами можно посмотреть среднюю загрузку системы? Объясните 3 основных значения загрузки системы(load average)?


22. Назовите опции в нижнем регистре для команды ```ls```, которые не являются рабочими.


23. Что такое модуль ядра Linux'a?


24. Что такое протокол ICMP? Для чего используется?


25. Что такое уровень запуска и как посмотреть текущий?

26. Как проверить является ли машина виртуальной?

27. Как принудительно заставить систему выполнить проверку файловой системы при следующем запуске?

28. Какой процесс идет с пидом 1?

Friday, September 13, 2019

Linux: настрока синхронизации времени

Допустим, у нас есть сервер с которого мы хотим получать "правильное"(читай, настоящее) время для нашего сервера centos внутри локальной сети. Для этого воспользуемся демоном Chrony. 
    Проверяем установлен ли chrony(в противном случае - yum install chrony)

#systemctl status chronyd 
Включаем:
#systemctl enable chronyd

Редактируем конфигурационный файл:
vi /etc/chrony.conf
Добавляем локальные NTP сервера:
server 10.30.17.234
server 10.30.17.235


Запускаем демона:
#systemctl start chronyd 

Дополнительные команды:
#chronyc sources
#chronyc traking

Успехов!

Thursday, September 12, 2019

Linux: немного про систему

Уровень выполнение (запуска).
Уровни выполнения определяют, какие задачи могут выполняться в текущем состоянии (или на текущем уровне выполнения) операционной системы Linux.
 0 - Завершение работы компьютера.
 1 - Однопользовательский режим (обычно имеет псевдоним s или S)
 2 - Многопользовательский режим без поддержки сети.
 3 - Многопользовательский режим с поддержкой сети.
 5 - Многопользовательский режим с поддержкой сети и графической оболочки X Window.
 6 - Перезагрузка компьютера.
Посмотреть уровень запуска системы можно командами:
#who -r 
#runlevel

Виды потоков
  • STDIN (0) Стандартный входной поток. Канал, принимающий данные для обработки и последующей передачи на канал STDOUT и/или STDERR.
  • STDOUT(-1) Стандартный выходной поток. Представляет собой канал записи результатов выполнения каких-либо процессов. 
  • STDERR(-2) Стандартный выходной поток ошибок. В данный канал попадают сообщения об ошибках.
Управление потоками
> Вывод STDOUT в файл
#find /somedir/ -size +20G > /tmp/testfile
>> добавление STDOUT в конец файла
#find /somedir/ -size +20G >> /tmp/testfile
>& вывод STDOUT и STDERR в файл
#find /somedir/ -size +20G >& /tmp/testfile
>2 вывод  STDERR в файл
 #find /somedir/ -size +20G >2 /tmp/testfile
Комбинированный вывод
 #find /somedir/ -size +20G > /tmp/testfile >2 /dev/null
Более детально про потоки.

Команды и описание.
lsmod - Информация о модулях ядра. Объекты которые расширяют функционал ядра.
lspci - информация об устройствах pci
lspcmcia - платы расширения для ноутбуков
lsusb - информацияо usb

С помощью команды udevadm используем следующие параметры:
  • info смотрим информацию;
  • trigger эмуляция некоего события для устройства;
  • settle ожидание завершения обработки;
  • control управление демонами;
  • monitor отслеживание событий;
  • test симуляция события;
Модули управлением ядром:











  • lsmod информация о модулях ядра(Драйвер — модуль ядра, подсказывающий шине, как правильно обращаться с устройством);
  • modinfo информация о конкретном модуле(например, на скрине показана информация о ФС);
  • rmmod удаление модуля;
  • insmod установка модуля;
  • modprobe деликатное удаление или добавление;
Про драйвера все очень подробно расписано.

Friday, October 14, 2016

Linux: добавление локального репозитория

В случае если у вас сервер не имеет выхода в интернет, то можно и нужно добавлять локальные репозитории для установки и обновления пакетов. По умолчанию, нет установленных репозиториев:
#yum repolist
Добавим один. Создадим в папке /etc/yum.repos.d/ файл с названием serv.repo
Его содержимое:
Обновим
#yum repolist 

Теперь можно приступать к обновлению и установке=)
#yum install pam-devel.i686 0:1.1.8-12.el7_1.1

Успехов! 

Monday, October 26, 2015

Linux: смотрим системную информацию


Сегодня определим или вернее сказать посмотрим основные утилиты, которые помогут нам собрать статистику по операционной системе. Определить тип процессора, количество оперативной памяти, собрать информацию по дисковому пространству.
1. Смотрим на процессор:
lscpu
У меня один интеловский процессор с 4-мя ядрами, работает на частоте 2.7 ГГЦ.
2. Далее диски
fdisk -l
Дисков может быть много, поэтому покажу только 2. У меня они работают в LVM.
Подробнее про LVM.

3. Периферийные устройства:
lspci (вывод образан)

Из картинки понятно, что у меня виртуалка под управлением VWware.
lspci -v | grep "VGA"
Покажет дефолтный VGA-адаптер.
4. Смотрим блочные устройства:
lsblk
 Все теже, знакомые диски=)
5. Смонтированные файловые системы или устройства.
mount
6. Теперь на очереди - ОП.
free

7. Виртуальная директория /proc предоставляем нам немного дополнительной информаци.
Например,
cat /proc/meminfo
cat /proc/cpuinfo
cat /proc/filesystems


8. Проверка установленной ОС и ее версии
hostnamectl

Успехов!

Tuesday, October 13, 2015

Red hat 7: установка Lotus Domino 8.5.3 32 bit

Сегодня займемся установкой 32-х битного сервера лотуса на 64 битную платформу linux'а.
Установим сам линукс, думаю, что это не займет много времени.
Lotus domino будем ставить в отдельный том (отдельную файловую систему), поэтому установка линукса обязательна в LVM.
Под систему 50 Гб, под данные 450 Гб.
Смотрим группу томов:
vgdisplay
Создаем том под данные, под лог и под установочные файлы лотус-сервера:
Теперь в этих томах создаем файловые системы ext4.
mke2fs -t ext4 /dev/vg_local/tlog
mke2fs -t ext4 /dev/vg_local/domino
mke2fs -t ext4 /dev/vg_local/data

Создадим пути и смонтируем:
Записываем информацию о новых файловых системах в файлик /etc/fstab
Чтобы монтировались при загрузке системы:
/dev/mapper/vg_local-tlog /data/tlog              ext4    defaults        1 2

Расширим директорию /tmp, чтобы залить туда дистрибутивы.
Расширяем логический том, затем файловую систему
lvextend --size +3G /dev/vg_local/tmp
resize2fs /dev/mapper/vg_local-tmp 4G
Перед установкой отключаем файерволл:
Или указываем разрешенные порты.
Создаем пользователя, под которым будем запускать лотус-сервер и группу.
Теперь можно приступить к установке:
Запускаем установщик и получаем вот такую ошибку:
Ок, устанавливаем зависимости - без них никак.
В процессе установки указываем нужные параметры:
Установили сервер, не забываем устанавливать фик паки и обновления. При установке фикс пака нужно установить пересенную NUI_NOTESDIR, которая показывает на программные файлы лотус-сервера.
NUI_NOTESDIR=/domino/ibm/lotus
Кнопка "tab" вас спасет=)) жмем только на нее.
Теперь сетапим сервер - переключаемся на notes'a и переходим в дата-директорию
/domino/ibm/lotus/bin/server -listen
Запускаем клиент удаленной установки сервера.
И далее обычная установка сервера Lotus Domino=)
Не забываем устанавливать лимиты в /etc/security/limits.conf
notes soft nofile 60000
notes hard nofile 80000

Успехов! Комментарии приветствуются!

Monday, June 29, 2015

Linux: скачиваем пакеты с помощью yum

Бывают случаи, когда пакет не нужно сразу же устанавливать ( а может и другие случаи =)), а всего лишь нужно скачать и передать на другой хост или оставить на память! И не хочется рыскать по интернетам, а сделать это с помощью старого и доброго yum'a.
Ничего нет проще - но для начала устанавливаем дополнение к yum.
#yum install yum-plugin-downloadonly
И все готово!
Указываем название пакета, и директорию куда его положить=)
На примере клиента телнета. 
#yum install --downloadonly --downloaddir=/tmp/ telnet.x86_64
Теперь скачанный пакет будет доступ в нужном месте!
 
Успехов!

Wednesday, August 6, 2014

Linux: ошибка при монтировании windows-шары

Столкнулся сегодня с проблемой монтирования обычной шары на Suse 12.3
linux-tj2r:/mnt # mount -t cifs //10.0.121.54/Users/IBM01/Downloads /mnt/tmp -o username=IBM01,rw
Password for IBM01@//10.0.121.54/Users/IBM01/Downloads:  ******
mount error(12): Cannot allocate memory
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)

Сначала грешил на разрешения в шаре, но там все прописано и шара доступна под windows машинами без проблем. Нашел в логах винды следующую ошибку:

The server was unable to allocate from the system nonpaged pool because the server reached the configured limit for nonpaged pool allocations.
Ошибка службы SRV. Перегрузил службу, нет успеха - шара не монтируется.
Нашел решение на технете - нужно редактировать реестр.
HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\LargeSystemCache =1 (установил значение 1)
HKLM\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters\Size =3
(установил значение 3)
Перегрузил машину - заработало!








Еще одна разновидность ошибки при монтировании:
mount error(115): Operation now in progress
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)
Данная ошибка возникает при некорректно работающем ДНС.
Нужно внести изменения в сетевую конфигруацию, так чтобы адреса начали резолвиться с помощью nslookup или dig.
Успехов!