Архив рубрики: Публикации

Использование консоли Linux для завершения процессов

Иногда уничтожение процесса — единственный способ избавиться от него. Несмотря на резкое название, «убить» процесс просто означает «заставить его выключиться». Вот как это сделать из командной строки Linux или macOS.

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

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

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

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

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

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

Гуманный ответ

«Убить» процесс просто означает «заставить процесс завершиться». Это может быть необходимо, если процесс отказывается отвечать.

Linux предоставляет команды kill, pkill и killall чтобы позволить вам сделать именно это. Эти команды могут использоваться с любым типом процесса, графической или командной строки, переднего плана или фона.

Команда завершения

Чтобы использовать kill, вы должны знать идентификатор процесса (PID) процесса, который хотите завершить. Команду ps можно использовать для поиска PID процесса.

Чтобы ps поиск по всем процессам, используйте опцию -e (все процессы). Желательно передавать результаты через less, их будет довольно много. Введите ps, пробел, -e, пробел, | (символ канала), другой пробел, а затем введите less. Нажмите Enter, чтобы выполнить команду.

ps -e | less

Это даст вам список процессов, который выглядит как на скриншоте ниже. Вы можете искать вперед less используя клавишу / и вы можете искать назад, используя ? ключ.

Чтобы сосредоточиться на интересующем вас процессе, направьте вывод ps через grep и укажите имя — или часть имени — процесса.

ps -e | grep shutter

Найдя PID процесса, который вы хотите завершить, передайте его команде kill в качестве параметра. Чтобы завершить процесс shutter определенный предыдущей командой, используйте эту команду:

kill 2099

Команда kill является тихим убийцей — она ​​не дает никаких отзывов, если прошла успешно.

Команда pkill

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

В качестве сети безопасности вы можете использовать команду pgrep перед использованием команды pkill. Команда pgrep также принимает поисковый запрос. В нем будет указан PID каждого процесса, который соответствует поисковому запросу. Это безопасно, потому что pgrep не будет выдавать какой-либо сигнал уничтожения процессам, и если вы неправильно наберете поисковый запрос, вы не убьете другой процесс по ошибке. Вы можете убедиться, что поисковый pkill правильно продуман, прежде чем передать его в pkill. И pkill и pgrep обрабатывают поисковый pkill одинаково. Их обращение настолько схоже, что они используют одну и ту же справочную страницу.

Предположим, что есть процесс с «subq» в его имени. Мы будем использовать команду ps -u dave | grep чтобы заглянуть за занавес. Вы можете видеть, что «subq» будет соответствовать этому процессу и только этому процессу. Это было просто, чтобы вы могли увидеть полное название процесса.

ps -u dave | grep subq

Давайте предположим, что наш пользователь этого не сделал; все, что они знают, — это имя процесса, содержащее подстроку «subq». Они используют pgrep чтобы проверить, что существует только одно совпадение с поисковым термином. Затем они используют этот поисковый термин вместе с pkill.

pgrep subq



pkill subq

Вы можете использовать pkill чтобы убить несколько процессов одновременно. Здесь пользователь запускает pgrep чтобы проверить, сколько процессов запущено Chrome. Они используют pkill чтобы убить их всех. Затем они проверяют с помощью pgrep что все они были удалены.

pgrep chrome



pkill chrome



pgrep chrome

Если запущено несколько процессов с одним и тем же именем, но вы не хотите уничтожать их все, вы можете использовать pgrep с параметром -f (командная строка), чтобы определить, какой процесс какой. Простым примером будут два процесса ping . Вы хотите убить одного из них, но не другого. Вы можете использовать их командные строки, чтобы различать их. Обратите внимание на использование кавычек для переноса параметра командной строки.

pgrep -f "ping 192.168.4.22"



pkill -f "ping 192.168.4.22"

Команда killall

Предупреждение . В операционных системах Solaris и OpenIndiana команда killall уничтожит все принадлежащие вам процессы. Если вы являетесь пользователем root или вы выпустили sudo killall вы перезагрузите компьютер! Во время исследования этой статьи это поведение было подтверждено последней версией OpenIndiana Hipster 2018.10.

Команда killall работает аналогично команде pkill но с определенным отличием. Вместо передачи поискового запроса команде необходимо указать точное имя процесса.

Вы не можете предоставить частичное совпадение с именем процесса; Вы должны предоставить полное имя процесса, как показано:

killall shutt

killall shutter

Опция -y (младше чем) позволяет вам завершать процессы, которые выполнялись менее указанного периода. Период указан числами, за которыми следует одна из следующих единиц:

  • s (секунды)
  • m (минуты)
  • h (часы)
  • d (дни)
  • w (недели)
  • M (месяцы, примечание, заглавная «М»)
  • y (годы)

