Завершить процесс в Linux – команды ps, kill и killall

Для Linux системного администратора довольно распространенной является задача удаленного запуска какой-либо команды или локального скрипта из одной рабочей станции или Linux сервера на другой удаленной Linux машине по SSH.

Что такое процесс?

Запуск таких программ, как ваш веб-браузер, фоновые процессы, связанные с вашей рабочей средой, и системные службы Linux — все это процессы.

Вы можете объединить процессы в две группы:

  • Процессы переднего плана — это те, которые были запущены или запущены пользователем. Они могут быть в окне терминала или графическим приложением.
  • Фоновые процессы — это все процессы, которые запускаются автоматически и не взаимодействуют с пользователями. Они не ожидают ввода от пользователей и не представляют результаты или вывод для них. Фоновые процессы — это такие вещи, как сервисы и демоны.

Если процессы на переднем плане находятся перед персоналом театра и актерами, то фоновые процессы — это закулисная команда «за кадром».

Когда процессы ведут себя неправильно или работают неправильно, они могут слишком долго загружать процессор, использовать вашу оперативную память или войти в жесткий вычислительный цикл и перестать отвечать на запросы. Графические приложения могут отказаться отвечать на щелчки мышью. Терминальные приложения могут никогда не вернуть вас в командную строку.

Использование командной оболочки для поиска и навигации

В ОС Линукс для навигации предназначена специальная утилита cd. Чтобы перейти в домашний каталог, достаточно ввести:

Для достижения того же самого результата можно использовать переменную среды $НОМЕ:

$cd$HOME

В Linux включены несколько команд из проекта GNU, которые можно использовать для проведения поиска в файловой системе: whereis commands – возвращает местоположение команды и ее справочной страницы; whatis commands – возвращает однострочное резюме из справочной страницы команды; locate file – возвращает местоположение всех файлов, удовлетворяющих условиям поиска (можно применять метасимволы); apropos subject – возвращает список команд относящихся к данной теме.

Завершить процесс в Linux – команды kill и killall

Завершить процесс в операционной системе Linux, зная его PID, можно командой kill. Стоит знать и понимать: команда kill предназначена для посылки сигнала процессу. По умолчанию, если мы не указываем какой сигнал посылать, посылается сигнал SIGTERM (от слова termination — завершение). SIGTERM указывает процессу на то, что необходимо завершиться. Каждый сигнал имеет свой номер. SIGTERM имеет номер 15. Список всех сигналов (и их номеров), которые может послать команда kill, можно вывести, выполнив kill -l. Чтобы послать сигнал SIGKILL (он имеет номер 9) процессу 2811, выполните в командой строке:

Читайте также:  Gdebi — программа для установки deb пакетов в Ubuntu.

kill -9 2811

При этом, сигнал SIGTERM может и не остановить процесс (например, при перехвате или блокировке сигнала), SIGKILL же выполняет уничтожение процесса всегда, так как его нельзя перехватить или проигнорировать.

Команда killall в Linux предназначена для «убийства» всех процессов, имеющих одно и то же имя. Это удобно, так как нам не нужно знать PID процесса. Например, мы хотим закрыть все процессы с именем chrome. Выполните в терминале:

killall chrome

Команда killall, также как и kill, по умолчанию шлет сигнал SIGTERM. Чтобы послать другой сигнал нужно воспользоваться опцией -s. Например:

killall -s 9 chrome

Нашли ошибку в тексте? Выделите фрагмент текста и нажмите Ctrl+Enter

SSH: Запуск Нескольких Команд

В большинстве случаем недостаточно удаленно запустить только одну команду по SSH.

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

Существует множество способов как это сделать, но я покажу наиболее популярные.

Запустить несколько команд на удаленном хосте по SSH:

$ ssh ПОЛЬЗОВАТЕЛЬ@СЕРВЕР ‘КОМАНДА1; КОМАНДА2; КОМАНДА3’

— или —

$ ssh ПОЛЬЗОВАТЕЛЬ@СЕРВЕР ‘КОМАНДА1 | КОМАНДА2 | КОМАНДА3’

— или —

$ ssh ПОЛЬЗОВАТЕЛЬ@СЕРВЕР << EOF КОМАНДА1 КОМАНДА2 КОМАНДА3 EOF

Дельный Совет: Слишком медленно происходит подключение по SSH? Это легко исправить! Избавитесь от задержки! Читать далее →

Примеры

Узнайте аптйм и сколько свободного места на диске:

$ ssh [email protected] ‘uptime; df -h’

Узнайте сколько используется памяти и среднюю нагрузку:

$ ssh [email protected] ‘free -m | cat /proc/loadavg’

Узнайте версию ядра, количество ядер CPU и сколько всего RAM:

$ ssh [email protected] << EOF uname -a lscpu | grep «^CPU(s)» grep -i memtotal /proc/meminfo EOF

Основные команды bash

В общем виде в Ubuntu команды имеют такой вид:

Программа — это сам исполняемый файл. Другими словами, это программа, которая будет выполняться по команде.

