Giter VIP home page Giter VIP logo

linux-tutorial's Introduction

Как сменить имя хоста hostname

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

Первая строка из вывода 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 - "филиал" оперативки на жёстком диске.

linux-tutorial's People

Contributors

cucumberian avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.