Чтобы убить только что запущенный процесс под названием ana и оставить все старые экземпляры ana работающими, вы можете использовать следующие параметры с killall, если бы вы реагировали в течение двух минут:

killall -y 2m ana

Опция -o (старше чем) позволяет вам убивать процессы, которые выполнялись дольше указанного периода. Эта команда уничтожит все ssh соединения, которые работали дольше суток:

killall -o 1d sshd

Эти команды позволят вам точно и безопасно идентифицировать и завершать ошибочные процессы.

Всегда будьте осторожны. Во-первых, убедитесь, что процесс, который вы собираетесь убить, действительно тот, который вы хотите. Во-вторых, проверьте дважды — будьте осторожны и убедитесь, что целевой процесс — это тот, который вы хотите завершить. Приступить к прекращению процесса, как только вы будете удовлетворены.

 



2019-05-14T11:57:13
Вопросы читателей

Роутер TP-LINK TD-W8151N: расскажем о самой модели и о её настройке

Компания TP-Link производит роутеры, которые дружат с технологией ADSL (подключение к интернету через телефонную линию). Одно из компактных и недорогих решений — TP-LINK TD-W8151N. Об этой модели и поговорим: какие у неё особенности и как она настраивается.

Читать

Если интернет от Теле2 стал тормозить или вовсе исчез — что делать

Без интернета как без рук. Если вдруг он пропадает или начинает очень медленно работать, человека тут же охватывает паника. Но стоит ли ей поддаваться? Есть несколько решений, которые помогут быстро исправить ситуацию. Что сделать, если вы абонент Теле2 и мобильный «инет» от оператора у вас завис?

Читать

Делаем свой VPN-сервер — как настроить туннельное подключение своими силами

Вопрос о создании собственного VPN-сервера сейчас стоит как никогда остро. Эта технология поможет вам добиться повышенной безопасности и анонимности в сети. Ниже мы рассмотрим основы создания VPN-серверов и подключения к ним с разных платформ: Windows, Mac OS X и Linux, а также со смартфонов под Android и iOS.

Читать

Что делать, если Windows 10 застряла в режиме планшета

Режим планшета на устройстве Windows 10 был представлен, чтобы сделать Windows 10 более удобной для пользователей на устройствах 2-в-1, таких как Surface Pro и Surface Book. Однако, если ваша Windows 10 застряла в режиме планшета и не может отключить режим планшета, эти исправления помогут решить проблему сразу же.

Режим планшета полезен, когда вы используете только дисплей. Однако, когда вам нужно использовать клавиатуру, она исчезает автоматически. Даже тогда некоторые пользователи сообщали, что не могут выйти из режима планшета.

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

  1. Проверить настройку полноэкранного режима
  2. Выполнить полное отключение
  3. Выполнить перезагрузку двумя кнопками на устройствах Surface
  4. Отключить режим планшета через реестр
  5. Выполнить восстановление системы
  6. Изменить настройки на вкладке «Система» или в Центре действий

1] Проверить настройку полноэкранного режима.

  1. Нажмите комбинацию кнопок WINKEY + I, чтобы открыть приложение настроек Windows 10.
  2. Перейдите по следующему пути: Персонализация →  Пуск.
  3. Прокрутите вниз, чтобы отключить опцию — Использовать Пуск в полноэкранном режиме.
  4. Перезагрузите компьютер и проверьте, актуальна ли еще проблема.

Если проблема останется даже после отключения режима планшета в Windows 10 в настройках, перейдем к следующему решению.

2] Выполнить полное отключение

Откройте CMD от имени администратора и выполните следующую команду:

shutdown /s /f /t 0

Это немедленно выключит ваш компьютер. Как только он выключен, подождите минуту, прежде чем снова его включать.

3] Выполнить двухкнопочный перезапуск на Surface устройствах

  1. Нажмите и удерживайте кнопку питания около 30 секунд.
  2. Отпустите кнопку через 30 секунд.
  3. После этого нажмите и удерживайте кнопку увеличения громкости + питания в течение 20 секунд.
  4. Дисплей будет мигать несколько раз, но вы должны держать эти кнопки нажатыми.
  5. Это выключит ваше устройство Surface.

Через несколько минут снова включите устройство Surface. Это должно исправить вашу проблему.

4] Отключить режим планшета через реестр

В меню «Пуск» выполните поиск «Редактор реестра». Выберите «Редактор реестра» и откройте, выбрав «Открыть как администратор».

После открытия редактора реестра перейдите к следующему ключу.

ComputerHKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionImmersiveShell

Щелкните правой кнопкой мыши запись DWORD с именем SignInMode. Дважды щелкните по нему и установите его значение данных равным 1, а значение Base — шестнадцатеричным.

Нажмите на ОК.

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

Теперь щелкните правой кнопкой мыши запись DWORD с именем TabletMode. Дважды щелкните по нему и установите его значение данных равным 0, а основание — шестнадцатеричным

