Команды centos 7. Как Узнать Список Процессов Linux с Помощью Командной Строки

02.03.2019

Система Linux является многозадачной многопользовательской операционной системой, что означает, что значительное число людей могут одновременно запускать много различных приложений одновременно на одном и том же компьютере. Этим система Linux отличается от системы MS-DOS, например, где в одно и то же время на компьютере может работать только один человек.

Опции команд Linux обычно начинаются с символа - , после которого можно указать сразу несколько опций. Например, вместо команды ls -l -F можно ввести команду ls -lF .

В качестве аргументов команд Linux могут выступать списки имён файлов или каталогов. Например, аргументами команды cp выступают имена файлов, которые будут копироваться. Список копируемых файлов замыкается именем файла (или каталога), куда будут копироваться файлы. При копировании более чем одного файла в конце должно стоять имя каталога.

Создание имени пользователя

Перед началом работы в только что установленной системе Linux , необходимо создать себе имя для повседневной работы. Нежелательно использовать для этого имя root , которое резервируется для выполнения особых команд и для работ по поддержанию работоспособности системы.

Для создания имени пользователя, следует войти в систему как пользователь root и использовать команду useradd (или adduser).

Вход в систему

Обычно при входе в систему на экране появляется следующее приглашение:

После ввода имени пользователя и нажатия клавишы Enter появится предложение ввести пароль:

localhost login: oleg Password:

После этого следует ввести пароль (набираемые символы на экране не видны). При неверном вводе пароля на экране появится следующее сообщение:

localhost login: oleg Password: Login incorrect login:

После правильного ввода имени пользователя и пароля происходит вход в систему.

Виртуальная консоль

Консоль системы представляет собой монитор и клавиатуру, непосредственно подключённые к компьютеру. Система Linux , подобно другим версиям системы UNIX , предоставляет доступ к виртуальным консолям, с которых можно осуществлять одновременно несколько сеансов работы в системе.

Для ознакомления с работой в виртуальных консолях следует войти в систему и нажать комбинацию клавиш Alt-F2 . Снова появится приглашение login: (это вторая виртуальная консоль). Для возврата к первой виртуальной консоли необходимо нажать комбинацию клавиш Alt-F1 (происходит возврат в уже начатый сеанс работы).

Только что установленная система Linux предоставляет, как правило, доступ к первым шести виртуальным консолям, к которым можно обращаться, используя комбинации клавиш Alt-Fx. Таким образом, уже на начальном этапе пользователь получает мощный инструмент, позволяющий работать в одно и то же время сразу в нескольких сеансах.

Оболочки и команды

Большая часть общения с системой Linux происходит через посредство командных оболочек (shell ). Командная оболочка - это программа, воспринимающая команды, вводимые с клавиатуры, и преобразующая их в инструкции операционной системе.

После входа в систему, операционная система запускает командную оболочку, после чего можно вводить команды. Команда - это первое слово в командной строке. Все остальное в командной строке воспринимается в качестве аргументов этой команды. В качестве примера создадим (mkdir) каталог commands:

$ mkdir commands

Выход из системы

Для выхода из системы нужно после приглашения оболочки ввести команду:

Изменение пароля

Для смены пароля нужно ввести команду passwd . Команда предложит ввести старый пароль, а потом - новый. Затем команда попросит ввести новый пароль еще раз для подтверждения:

Файлы и каталоги

В операционной системе Linux используется понятие файла (file ). Файл - это некоторый „ кусок “ информации, имеющий собственное имя (filename ). Следует знать, что на диске информация сохраняется только в виде отдельных файлов.

Имена обычных файлов в Linux могут иметь длину до 255 символов и состоять из любых символов, кроме символа с кодом и символа / (слэша). Однако имеется еще ряд символов, которые имеют в оболочке shell специальное значение и которые поэтому не рекомендуется включать в имена. Это следующие символы:

! @ # $ & ~ % * () { } " " \ : ; >

Понятие файла тесно связано с понятием каталога (directory ). Каталог - это набор файлов. Пользователи Windows называют каталог „ папкой “, по аналогии с папкой, в которой содержится много различных листов. Однако эта аналогия неверна, т.к. каталог содержит не собственно файлы, а ссылки на файлы, а также на другие каталоги. Каталогам даются имена, по которым их можно распознавать. Кроме этого, каталоги образуют древовидную структуру; иными словами, существует единственный корневой каталог, содержащий внутри себя все остальные каталоги.

При обращении к файлу указывается путь (path), который может состоять из имени каталога (имен вложенных друг в друга каталогов), за которым пишется имя файла. Имена при этом отделяются друг от друга слэшем (/). Например:

В приведенном примере можно видеть, что имена разделяются символом / . Именно по этой причине они и не могут его содержать.

Дерево каталогов