Читайте также:  42 команды Linux которые вы должны знать

Ключ — обычно у каждой программы свой набор ключей. Их можно найти в мануале к программе.

Значение — параметры программы: цифры, буквы, символы, переменные.

Напомним, что для выполнения команды нужно ввести её в командную строку — Ubuntu console или эмулирующий работу консоли терминал.

Рассмотрим основные команды консоли Ubuntu:

Промежуточная команда sudo (SuperUser DO — суперпользователь) позволяет запускать программы от имени администратора или root-пользователя.

Команда pwd (print working directory — вывести рабочую директорию) показывает полное имя рабочей директории, в которой вы находитесь.

Команда ls (list — список) выводит все файлы во всех папках рабочей директории.

Команда cd (change directory — изменить директорию) позволяет перейти в другую директорию.

Команда cp (copy — копировать) копирует файл.

Команда mv (move — переместить) помогает перемещать файлы.

Команда rm (remove — удалить) удаляет файлы и каталоги.

С помощью mkdir (make directory — создать директорию) можно создать новую директорию.

Команда man (manual — мануал) открывает справочные страницы с подробной информацией о команде.

Мы рассмотрели, как вызвать командную строку в Linux — открыть терминал или запустить консоль в Ubuntu, а также перечислили основные команды терминала Ubuntu.

Помогла ли вам статья? ДаНет 5 раз ужепомогла

Ошибки при сборке программы

Возможно, при компилировании у вас могут возникнуть проблемы с зависимостями. Для этого надо будет устанавливать необходимые пакеты. Обычно если у вас не хватает зависимостей, вы увидите во время выполнения команды ./configure ошибки. Если же вы не знаете какой зависимости не хватает, то тут выручит поисковик.

Ошибки при сборке программы

После того как вы установите необходимые зависимости, снова необходимо запустить ./configure. А может быть и так, что у вас не будет файла ./configure, попробуйте запустить другие скрипты:

./bootstrap ./

Ошибки при сборке программы

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

aclocal autoheader automake —gnu —add-missing —copy —foreign autoconf -f -Wall

Ошибки при сборке программы

В случае с дистрибутивами Arch/Manjaro необходимые пакеты вы можете подгрузить используя “Менеджер программ”, Предварительно не забыв подключить репозиторий AUR:

Пример необходимых зависимостей при установки в Manjaro программы Blender. Компиляция производилась с использованием файла PKGBUILD:

Преимущества и недостатки модели sudo

Как уже говорилось, утилита sudo, в частности предоставляемая ею модель предоставления привилегий является компромиссным решением между удобством, практичностью и безопасностью. Это даёт следующие преимущества:

Читайте также:  Настройка безопасности стека ELK с помощью Nginx

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

пароль суперпользователя может быть известен минимальному кругу лиц;

у любого пользователя в системе можно отобрать привилегии, при этом не меняя пароля суперпользователя;

ведётся учёт всех пользователей, имеющих привилегии суперпользователя (root);

командная оболочка имеет защиту от несанкционированного доступа;

настройки доступа ко всей системе (или даже сети) хранятся в одном файле.

Есть у утилиты sudo и недостатки. Но все они проявляются только в случае недобросовестного обслуживания системы. Например, самым основным недостатком является то, что вся система защиты будет сломана, если будет взломана одна-единственная учётная запись суперпользователя. И напротив — при наличии «лазейки» в одной из привилегированных учётных записей. Под угрозой оказывается учётная запись root.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Похожие посты:

  1. настройка сервера для учёта интернет-трафика по netflow
  2. Как запустить программу в фоне, без привязки к терминалу
  3. Установка SSL сертификата на nginx
  4. Переменные окружения в Linux

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

Порой, в системе встречаются текстовые файлы в сжатом виде и формате gz. Это могут быть конфигурационные файлы ядра либо логи программ. Открыть такие файлы можно тоже через терминал, не прибегая к распаковке. Для этого существует множество аналогов вышеназванных утилит с той лишь разницей, что они имеют приставку z: zgerp, zegrep, zcat, zless.

Давайте откроем сжатый файл в Linux для просмотра:

zcat

Или выполним просмотр сжатого файла с прокруткой:

zless test

Вот, пожалуй, и всё. Теперь вы точно в курсе, как правильно открывать и просматривать текстовые файлы в терминале Linux.

Источники: — -otkryt-tekstovyj-fajl-linux; — ; — -text-file.

Apache

Веб-сервер чуть медленнее, чем Nginx. Один из самых популярных в интернете.

Одна из ключевых особенностей — .htaccess файлы дополнительной конфигурации. Можно управлять отдельными папками. Размещаете этот файл в папке и прописываете в нём правила.

Этим хорош и плох Apache одновременно. Хорош, тем что можно гибко настраивать каждую папку, плох тем, что конфигурационные файлы разбросаны по разным местам.

service apache2 restart — перезапуск Apache

service apache2 reload — применение новых конфигов без перезапуска сервера.

service apache2 stop — остановка веб-сервера