Нажмите на ОК.

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

5] Выполнить восстановление системы

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

6] Изменить настройки на вкладке «Система» или в Центре действий

  1. Открыть настройки приложения.
  2. Перейдите в Система> Режим планшета.
  3. Прокрутите вниз, чтобы установить режим «Когда я вхожу в систему».
  4. Перезагрузите компьютер и проверьте наличие проблемы.

Также вы можете попробовать отключить режим планшета для Центра поддержки. Опубликуйте это, проверьте, не застряла ли Windows 10 в режиме планшета или вы вернулись к стандартному рабочему столу.

Я надеюсь, что одно из этих решений помогло вам выйти из режима планшета в Windows 10. Сообщите нам об этом в комментариях.



2019-05-13T14:36:34
Вопросы читателей

Настройка работы модуля mod_rewrite веб-сервера Apache

Очень часто при администрировании веб-сервера Apache возникает необходимость настройки режимов обработки адресов URL. Например необходимо, чтобы запросы автоматически перенаправлялись с одного адреса на другой. Также, если нужно, чтобы веб-приложения работали на «чистых» ссылках, то для этого также необходима настройка модуля mod_rewrite. В данной статье на простых примерах будут рассмотрены базовые приёмы обработки перезаписи URL, реализуемой модулем mod_rewrite, на основе которых можно легко построить свои собственные правила и режимы обработки ссылок.

Включение модуля mod_rewrite и управление его работой

Обычно модуль mod_rewrite уже имеется в базовой поставке Apache и устанавливать его дополнительно не нужно. Остаётся его только включить. Например, для Ubuntu:

$ sudo a2enmod rewrite

Управление работой самого модуля mod_rewrite осуществляется при помощи файла .htaccess. Этот файл предназначен для активации и задействования директив веб-сервера Apache индивидуально для каждого из виртуальных хостов (или доменов).

Итак, для начала необходимо удостовериться, что Apache разрешает обработку файлов .htaccess. В конфигурационном файле Apache /etc/apache2/apache2.conf директива AllowOverride должна иметь значение All в блоке:

Options Indexes FollowSymLinks

AllowOverride All

Require all granted

Следует заметить, что вместо «/var/www/html» может быть указан и другой каталог, в зависимости от того, как и где настроено расположение корневого каталога виртуальных хостов Apache. Также необходимо проверить, что в файле /etc/sites-enabled/000-default.conf не содержится лишних директив (а лучше их убрать) AllowOverride, противоречащих тем, что установлены в файле apache2.conf. После сохранения всех изменений необходимо перезапустить веб-сервер:

$ sudo systemctl restart apache2

Далее, в начало файла .htaccess нужно добавить директиву:

RewriteEngine on

Она указывает, что Apache должен использовать модуль mod_rewrite для обработки условий и правил перезаписи URL.

Файл .htaccess может быть создан, как уже отмечалось, отдельно для каждого из виртуальных хостов. Обычно его помещают в корневой каталог, в котором находятся файлы требуемого виртуального хоста. В данном руководстве для расположения файла .htaccess будет использоваться каталог /var/www/html/ для глобальной обработки URL на веб-сервере.

Пример создания простой страницы и перезаписи URL для неё

Для демонстрации работы модуля mod_rewrite по перезаписи URL страницы, можно эту самую страницу создать (в самом простом варианте) и применить к ней (точнее, к её адресу) простой шаблон перезаписи.

Итак, нужно создать файл HTML-страницы hello.html, которая будет размещаться в каталоге /var/www/html/hello.html со следующим содержимым:

<html>

   <head>

      <title>Hello, World</title>

   </head>

   <body>

     <h1>Hello, Worl</h1>

   </body>

</html>

Эта страница будет доступна по адресу ip_server/hello.html. Здесь «ip_server»– это IP-адрес сервера, на котором работает Apache. Вместо IP-адреса также можно использовать и доменное имя при должных настройках.

Особенность в том, что эта страница доступна только если вводить адрес, содержащий «hello.html». Любое другое написание, например «hello» приведёт к ошибке 404 — нет такого документа. Чтобы иметь возможность получать доступ к странице hello.html по «hello» нужно всего лишь настроить перезапись адреса. Редактирование файла .htaccess:

$ sudo nano /var/www/html/.htaccess

После ранее добавленной строки «RewriteEngine on» нужно добавить следующую:

RewriteRule ^hello$ hello.html [NC]

Только после этих изменений в веб-браузере по адресу ip_server/hello страница hello.html будет доступна.

Синтаксис добавленной записи следующий:

  •  ^hello$ — это шаблон подстановки, который должен совпадать с частью URL, вводимого в веб-браузере. Здесь символ (^) обозначает начало фразы шаблона, а символ ($) — его окончание;
  • hello.html – это действительный путь к исходной странице hello.html;
  • [NC] – флаг, отключающий зависимость написания URL символами разного регистра.