В большинстве систем Linux используется стандартное расположение файлов, так что местоположение основных системных файлов и программ легко найти. Каталоги образуют структуру в виде дерева, которое начинается с каталога / . Этот каталог называется также корневым каталогом (root directory). Непосредственно к каталогу / примыкают важные подкаталоги /bin , /etc , /dev , /usr и другие.

Текущий каталог

В любой момент времени отдаваемая команда относится к текущему каталогу (current directory ). При входе в систему текущим каталогом назначается домашний каталог (в нашем случае /home/oleg). Обращаясь к файлу, можно указывать как полный путь к этому файлу, так и только путь от текущего каталога.

Предыдуший пример при нахождении, например, в каталоге /home/oleg/docs будет выглядеть так:

$ less mokshadharma/index.xml

Если путь к файлу (например, mokshadharma/index.xml) начинается с символа, отличного от / , то это значит, что к файлу обращаются относительно текущего каталога. Такой способ обращения называется относительным путём (relative path ).

Если имя файла начинается со знака / , то система интерпретирует это как полный путь (full path), т. е. путь, который ведёт к файлу, начиная с корневого каталога / (/home/oleg/docs/mokshadharma/index.xml). Это ещё называют абсолютным путём (absolute path ).

Обращение к домашнему каталогу

В командной оболочке bash , включаемой почти во все вновь устанавливаемые системы Linux , домашний каталог можно обозначать символом ~ . Например, команда:

$ less ~/docs/mokshadharma/index.xml

эквивалентна команде:

$ less /home/oleg/docs/mokshadharma/index.xml

Движение по дереву каталогов

Команда, используемая для движения по дереву каталогов, называется cd - сокращение от change directory (изменить каталог). В качестве примера использования команды cd перейдем в каталог /home/oleg/docs/mokshadharma/ :

$ cd ~/docs/mokshadharma

Теперь из текущего каталога можно обратиться к файлу следующей командой:

$ less index.xml

Для перехода в ближайший каталог более высокого уровня существует команда:

Для перехода в домашний каталог можно отдать команду cd без аргументов:

Просмотр содержимого каталогов

Команда ls (сокращение от list ) выводит на экран список файлов и каталогов (опция -F позволяет получить более полную инфомацию):

$ ls -F ~/docs/mokshadharma ch/ ch01.html ch02.html ch03.html cron.sh* docbook.xsl index.html index.xml pr01.html pt01.html style/

В листинге видим, что к концу имени подкаталогов приписан символ / , а к концу имени исполняемого файла (executable ) приписан символ * .

Создание новых каталогов

Для создания нового каталога используется команда mkdir (сокращение от make directory ). Для примера создадим новый каталог и войдем в него:

$ mkdir example $ cd example

Создание новых файлов

Для создания файлов используются команды touch и cat

Командой touch создается пустой файл:

$ touch file_name

Для создания файла командой cat , предназначенной для перенаправления вывода, на вход ее направляют данные со стандартного ввода (клавиатуры), а вывод команды - в новый файл:

$ cat > new_file

После того, как будет введен необходимый текст, нажимается комбинация клавиш Enter и Ctrl-D или Enter и Ctrl-C , и все введенное будет записано в new_file . Конечно, таким образом создаются, в основном, короткие текстовые файлы.

Смена владельца файла или группы файла

Выполнять смену владельца может только суперпользователь, смену группы может выполнить сам владелец файла или суперпользователь. Для того, чтобы иметь право сменить группу, владелец должен дополнительно быть членом той группы, которой он хочет дать права на данный файл.

Для уничтожения файлов используется команда rm (сокращение от remove ):

$ rm index.xml $

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

Для уничтожения каталогов используется команда rmdir , которая уничтожает только пустой каталог.

$ cd .. $ rmdir example $ ls -F $

Для уничтожения каталогов, содержащих файлы и подкаталоги, используется команда rm -rf , пользоваться которой следует с крайней осторожностью, т.к. содержимое уничтожается ей без предупреждения.

Просмотр содержимого файлов

Для просмотра содержимого файлов используются команды more и cat . Команда more выводит содержимое файла частями (по одному экрану за один раз), а команда cat выводит весь файл сразу. Усовершенствованная версия more называется less .

Для просмотра содержимого, выведенного на экран командой less используются клавишы B и Space (можно использовать также Page Up и Page Down).

Экранная документация

Почти все системы семейства UNIX , включая систему Linux , имеют экранную документацию (man pages ). Её тексты содержат документацию по системным командам, ресурсам, конфигурационным файлам и т. д. и могут быть выведены на экран в процессе работы.

Для доступа к экранной документации используется команда man (сокращение от manual ). Например, для просмотра оций команды ls следует ввести команду.

