hostname
- это имя ситемы, которое записывается в ядро kernel.
От этого имени пишутся логи и многео другое. В компьютерных системвъх не принято привязываться к ip адресам. имена - потсоянные логические структуры в моём домене. Поэтому все системы принято привязывать к именам и есть два типа имени:
- hostname как короткое имя
- есть имя более длинное, включая "фамилию" FQDN - Fully Qualified Domain Name - включает и имя домена
Имя компьютера сохранено в фале
/etc/hostname
. Чтобы поменять имя системы, надо поменять имя в/etc/hostname
. Это имя сохраняется при загрузке системы в ядро/proc/sys/kernel.hostname
. Есть еще несколько команд, которые показывают ту же самую информацию uname -n
(uname -all
илиuname -a
- оказывает общую инфорацию о системе)hostname -f
hostname --fqdn
- длинное fqdn имя
Очень важно чтобы у кажого сервера было свое собственое имя отличное от других Если длинного имени нет, то система может не знать в каком домене нахолится текущая машина.
Домейн - это группа или зона имён, как бы "фамилия" к которой может относиться имя hostname. Domainname - часть от системы ресолвинга. Домейн не сидит в кернеле. Ресолв происходит в файле /etc/hosts
:
127.0.0.1 ServerName-1.domain.com ServerName-1 www1
192.168.0.1 <полное имя> <алиасы или короткое имя> <alias #2>
теперь можно обращатсья к серверу ServerName-1.domain.com
через его алиасы: ServerName-1
и www1
. Нaпример пингануть командой
ping www1
В этот моментсистема оращается к фсистеме ресолвинга, в частности ке файлу /etc/hosts/
и превращает короткое имя alias в полное.
Полное имя fqdn важно для сертификатов, важно когда мы работаем в domain с группой компьютеров. Многие системы работают по имени домейна (по группе имён).
Очень важно делать правильнубю систему имён, а не называтьв сех одним именем. например это могут быть:
dmz.firma.com
active-directory.firma.com
remote.firma.com
- для внешних клиентов
При обращении к алиасу www3
мы хотим чтобы система добавляла "хвост" firma.com
- dns suffix. Эти "хвосты" прописаны в /etc/resolv.conf
. Например чтобы набрав команду ping www3
система обращалась к ping www3.firma.com
.
В файле /etc/resolv.conf
:
nameserver 8.8.8.8 # dns сервер
search firma.com # dns-suffix, который будет добавлятсья, если имя не было заресолвено в dns-серверах
В системе Windows это также называется dns-suffix и находится в свойствах сетевой карточки
/etc/hosts
- превращает короткое имя в полное имя и задаёт статические ip адреса.
Но работает это только для данного компьютера. А для всей сети есть dns server'а.
/etc/resolv.conf
- содержит список dns серверов и search, который дописывает dns-suffix неизвестным именам.
Проблема в том, что посе рестарта Network manager(CentOS, systemd-resolve в ubuntu) сбросит все настройки.
Чтобы dhcp-client не смог затереть файл ресолва /etc/resolv.conf
надо добавить ему аттрибут read-only:
chattr +i /etc/resolv.conf
chattr - добавка к стандартной security системе линукса (сегодня это тоже стандарт)
При зауске программы она загружается в оперативную память. Как правило, большие программы загружаются в оперативную память не полностью, а по мере необходимости. При этом для каждой программы создается иллюзия, что она единственная в оперативной памяти. Т.е. для каждой программы создается так называемая виртуальная память. Также в память щагружается не только программа, но и файлы, с которыми она работает (библиотеки, файлы настроек, текущие рабочие файлы, переменные окружение и т.п.).
Савокупность вычислений, выполняемых программой, виртуальной памяти называется процессом. Процессы выполняюится от имени поьзователей. От этого зависят права процесса.
Иногда одной программе бываетнужно выполнить несколько операция параллельно. Для этого один процесс может разделяться на потоки. Все потоки используют общую виртуальную память. У каждого процесса есть, как минимум, один поток.
Выполняемая программа - это процесс. Администратору важно видеть список процессов. Для этого есть несколько способов.
Утилита ps
ps # список процессов, запушенных в этом терминале
ps -ef # вывод всех процессов (-e) в виде полного списка (-f)
ps -ef | less -S # вывод через less без переноса строк
-
UID - user id пользваотея, что запустил процесс
-
PID - process id - уникальный идентификатор процесса, совпадает для потоков одного процесса
-
PPID - Parent PID - идентификатор родительского процесса. Почти все прцоессы в сисетме были запущено каким-то процессом.
-
С - % использование процессора данным процессом
-
STIME - время запуска процесса
-
TTY - телетайп (pts - pseudo terminal)
-
TIME - процессороное время потраченное на работу с данным процессом
-
CMD - команда, которая запустила процесс (квадратные скобки, еси ps не смог найти аргументы)
Всё есть файл. В unix-подобных системах ипроцессы тоже являются файлами. Ядро создаёт виртуальную файловую систему, которая существует только в оперативной памяти. Виртуальный файловых систем несколько и используются они для разных задач.
Виртуальнаяфайловая система procfs примонтирована в /proc/
. Директории в /proc/
- это ид процессов. В /'proc/
омимо процессов есть и другие файлы, например /proc/version
- версия ядра. /proc/uptime
- сколько секунд включена система.
Первая строка из вывода top - вывод утилиты uptime:
- текущее время
- время рабты системы
- количество пользвоательских сессий (
w
- информация о залогиненых в систему пользователях) - средняя загрузка системы за 1 мин, 5 мин и 15 минут
Вторая строка - информация о запущенных процессах:
- total - общее коичество запущенных процессов
- running - выполняется в данныймомент
- sleeping - сколько процессов спят в ожидании каких-то данных
- stopped - количество остановленных процессов. Процессы можно сотанавливать. Остановленные процессы остатс в оперативной памяти, но их код перестает выполняться на ЦП.
- zombie - зомби процессы. Дочерние от родительских процессы при выполнении "умирают держа в руках табличку" со статусом завершения процесса. Такой процесс называется зомби. При этом родительский процесс дожен прочитать эту табличку, тем самым отпустив зомби-процесс с покоем. Зомби процессы не используют никаких ресурсов, и пока родительский процесс не прочтёт статус завершения они числятся в таблице процессов.
Если родительсккая программа не читает статусы заршения, то число процессов будет увеличиваться. Для 32-битных систем максимальное количество потоков - 32768, а для 64-битных более 4 миллионов. Но это количество можно и уменьшить. Увидеть текущий максимум потоков можно в файле
/proc/sys/kernel/pid_max
. ulimit Обычно для каждого пользователя стоит ограничеие на количество процессов. Максимальное количество процессов пользователя можно увидеть с помощью командыulimit -u
. Чтобы у пользователя ограничить число процессов надо выполнить командуulimit -u 1024
, например записав её в.bashrc
. Но лучше задавать лимит в/etc/security/limits.conf
, т.к. у пользователей нет туда доступа на запись. Либо в/etc/security/limits.d/
создается файл, оканчивающийся на*.conf
по аналогии с/etc/limits.conf
(параметрnproc
).
Третья строчка. Немного информации про использование процессора. Отображается процент вермени, который процессор потратил на те или иные типы задач в промежуток времени обновления информациии:
- us - user space - впемя потрченное процессором на процессы пользовательского пространства. речь идет всех программах, кроме ядра (для яда есть kernel space)
- sy -system time - время потраченное на kernel space.
- ni - nice cpu time - время потраченное на процессы с низким приоритетом
Для выставления приоритетов используется утилита nice и число в диапазоне 0..19. Чем больше число, тем вежливее программа. Программа с вежливостью 19 будет уступать процессорное время другим процессам.
- -20 - наивысший приоритет
- 19 - самый низкий приоритет
Приоритет по-умолчанию 0 (это можно увидеть выполнив команду
nice
). При этом более высокий приоритет -1..-20 обычный поьзовател задать не может.
nice -n firefox # запуск firefox с приоритетом 5
renice -n 10 <PID> # установить вежливость процесса с PID
ps -el # просмотр текущего приоритета процессов всех пользователей
PRI - приоритет
NI - вежливость
Если программа уж запущена, то можно заменить приоритет командой renice -n 10 firefox
. Причем уменьшить приоритет можно всегда, а дя увеличения приоритета нужны права суперпользоватея root.
- id - idle - время, проведенное процессом в ожидании программ.
- wa - input/output wait - время процессора в ожидании операций ввода/вывода (чтения/записи н диск, например)
- hi - hardware interrupts - аппаратное прерывание - сигнал от оборудования процессору о каком-либо соьытии со стороны оборужования. Этовремя процессора, потраценное процессором на аппаратные прерывания.
- si - software interrupts - програмные прерыания
- st - steal time - параматр относящийся к виртуальным машинам. говорит о том, какое время реальный процессор бы недоступен виртуальной машине.
4 строка - информация про оперативную память.
MiB
- mebibites. В 1 КилБайте - 1000 Байт, а в 1 Мегабайте 1000 Килобайт. А вот 1024 - это про Кибибайты и Мебибиайты. 1 KiB = 1024 Bytes, 1 MiB = 1024 KiB
- total - всего доступно памяти
- free - свободно памяти
- used - количество используемой оперативной памяти linuxatemyram.com
- buff/cache - память исползуемая под кэш
Можно ограничить колчиество оеративной памяти, выделяемую каждому процессу.
Можно прописать параметр в файл
/etc/security.limits.conf
с параметромas
Для этого нужно выполнить командуulimit -v
, например
ulimit -v 1024 # ограничть выделение памяти процессу 1024 KB
- swarp - "филиал" оперативки на жёстком диске.