В результате, теперь страница hello.html будет доступна по следующим адресам: ip_server/hello, ip_server/Hello и ip_server/hello.html.

Таким образом и происходит перезапись URL модулем mod_rewrite по инструкциям из .htaccess.

Применение общих шаблонов перезаписи

Выражения в файле .htaccess, применённые в предыдущей главе — это ничто иное, как правила перезаписи. В общем виде они имеют следующий синтаксис:

RewriteRule pattern substitution [flags]

Здесь RewriteRule – это, собственно, сама директива, pattern – шаблон, задаваемый регулярным выражением. Он предназначен для поиска подстроки. Далее, substitution – это целевой действительный URL. А flags – флаги опций, которые задают определённое специфическое поведение правил.

Самым наглядным и общим примером является перезапись (точнее, упрощение) строки дополнительного запроса. Они используются веб-приложениями для передачи параметров скриптам, по которым нужно получить соответствующий результат. Строки запроса начинаются с символа «?» и заканчиваются символом «&». Например:

http://my-site.ru/results.php?item=shoes&season=summer

Если этот URL очистить с помощью правил перезаписи, то упрощённый вариант будет выглядеть примерно так:

http://my-site.ru/shoes/summer

Это куда как более удобно для восприятия. Подобные результаты очистки URL достигаются наиболее часто используемыми шаблонами перезаписи:

  • простая замена;
  • группирование и сопоставление;
  • сопоставление наборов символов;

В первом случае нужно создать следующее правило:

RewriteRule ^shoes/summer$ results.php?item=shoes&season=summer

В результате подстрока URL «results.php?item=shoes&season=summer» будет переписываться строкой «shoes/summer».

Второй случай используется, когда нужно оптимизировать используемое правило так, чтобы оно являлось универсальным для разных строк запросов, т. е. с разными параметрами. Для данного примера пусть требуется, чтобы правило обрабатывало строку запросов для нескольких сезонов, а не только для «summer». Для этого нужно сначала определить набор самих параметров, которые должны разделяться символом вертикальной черты «|». После этого можно в регулярном выражении ссылаться на эту группу параметров, используя переменную $1, где «1» — это номер набора. Например:

RewriteRule ^shoes/(summer|winter|autmn|spring) results.php?item=shoes&season=$1

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

  1. составить регулярное выражение, определяющее все буквенные и цифровые символы, которые могут повторяться неограниченное число раз. Такое выражение заключается в квадратные скобки, объединяемыми знаком плюса «+»;
  2. это выражение нужно заключить в группу (в круглые скобки) и присвоить его переменной $2 – группа №2.

В результате получится следующее правило:

RewriteRule ^([A-Za-z0-9]+)/(summer|winter|autmn|spring) results.php?item=$1&season=$2

Полученное правило перепишет URL:

http://my-site.ru/results.php?item=hat&season=summer

в следующую чистую ссылку:

http://my-site.ru/hat/summer

Задание условий RewriteCond для работы правил

Если задать определённое условие с помощью директивы RewriteCond, то если оно выполняется, Apache запустит выполнение правила, следующего сразу за этим условием. Синтаксис RewriteCond следующий:

RewriteCond tststr condition [flags]

Здесь tststr – строка, с которой сравнивается условие. А condition – шаблон, с которым сравнивается строка, заданная в tststr. Дополнительные параметры задаются с помощью флагов flags.

В качестве примера можно создать условие, при котором все запросы к несуществующим страница будут перенаправляться например, на домашнюю страницу:

RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule ^admin/(.*)$ /admin/home

Здесь выражение %{REQUEST_FILENAME} выполняет проверку строки запроса. Далее, оператор (!), означающий условие «не», предписывает, что отсутствие требуемого в запросе файла (-f) должно указывать Apache запускать в обработку следующее за этим условием правило перенаправления. Далее выполняется само правило переадресации, которое перенаправляет все запросы на страницу /admin/home.

Пример блокировки всего трафика, кроме поступающего с определённого IP-адреса:

RewriteCond %{REMOTE_ADDR} !^(12.38.57.123)$

RewriteRule (.*) - [F, L]

Здесь флаг «F» запрещает доступ, а флаг «L» – указывает, что данное правило должно выполниться последним.

Для обратного эффекта, т. е. для разрешения запросов с любых IP-адресов кроме 12.38.57.123 нужно перед регулярным выражением записи IP-адреса в определении условия убрать оператор «не» — символ восклицательного знака (!):

RewriteCond %{REMOTE_ADDR} ^(12.38.57.123)$

RewriteRule (.*) - [F, L]

Заключение

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

Apache.

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



2019-05-13T12:11:24
Apache