Процесс – это системный термин, который используется для описания приложения или программы. К примеру, когда мы открываем веб-браузер Google Chrome, мы можем сказать, что это процесс ответственный за запуск/выполнение Chrome, который был запущен и выполняется до тех пор пока мы не закроем браузер. Даже когда мы выполняем любую bash команду, появляется новый процесс. Если мы откроем одно и тоже приложение дважды, появится два процесса. В этом руководстве вы узнаете, как узнать список процессов Linux с помощью командной строки. Это необходимо, если вы хотите узнать какие процессы запущены в данный момент, каким пользователем запущен процесс или просто узнать какой из процессов использует больше всего ресурсов сервера.

Перед тем, как вы начнете это руководство, вам понадобится следующее:

  • Доступ к командной строке

Шаг 1 - Просмотр списка процессов Linux

Список терминов которые вам необходимо знать перед прочтением руководства:

  1. PID – идентификатор процесса. Каждый процесс имеет свой 5 значный код. Эти числа могут закончиться и начать повторяться, но в любое другое время у каждого процесса свой уникальный PID.
  2. PPID – родительский идентификатор процесса. Идентификатор процесса который запустил этот конкретный процесс.

Две самые часто используемые команды для показа списка процессов Linux это top и ps. Разница между ними заключается в том, что top чаще используется в интерактивном режиме, а ps больше используется в скриптах, в сочетании с другими bash командами.

top – возможно одна из самых базовых и часто используемых команд для отображения процесса, который потребляет наибольшее количество ресурсов сервера. После выполнения данной команды, вы должны увидеть похожее окно:

top само по себе является приложением, после выполнения команды появится новая таблица с постоянно обновляющимся списком процессов Linux. С данной таблицей можно взаимодействовать посредством клавиатуры. Вот несколько примеров:

  • h или ? – отобразить окно помощи со всеми командами и другой полезной информацией.
  • space – нажатие пробела на вашей клавиатуре вручную обновит таблицу процессов.
  • f – добавить поле для отображения в новом окне или удалить определенные поля в таблице.
  • q – выйти из приложения или дополнительных окон принадлежащих к нему. К примеру, после использования функции f .
  • l – включить отображение информации о средней загрузке и времени работы.
  • m – включить отображение информации о памяти.
  • P (Shift + p) – отсортировать процессы по количеству используемой памяти.
  • s – изменить задержку между обновлениями списка (вам будет предложено ввести значение в секундах).

Вы также можете использовать определенные опции с командой top:

  • -d delay – укажите задержку между обновлениями вместо delay .
  • -n number – обновить страницу определенное число раз и выйти из приложения. Вместо number введите значение.
  • -p pid – отображать и контролировать процессы только с определенным (pid ).
  • -q – обновлять без какой-либо задержки.

Для получения информации о других полезных командах для клавиатуры, посетите данный сайт.

Также, вы можете использовать команду man top для просмотра полезной информации об этих командах.

Другие полезные применения команды top:

  • Для отображения процессов определенного пользователя, вы можете использовать это: top -u user
  • Для закрытия процесса, нажмите в окне приложения top клавишу k на клавиатуре. Далее, вам будет предложено вписать идентификатор процесса (pid ), который вы хотите закрыть.
  • Вы можете сохранить текущие настройки команды top используя сочетание клавиш Shift + W . Эти настройки будут сохранены в директории /root/.toprc

ps – Еще одна полезная команда для отображения списка процессов Linux. Вот несколько опций часто используемых с этой командой:

  • -e – отображение всех процессов.
  • -f – полное форматирование списка.
  • -r – отображение запущенных процессов.
  • -u – опция для показа процессов определенного пользователя или пользователей.
  • –pid – опция для фильтрации процессов по PID.
  • –ppid – опция для фильтрации процессов по родительскому PID.
  • -C – фильтровать процессы по их имени или команде.
  • -o – отображение информации, связанной с пробелом или списком ключевых слов, разделенных запятыми.

Вот несколько полезных примеров того, как вы можете использовать команду ps:

  1. ps -ef – отобразит список процессов, которые запущены прямо сейчас (еще одна похожая команда ps aux)
  2. ps -f -u user1,user2 – отобразит все процессы основанные на предоставленном UID (ID пользователя или имени пользователя).
  3. ps -f –pid id – отобразит процессы основанные на pid. Введите идентификатор процесса вместо id . Может быть использована вместе с PPID .
  4. ps -C command/name – фильтрация процессов по их имени или команде.
  5. ps aux –sort=-pcpu,+pmem – отобразит процессы потребляющие большое количество ресурсов ЦПУ.
  6. ps -e -o pid,uname,pcpu,pmem,comm – используется для фильтрации определенных столбцов с последующим их отображением.
  7. ps -e -o pid,comm,etime – эта команда отобразит время прошедшее с запуска процесса.

Шаг 2 - Закрытие и расстановка приоритета процессов

