Asking all remaining processes to terminate astra linux

Ubuntu висит при выключении / перезагрузке

Моя ситуация очень похожа на Завершение работы в течение 5 минут на Kubuntu 14.04, но я использую 14.10 с окружением gnome вместо KDE (Ubuntu с добавленным пакетом gnome не является родной версией). Это само по себе не должно быть причиной, так как у меня есть коллеги с тем же оборудованием и настройкой без проблем.

На подробном экране выключения выводится та же строка

В отличие от оригинального постера, у меня не установлен менеджер модемов, и ничего не выводится между nm-dispatcher и деактивацией подкачки для использования в качестве руководства: /

Если кто-нибудь знает какие-то вещи, которые нужно проверить, или способ принудительного отключения после 60 секунд зависания против 300, это было бы очень полезно.

4 ответа

В конце концов я нашел способ, который мог бы сделать принудительное отключение раньше, чем через 300 секунд. 300 секундный период ожидания указан в /etc/init.d/sendsigs Это скрипт завершения работы, который пытается уничтожить оставшиеся процессы, которые не были успешно завершены в предыдущих частях последовательности завершения работы. Найдите следующий код в скрипте:

Здесь указано максимальное время ожидания 300 секунд. Измените 300 на желаемое количество секунд, превышающее 10 (другие части скрипта уже указывают время ожидания 10 секунд). Вам нужно будет использовать sudo для изменения этого файла, так как у него нет прав на запись для обычного пользователя.

Это очень жесткая тактика, и это не хорошее долгосрочное решение. Если у вас есть сетевое хранилище файлов, которое может зависать при завершении работы или если какой-либо другой процесс (например, mySQL) мог законно ожидать завершения работы, не следуйте этому методу. Но для ноутбука или компьютера общего назначения со стандартной конфигурацией программного обеспечения, он, по крайней мере, позволит вам выключиться и перезагрузиться, не дожидаясь 5 минут каждый раз.

Источник

Неубиваемые процессы при выключении системы

При выключении наблюдаю следующую картину:

После чего окончательного выключения не происходит и приходится вручную выключать питание.

После «Will now halt.» должно выключаться, поэтому копай в сторону acpi.

Это не главная проблема. Главная проблема в выводе pstree и «/ is busy».

Видел такое недавно на свежеустановленной убунте, при этом она нормально отключалась.

Кстати, попробуй после этого Alt-SysRq-REISUB.

Если включить систему и довести загрузку только до окна входа в систему (GDM), то при выключении кнопкой в GDM (в правом нижнем углу) всё выключается нормально и никаких pstree и busy при выключении не выводится. Если же загрузиться в GNOME, то наблюдается вышеописанная проблема.

Кстати, попробуй после этого Alt-SysRq-REISUB.

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

Читайте также:  Надо ли переустанавливать windows при замене видеокарты

Источник

Как убить процесс Linux

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

В этой статье мы рассмотрим несколько самых распространенных способов завершить процесс Linux. Опишем подробно как происходит остановка процесса и как все сделать правильно.

Как происходит завершение процесса?

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

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

  • SIGINT — самый безобидный сигнал завершения, означает Interrupt. Он отправляется процессу, запущенному из терминала с помощью сочетания клавиш Ctrl+C. Процесс правильно завершает все свои действия и возвращает управление;
  • SIGQUIT — это еще один сигнал, который отправляется с помощью сочетания клавиш, программе, запущенной в терминале. Он сообщает ей что нужно завершиться и программа может выполнить корректное завершение или проигнорировать сигнал. В отличие от предыдущего, она генерирует дамп памяти. Сочетание клавиш Ctrl+/;
  • SIGHUP — сообщает процессу, что соединение с управляющим терминалом разорвано, отправляется, в основном, системой при разрыве соединения с интернетом;
  • SIGTERM — немедленно завершает процесс, но обрабатывается программой, поэтому позволяет ей завершить дочерние процессы и освободить все ресурсы;
  • SIGKILL — тоже немедленно завершает процесс, но, в отличие от предыдущего варианта, он не передается самому процессу, а обрабатывается ядром. Поэтому ресурсы и дочерние процессы остаются запущенными.

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

Сначала Ctrl+C, если это возможно, затем SIGTERM — он хоть и завершает процесс, но делает эту культурно, и только в крайнем случае SIGKILL. А теперь рассмотрим как убить процесс по pid Linux на практике. Если вы всегда используете SIGKILL, тогда на ум приходит такая картинка:

Как убить процесс Linux?

Для передачи сигналов процессам в Linux используется утилита kill. Ее синтаксис очень прост:

$ kill -сигнал pid_процесса

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

Допустим, у нас выполняется утилита ping. Мы хотим ее завершить с помощью kill. Тогда, сначала мы узнаем ее идентификатор с помощью команды ps:

ps aux | grep ping

В первой строчке отобразится сама утилита ping, а во второй сама программа ps. Берем нужный PID и завершаем процесс с помощью SIGTERM:

Читайте также:  Altium designer viewer linux

kill -TERM 20446

И только если после этой команды процесс продолжил висеть, а это вы можете проверить, выполнив ps. Только теперь можно выполнить SIGKILL:

kill -KILL 20446

Теперь снова проверяем:

Если процесс запущен от суперпользователя, то, естественно, вам нужно использовать sudo. Не всегда удобно уничтожать процесс по его PID, как минимум, потому, что вам этот PID нужно еще узнать. Мы могли бы нагородить сложных конструкций с использованием xargs, чтобы вычислять автоматически pid по имени процесса и сразу же его завершать, но в этом нет необходимости. Уже существуют специальные утилиты.

Как завершить процесс с помощью pkill

Утилита pkill — это оболочка для kill, она ведет себя точно так же, и имеет тот же синтаксис, только в качестве идентификатора процесса ей нужно передать его имя. Утилита сканирует директорию proc и находит PID первого процесса с таким именем, затем отправляет ему SIGTERM. Таким образом, вы можете убить процесс по имени Linux. Например, если мы хотим завершить тот же ping:

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

pkill -TERM ping

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

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

Как остановить процесс с помощью killall

killall работает аналогично двум предыдущим утилитам. Она тоже приминает имя процесса в качестве параметра и ищет его PID в директории /proc. Но эта утилита обнаружит все процессы, с таким именем и завершит их. Например:

Как видите, запущено несколько процессов, осталось остановить процесс Linux с помощью killall:

Команда завершит все запущенные утилиты ping, вы можете убедиться в этом еще раз выполнив pgrep:

Выводы

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

Источник

Как просмотреть и завершить процесс в Astra Linux

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

Системный монитор

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

Первая вкладка системного монитора отобразить информацию о всех запущенных процессах. Имя процесса, пользователь который запустил, загрузку ЕЦ, память, разд.память и заголовок. Для того чтобы завершить процесс или изменить приоритет кликаем ПКМ и выбираем необходимое дествие.

Перейдя во вкладку «Общая загрузка системы» можно узнать на сколько загружен процессор, паять и сеть.

Просмотр и завершение процессов через терминал

Все тоже самое можно сделать с помощью команд. Для этого запускаем терминал.

Для завершения процессов необходимо получить права суперпользователя с помощью команды.

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

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

После чего обновляем список процессов и смотрим завершился ли он.

Источник

Читайте также:  Как компилировать make линукс

Use killall and kill Commands to Stop Processes on Linux

killall is a tool for terminating running processes on your system based on name. In contrast, kill terminates processes based on Process ID number (PID). kill and killall can also send specific system signals to processes.

Use killall and kill in conjunction with tools including Process Status, ps , to manage and end processes that have become stuck or unresponsive.

Throughout this guide, replace [process name] in each example with the name of the process you wish to terminate.

Usage

How to Use killall

The killall command takes the following form:

killall will terminate all programs that match the name specified. Without additional arguments, killall sends SIGTERM , or signal number 15, which terminates running processes that match the name specified. You may specify a different signal using the -s option as follows:

This sends the SIGKILL signal which is more successful at ending a particularly unruly processes. You may also specify signals in one of the following formats:

How to Use kill

The kill command terminates individual processes as specified by their PID.

Commands take the following form:

Without options, kill sends SIGTERM to the PID specified and asks the application or service to shut itself down. This is discussed further in the following section.

Multiple PIDs and alternate system signals can be specified within a single kill command. The following examples all send the SIGKILL signal to the PID specified:

System Signals

The kill command does not terminate a process directly. Rather, a signal is sent to the process where the process will have instructions to follow if it receives a given signal. The man pages provide further reference of all available signals:

To simply list all available signals without their descriptions:

If you need to convert a signal name into a signal number, or a signal number into a signal name, use the following as examples:

Find Running Processes

Use a utility like htop or top to view a real time list of process and their consumption of system resources.

Use the ps command to view processes that are currently running and their PIDs. The following example filters the list of all processes that are currently running for the string emacs using grep:

The number listed in the second column from the left is the PID, which is 3896 in the case of the emacs process. The grep process will always match itself for a simple search, as in the second result.

Once you have obtained the PID or process name, use killall or kill to terminate the process as above.

Another option to find the PID is though pgrep .

Verify Process Termination

Adding the -w option to a killall command causes killall to wait until the process terminates before exiting. Consider the following command:

This example issues the SIGTERM system signal to a background process with a name that matches irssi . killall will wait until the matched processes ends. If no process matches the name specified, killall returns an error message:

This page was originally published on Monday, November 29, 2010.

Источник

Оцените статью