В предыдущем шаге мы уже рассказывали о том, как можно закрыть процесс с помощью команды top. Этот же результат может быть достигнут при помощи команды kill. К примеру:

kill pid – впишите вместо PID идентификатор процесса, который вы хотите закрыть. Если процесс довольно упрямый и не хочет быть закрыт, вы можете использовать команду: kill -9 pid.

Еще одной командой для управления процессами является NICE. Обычно она используется для расстановки приоритетов для процессов, когда на вашей системе их запущено действительно много. В этом случае ваша система узнает какие из процессов являются важными и установит для них более высокий приоритет. Проще говоря, она помогает вам расставить приоритеты процессов от более важных к менее важным. Система будет запускать процесс, который имеет меньший приоритет только в том случае, если для этого имеется достаточно ресурсов ЦПУ. Этой команде можно задать значение от -20 до 19 , чем меньше значение, тем выше приоритет процесса. Стандартный приоритет для всех приложений 0 . Основным синтаксисом будет:

  • nice -n ‘значение’ process name – Пример: nice -n 10 name. Это начнет новый процесс с выбранным приоритетом (10 ).
  • Если вы хотите задать значение приоритета для уже запущенного приложения используйте: renice ‘значение’ -p ‘PID’ – Пример: renice ’10’ -p ‘54125’.

Заключение

В этом руководстве вы научились, как узнать список процессов Linux. Также вы познакомились с командами позволяющими управлять данными процессами. С данными командами существует множество комбинаций, поэтому не бойтесь экспериментировать.

Я расскажу о начальных настройках системы CentOS, которые повышают безопасность и удобство работы с сервером. Отмечу, что в 7-й версии системы произошли некоторые изменения по сравнению с предыдущими версиями.

Еще раз обращаю внимание, что данные настройки я делаю на виртуальном сервере. Если у вас железный сервер, то рекомендуется выполнить еще некоторые настройки, о которых я здесь не упоминаю. К ним относится, к примеру, настройка и проверка отказоустойчивости при выходе одного из дисков. Отключение регулярной проверки массива mdadm и др.

Начальная настройка CentOS 7

Итак, у нас имеется: # uname -a Linux zeroxzed.ru 3.10.0-123.20.1.el7.x86_64 #1 SMP Thu Jan 29 18:05:33 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

Первым делом обновим базовую систему:

# yum update

Для удобства администрирования, я всегда устанавливаю Midnight Commander, или просто mc:

# yum install mc

И сразу же для него включаю подсветку синтаксиса всех файлов, которые не обозначены явно в файле /usr/share/mc/syntax/Syntax синтаксисом для sh и bash скриптов. Этот универсальный синтаксис нормально подходит для конфигурационных файлов, с которыми чаще всего приходится работать на сервере. Перезаписываем файл unknown.syntax . Именно этот шаблон будет применяться к.conf и.cf файлам, так как к ним явно не привязано никакого синтаксиса.

# cp /usr/share/mc/syntax/sh.syntax /usr/share/mc/syntax/unknown.syntax

# ifconfig

И увидите ответ:

Bash: ifconfig: command not found

По крайней мере я, когда впервые это увидел, прилично удивился. Подумал, что ошибся в написании команды, перепроверил все несколько раз, но без результата. Оказалось, что надо отдельно установить пакет для выполнения ifconfig и прочих сетевых утилит.

Вместо ifconfig в CentOS 7 теперь утилита ip . Я не понимаю, зачем пилить отдельные программы для управления сетевыми настройками, если ifconfig и так отлично справляется с задачей. К тому же мне всегда нравилось, что в различных дистрибутивах линукс все примерно одинаковое. С помощью ifconfig можно настроить сеть не только в linux, но и в freebsd. Это удобно. А когда в каждом дистрибутиве свой инструмент это неудобно. Так что предлагаю установить привычный ifconfig.

Сделаем это:

# yum install net-tools

Теперь, чтобы у нас работали команды nslookup или, к примеру, host необходимо установить пакет bind-utils. Если этого не сделать, то на команду:

# nslookup

Будет вывод:

Bash: nslookup: command not found

Так что устанавливаем bind-utils:

# yum install bind-utils

Отключаем SELinux. Его использование и настройка отдельный разговор. Сейчас я не буду этим заниматься. Так что отключаем:

# mcedit /etc/sysconfig/selinux

меняем значение
SELINUX=disabled
Чтобы изменения вступили в силу, перезагружаемся:

# reboot

Можно без перезагрузки применить отключение SElinux:

# setenforce 0

Указываем сетевые параметры

Не используйте одновременно оба демона синхронизации времени — chrony и ntp. Выберите какой-нибудь один. Лично я не вижу в них разницы, сам чаще всего ставлю привычный ntp.

Добавление репозиториев

Для инсталляции различного софта необходимо . Наиболее популярные это EPEL и rpmforge, поэтому добавим их. Сначала ставим EPEL. С ним все просто, он добавляется из стандартного репозитория:

# yum install epel-release

Устанавливаем rpmforge:

# rpm --import http://apt.sw.be/RPM-GPG-KEY.dag.txt # yum install http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el7.rf.x86_64.rpm

# yum install http://repository.it4i.cz/mirrors/repoforge/redhat/el7/en/x86_64/rpmforge/RPMS/rpmforge-release-0.5.3-1.el7.rf.x86_64.rpm

Настройка хранения истории в bash_history

Полезным будет внести некоторые изменения в стандартный механизм сохранения истории команд. Он часто выручает, когда надо вспомнить одну из ранее введенных команд. Стандартные настройки имеют некоторые ограничения, которые неудобны. Вот их список:

  1. По-умолчанию, сохраняются только последние 1000 команд. Если их будет больше, то более старые будут удаляться и заменяться новыми.
  2. Не указаны даты выполнения команд, только их список в порядке выполнения.
  3. Файл со списком команд обновляется после завершения сессии. При параллельных сессиях часть команд может быть утеряна.
  4. Сохраняются абсолютно все команды, хотя в хранении некоторых нет никакого смысла.

Список последних выполненных команд хранится в домашней директории пользователя в файле .bash_history (в начале точка). Его можно открыть любым редактором и посмотреть. Для более удобного вывода списка, можно в консоли ввести команду:

# history

и увидеть пронумерованный список. Быстро найти конкретную команду, можно с помощью фильтрации только нужных строк, например вот так:

# history | grep yum

Так мы увидим все варианты запуска команды yum, которые хранятся в истории. Исправим перечисленные недостатки стандартных настроек хранения истории команд в CentOS 7. Для этого нужно отредактировать файл .bashrc , который находится в том же каталоге, что и файл с историей. Добавляем в него следующие строки:

Export HISTSIZE=10000 export HISTTIMEFORMAT="%h %d %H:%M:%S " PROMPT_COMMAND="history -a" export HISTIGNORE="ls:ll:history:w:htop"

Первый параметр увеличивает размер файла до 10000 строк. Можно сделать и больше, хотя обычно хватает такого размера. Второй параметр указывает, что необходимо сохранять дату и время выполнения команды. Третья строка вынуждает сразу же после выполнения команды сохранять ее в историю. В последней строке мы создаем список исключений для тех команд, запись которых в историю не требуется. Я привел пример самого простого списка. Можете дополнить его на свое усмотрение.

Для применения изменений необходимо разлогиниться и подключиться заново или выполнить команду:

# source ~/.bashrc

Автоматическое обновление системы

Для поддержания безопасности сервера на должном уровне необходимо как минимум своевременно его обновлять — как само ядро с системными утилитами, так и остальные пакеты. Можно делать это вручную, но для более эффективной работы лучше автоматизировать рутинные действия. Не обязательно устанавливать обновления автоматически, но как минимум проверять их появление. Я обычно придерживаюсь такой стратегии.

Для автоматической проверки обновлений нам поможет утилита yum-cron . Ставится она традиционно через yum из стандартного репозитория.

# yum install yum-cron

После установки создается автоматическое задание на выполнение утилиты в /etc/cron.daily и /etc/cron.hourly . По-умолчанию, утилита скачивает найденные обновления, но не применяет их. Вместо этого, администратору на локальный почтовый ящик root отправляется уведомление об обновлениях. Дальше вы уже в ручном режиме заходите и решаете, устанавливать обновления или нет в удобное для вас время. Мне такой режим работы видится наиболее удобным, поэтому я не меняю эти настройки.

Конфигурационные файлы yum-cron находятся по адресу /etc/yum/yum-cron.conf и yum-cron-hourly.conf . Они неплохо прокомментированы, так что в подробных разъяснениях не нуждаются. Обращаю внимание на раздел , где можно указать параметры отправки сообщений. По-умолчанию стоит отправка почты через локальный хост. Можно тут изменить параметры и отправлять сообщения через сторонний почтовый сервер. Но вместо этого лично я предпочитаю глобально для всего сервера настроить пересылку локальной почты root на внешний почтовый ящик через авторизацию на другом smtp сервере.

Отключаем флуд сообщений в /var/log/messages

В дефолтной установке системы CentOS 7, весь ваш системный лог /var/log/messages через некоторое время работы сервера будет забит следующими записями.

Oct 16 14:01:01 xs-files systemd: Created slice user-0.slice. Oct 16 14:01:01 xs-files systemd: Starting user-0.slice. Oct 16 14:01:01 xs-files systemd: Started Session 14440 of user root. Oct 16 14:01:01 xs-files systemd: Starting Session 14440 of user root. Oct 16 14:01:01 xs-files systemd: Removed slice user-0.slice. Oct 16 14:01:01 xs-files systemd: Stopping user-0.slice. Oct 16 15:01:01 xs-files systemd: Created slice user-0.slice. Oct 16 15:01:01 xs-files systemd: Starting user-0.slice. Oct 16 15:01:01 xs-files systemd: Started Session 14441 of user root. Oct 16 15:01:01 xs-files systemd: Starting Session 14441 of user root. Oct 16 15:01:01 xs-files systemd: Started Session 14442 of user root. Oct 16 15:01:01 xs-files systemd: Starting Session 14442 of user root. Oct 16 15:01:01 xs-files systemd: Removed slice user-0.slice. Oct 16 15:01:01 xs-files systemd: Stopping user-0.slice. Oct 16 16:01:01 xs-files systemd: Created slice user-0.slice. Oct 16 16:01:01 xs-files systemd: Starting user-0.slice. Oct 16 16:01:01 xs-files systemd: Started Session 14443 of user root. Oct 16 16:01:01 xs-files systemd: Starting Session 14443 of user root. Oct 16 16:01:01 xs-files systemd: Removed slice user-0.slice.

Никакой практической пользы они не несут, поэтому отключим их. Для этого создадим отдельное правило для rsyslog, где перечислим все шаблоны сообщений, которые будем вырезать. Разместим это правило в отдельном файле /etc/rsyslog.d/ignore-systemd-session-slice.conf .

# cd /etc/rsyslog.d && mcedit ignore-systemd-session-slice.conf if $programname == "systemd" and ($msg contains "Starting Session" or $msg contains "Started Session" or $msg contains "Created slice" or $msg contains "Starting user-" or $msg contains "Starting User Slice of" or $msg contains "Removed session" or $msg contains "Removed slice User Slice of" or $msg contains "Stopping User Slice of") then stop

Сохраняем файл и перезапускаем rsyslog для применения настроек.

# systemctl restart rsyslog

Необходимо понимать, что в данном случае мы отключаем флуд в лог файл только на локальном сервере. Если вы храните логи на , то данное правило нужно будет настраивать именно на нем.

Установка iftop, atop, htop, lsof на CentOS 7

И напоследок добавим несколько полезных утилит, которые могут пригодиться в процессе эксплуатации сервера.

iftop показывает в режиме реального времени загрузку сетевого интерфейса, может запускаться с различными ключами, не буду останавливаться на этом подробно, в интернете есть информация на эту тему. Ставим:

# yum install iftop

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

# yum -y install htop # yum -y install atop

Вот как выглядит htop:

Для вывода информации о том, какие файлы используются теми или иными процессами, советую поставить утилиту lsof . Она скорее всего рано или поздно пригодится, когда будете диагностировать работу сервера.

# yum install wget bzip2 traceroute gdisk

На этом у меня все. Базовая настройка CentOS 7 закончена, можно приступать к установке и настройке основного функционала.

Настройка системной почты

В завершение настройки сервера CentOS 7 сделаем так, что бы почта, адресованная локальному root, отправлялась через внешний почтовый сервер на выбранный почтовый ящик. Если этого не сделать, то она будет локально складываться в файл /var/spool/mail/root . А там может быть важная и полезная информация. Настроим ее отправку в ящик системного администратора.

Подробно об этом я рассказал в отдельной статье — . Здесь кратко только команды и быстрая настройка. Ставим необходимые пакеты:

# yum install mailx cyrus-sasl cyrus-sasl-lib cyrus-sasl-plain

Рисуем примерно такой конфиг для postfix.

Cat /etc/postfix/main.cf ## DEFAULT CONFIG BEGIN ###################### queue_directory = /var/spool/postfix command_directory = /usr/sbin daemon_directory = /usr/libexec/postfix data_directory = /var/lib/postfix mail_owner = postfix inet_interfaces = localhost inet_protocols = all unknown_local_recipient_reject_code = 550 alias_maps = hash:/etc/aliases alias_database = hash:/etc/aliases debug_peer_level = 2 debugger_command = PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin ddd $daemon_directory/$process_name $process_id & sleep 5 sendmail_path = /usr/sbin/sendmail.postfix newaliases_path = /usr/bin/newaliases.postfix mailq_path = /usr/bin/mailq.postfix setgid_group = postdrop html_directory = no manpage_directory = /usr/share/man sample_directory = /usr/share/doc/postfix-2.10.1/samples readme_directory = /usr/share/doc/postfix-2.10.1/README_FILES ## DEFAULT CONFIG END ###################### # Имя сервера, которое выводит команда hostname myhostname = centos7-test.xs.local # Здесь по логике нужно оставлять только домен, но в данном случае лучше оставить полное имя сервера, чтобы в поле отправитель # фигурировало полное имя сервера, так удобнее разбирать служебные сообщения mydomain = centos7-test.xs.local mydestination = $myhostname myorigin = $mydomain # Адрес сервера, через который будем отправлять почту relayhost = mailsrv.mymail.ru:25 smtp_use_tls = yes smtp_sasl_auth_enable = yes smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd smtp_sasl_security_options = noanonymous smtp_tls_security_level = may

Создаем файл с информацией об имени пользователя и пароле для авторизации.

# mcedit /etc/postfix/sasl_passwd mailsrv.mymail.ru:25 [email protected]:password

Создаем db файл.

# postmap /etc/postfix/sasl_passwd

Теперь можно перезапустить postfix и проверить работу.

# systemctl restart postfix

К стандартному алиасу для root в /etc/aliases , добавьте внешний адрес, куда будет дублироваться почта, адресованная root. Для этого редактируем указанный файл, изменяя последнюю строку.

#root: marc

Root: root,[email protected]

Обновляем базу сертификатов:

# newaliases

Отправим письмо через консоль локальному руту:

# df -h | mail -s "Disk usage" root

Письмо должно уйти на внешний ящик. На этом настройка локальной почты закончена. Теперь все письма, адресованные локальному root, например, отчеты от cron, будут дублироваться на внешний почтовый ящик, причем с отправкой через нормальный почтовый сервер. Так что письма будут нормально доставляться, не попадая в спам (хотя не обязательно, есть еще эвристические фильтры).

Заключение

Мы выполнили некоторые начальные шаги по настройке сервера CentOS 7, которые я обычно делаю при подготовке сервера. Я не претендую на абсолютную истину, возможно что-то упускаю или делаю не совсем верно. Буду рад разумным и осмысленным комментариям и замечаниям с предложениями.

Полезно после базовой настройки сразу же подключить сервер к системе мониторинга. Либо настроить ее, если у вас еще нет. У меня есть подробный цикл статей по настройке мониторинга:

  1. , либо только подключение centos к мониторингу путем установки на него агента.
  2. В отдельной рубрике автора

CentOS - это свободный дистрибутив, основанный на исходном коде Red Hat Enterprise Linux, фактически, он создается с этих исходников практически без изменений, разработчики только вырезают весь брендинг Red Hat. Но в отличие от Red Hat, CentOS полностью бесплатна и получает регулярные обновления, спустя немного времени после выхода их для Red Hat поскольку они тоже собираются из исходного кода.

Очень часто CentOS применяется в качестве операционной системы для серверов. В одной из предыдущих статей мы рассматривали как выполняется . Сегодня будет рассмотрена настройка сервера CentOS 7 после установки. Мы рассмотрим все основные параметры, которые вам нужно будет изменить чтобы подготовить ваш сервер к работе.

1. Настройка статического IP адреса

Первое, что нужно сделать - это настроить сеть. На персональных компьютерах используется получение IP адреса по DHCP, и компьютер при каждом запуске будет иметь другой адрес, сервер должен всегда работать на одном адресе, поэтому мы присваиваем ему статический IP. Также нужно настроить DNS и шлюз по умолчанию. Но сначала установите утилиту net-tools:

yum install net-tools

Сначала посмотрим доступные сетевые интерфейсы и текущий IP адрес:

Теперь можно перейти к настройке интерфейса через файл /etc/sysconfig/network-scripts/ifcfg-enp0s3, например, с помощью редактора vi:

vi /etc/sysconfig/network-scripts/ifcfg-enp0s3

IPADDR = ваш_ip
GATEWAY = шлюз_для_доступа_к_сети
DNS1 = IP_адрес_DNS1
DNS2 = IP_адрес_DNS2

После внесения изменений этот файл будет выглядеть вот так:

Затем останется перезагрузить сеть чтобы применить новые настройки:

service network restart

Потом, при необходимости вы можете сменить IP адрес таким же способом.

2. Имя компьютера

Следующее что нам нужно сделать - это изменить имя компьютера. Текущее имя компьютера хранится в переменной HOSTNAME:

Чтобы его изменить вам нужно отредактировать файл /etc/hostname и заменить там старое имя на новое.

vi /etc/hostname

Также вы можете использовать команду hostnamectl:

hostnamectl set-hostname "имя_хоста"

3. Обновление CentOS

После установки принято обновлять программное обеспечение до самой новой версии, чтобы установить все обновления безопасности. Для обновления списка пакетов в репозиториях и установки новых версий выполните такую команду:

yum update && yum upgrade

4. Установите браузер

Во многих случаях приходится использовать CentOS из командной строки без графического интерфейса, поэтому может понадобиться браузер, чтобы найти что-либо в интернете или проверить работоспособность сайтов из командной строки. Для установки браузера links наберите:

yum install links

Вы можете найти и другие консольные браузеры для Linux, например, Lynx или Elinks.

5. Настройка часового пояса

Правильная настройка часового пояса очень важна для сервера. Это уберет путаницу в логах и позволит вашим приложениям отображать правильную дату и время. Для настройки используется утилита timedatectl.

Сначала получите список часовых поясов:

timedatectl list-timezones

Затем установите нужный, например, Europe/Kyiv:

timedatectl set-timezone Europe/Kyiv

Затем проверьте:

7. Настройка локали

Локаль определяет язык и кодировку, которая будет использоваться в вашей системе, например, для включения русского языка установите значение ru_RU.UTF-8

localectl set-locale LANG=ru_RU.UTF-8

Затем смотрим что получилось:

Затем устанавливаем раскладку клавиатуры:

localectl set-keymap us

8. Отключите SELinux

Набор политик SELinux предназначены для контроля доступа к файлам в системе Linux, но если вы не собираетесь их использовать, то такую возможность можно отключить. Для этого выполните:

sed -i "s/(^SELINUX=).*/SELINUX=disabled/" /etc/selinux/config

Затем перезагрузите компьютер и проверьте, действительно ли возможность была отключена:

9. Создайте пользователя

Использовать систему от имени суперпользователя небезопасно и тем более небезопасно оставлять открытым доступ к root аккаунту по ssh. Сначала создайте обычного пользователя и установите для него пароль:

useradd имя_пользователя
# passwd пароль

Затем добавьте пользователя в группу wheel, чтобы разрешать пользователю работать от имени администратора:

usermod -G wheel имя_пользователя

Теперь осталось подправить настройки sudo, для этого добавьте такую строчку, если ее там еще нет:

%wheel ALL = (ALL) ALL

10. Включите сторонние репозитории

Добавлять сторонние репозитории к производственному серверу - это не очень хорошая идея, и в некоторых случаях может привести к плохим последствиям. Однако иногда могут понадобиться программы, которых в официальных репозиториях нет. Поэтому рассмотрим как добавить несколько репозиториев.

Для добавления репозитория Enterprise Linux Repository (EPEL) выполните:

yum install epel-release
# rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm

10. Настройка SSH

Чаще всего нам приходится работать с серверами не напрямую, а по сети, через SSH. Обычно служба SSH уже установлена и активирована, но для ее правильной работы нужно выполнить несколько настроек. Сначала нужно настроить использование только безопасного протокола, для этого откройте файл /etc/ssh/ssh_config и удалите строчку Protocol 2,1. А вместо нее добавьте:

Также нужно отключить вход от имени суперпользователя:

PermitRootLogin no

11. Установите веб-сервер Apache

Если вы планируете использовать машину в качестве веб-сервера, вам понадобится Apache. С помощью него вы можете размещать веб-сайты, мультимедиа контент, клиентские программы и многое другое. Для установки выполните:

yum install httpd

Когда установка будет завершена, перед тем, как вы сможете перейти к работе нужно разрешить HTTP в брандмауере:

firewall-cmd --add-service=http
# firewall-cmd -permanent -add-port=3221/tcp
# firewall-cmd --reload

Теперь осталось добавить Apache в автозагрузку:

systemctl start httpd.service
# systemctl enable httpd.service

12. Установите PHP

PHP - это современный язык веб-приложений и скриптов. Он часто используется в качестве языка программирования общего назначения. Для установки выполните:

После установки необходимо перезапустить Apache:

echo -e "" > /var/www/html/phpinfo.php

Затем откройте созданный файл в браузере:

links http://127.0.0.1/phpinfo.php

13. Установка базы данных

MariaDB - это база данных, основанная на исходном коде MySQL. Дистрибутивы Linux на базе Red Hat используют MariaDB вместо MySQL. Базы данных - незаменимая вещь на сервере, поэтому настройка CentOS после установки должна включать ее установку. Для установки MariaDB наберите:

yum install mariadb-server mariadb

Затем запустите и добавьте в автозагрузку:

systemctl start mariadb.service
# systemctl enable mariadb.service

И разрешите в использование службы в брандмауэре:

firewall-cmd --add-service=mysql

Осталось запустить скрипт настройки:

/usr/bin/mysql_secure_installation

14. Установите GCC

GCC расшифровывается как GNU Compiler Collection, это набор компиляторов, которые считаются стандартом для сборки программ в Linux. Но по умолчанию он не поставляется с CentOS, поэтому для установки наберите:

Затем вы можете посмотреть версию GCC:

15. Установите Java

Java - это объективно-ориентированный язык программирования общего назначения. Он не устанавливается по умолчанию, поэтому настройка CentOS 7 после установки может включать и его установку. Для этого выполните:

yum install java

Затем проверьте версию:

Выводы

В этой статье мы рассмотрели как выполняется настройка сервера CentOS 7 после установки. Как видите, есть много элементарных действий, которые желательно сделать перед тем, как использовать сервер на производстве. Если у вас остались вопросы, спрашивайте в комментариях!