Управления программами что это в линуксе

Содержание

Менеджер пакетов в Ubuntu

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

Для чего нужен менеджер приложений в Ubuntu

Меню приложений ubuntu – относительно молодое программное обеспечение. Его история разработки универсальна. В 2009 году разработчики системы Kинкус для разрешения частой пользовательской путаницы поставили себе цель создать продукт, который поможет систематизировать работу с файлами и приложениями.

Осенью 2010 года началось тестирование менеджера процессов ubuntu, а уже в начале 2011 года его выпустили как основную утилиту операционной системы Линукс. За последующие 4 года была выпущена серия новых усовершенствованных версий этого программного обеспечения. Однако разработка заканчивается в 2015 году, когда убунту переходит на работу с GNOME. Переход был связан с проблемой установки некоторых версий центра приложения (у пользователя появлялась надпись установщика пакетов: «загрузка приложения остановлена»).

Командная строка Linux для новичков

К основным возможностям этого элемента следует отнести:

  1. Возможность простого управления приложениями и файлами.
  2. Способность их синхронизации между различными компьютерами.
  3. При наличии учетной записи (аккаунта) существует возможность комментирования, рекламы, покупки разных программ, приложений и других программных обеспечений.
  4. Способность разрабатывать свои программы на данной платформе.

В стандартных настройках это программное обеспечение установлено для Ubuntu и Xubuntu.

Замечание! Чтобы установить этот менеджер для других версий Линукс, следует ввести команду: «sudo apt-get install software-center».

Если возникает проблема пустого «dash», то нужно очистить кеш программ с помощью команд:

Как работать с менеджером программ Ubuntu

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

Nautilus

Интерфейс этого программного обеспечения достаточно прост. Войти в него можно по любой ссылки из любого источника.

Алгоритм работы легкий. Открыть меню (каталог по-другому), нажав на соответствующий значок. А дальше возможно разнообразие действий:

  1. Боковая панель. Поскольку ее пункты совпадают с папками в основном каталоге, то эти 2 раздела взаимосвязаны. Пользователь может сюда добавлять свои папки, прост перетащив их на эту панель. Удалять ненужные каталоги следует аналогично, при этом нажимая на клавиатуре кнопку «Delete».
  2. Другие папки: места, сведения, дерево, история, заметки позволяют оставлять для себя важную информацию. При этом она систематизируется по дате.
  3. Эмблемы. Они также нужны для систематизации. Однако в этом случае она будет ручной. Преимущество этого раздела: пользователь сам распределяет нужную ему информацию по папкам с помощью различных картинок. Перетащить эмблемы можно просто с помощью мышки или же через свойства файла, выбрав необходимый пункт.

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

Для автозапуска съемных носителей нужно внести изменений в настройках Линкуса через вкладки «Правка» и «Носители».

Synapric

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

Войти сюда можно через основную систему, с помощью вкладки «Администрирование», нажав соответствующий пункт.

Все внесенные и действующие пакеты помечены зеленым цветом, а недействующие – белым оттенком.

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

Также с помощью него можно произвести автозапуск необходимых программ через вкладку системы: «Параметры» и окна «Запускаемые приложения».

Что делать, если требуется установка ненадежных пакетов Ubuntu

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

Причины, по которым Ubuntu Software Center не работает

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

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

Если же имеется лишь только одна косвенная проблема загрузки, когда компьютер запрашивает ненадежные программы, то решить ее довольно просто: нужно ввести команду «sudo aptitude update». Будут представлены все ошибки, для каждой нужно прописать фразу: «sudo apt-key adv – recv-keys – keyserver», а затем еще раз пропечатать начальное выражение и перезапустить менеджер пакетов. Он снова заработает!

Заключение

Менеджер приложений – важное программное обеспечение для любой операционной системы, в том числе и линкус. Однако в убунту есть некоторые специфические особенности, которые следует учитывать при работе с ней.

Источник: iwsm.ru

Кунг-фу стиля Linux: программное управление окнами

Операционными системами, которые основаны на Linux и Unix и работают в текстовом режиме, очень легко управлять. Учитывая то, как работает подсистема ввода-вывода Unix, программам, ожидающих на входе то, что вводится с клавиатуры, можно передавать любые данные. А то, что программы обычно выдают на экран, можно перехватить и подвергнуть дальнейшей обработке.

Вся операционная система устроена именно так. А вот графические программы, использующие возможности X11, это — уже совсем другое дело. Можно ли управлять графическими программами так же, как управляют программами с текстовым интерфейсом? Точный ответ на этот вопрос зависит от того, что именно понимать под «управлением программами». Но если не вдаваться в детали, то на этот вопрос можно дать положительный ответ.

Как это обычно бывает в Linux и Unix, существует множество способов решения одной и той же задачи. И наша задача — не исключение. Если вам нужны средства для точного управления программами, то можно сказать, что добиться этого можно с помощью утилит, задействующих специальный механизм, называемый D-Bus.

Этот механизм позволяет программам так оформлять данные и методы, что ими могут пользоваться другие программы. В идеальном мире программы, которыми нужно управлять, применяют D-Bus, но в реальности всё далеко не так просто. Поэтому сегодня мы поговорим о том, как управлять самыми разными графическими программами в Linux.

Существует несколько утилит, которые позволяют каким-то способом управлять X-окнами. Например, есть инструмент xdo, о котором вы, наверняка слышите не особенно часто. Более популярным средством из этой сферы является утилита xdotool, о которой я расскажу. Кроме того, похожим функционалом обладает wmctrl. Есть ещё программа autokey, которая родственна популярной Windows-программе AutoHotKey.

Все переводы серии

Утилита xdotool

Пожалуй, утилита xdotool является самой популярной программой, используемой в тех случаях, когда надо управлять приложениями с графическим интерфейсом. Это — нечто вроде «швейцарского ножа» для системы X. Но эта утилита использует достаточно сложные конструкции командной строки. Это, вероятно, является следствием того, что она очень много всего умеет.

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

Хотя xdotool можно запускать, указывая файл, содержащий необходимые команды, чаще всего можно видеть передачу аргументов этой утилите из командной строки. При её использовании сначала находят нужное окно, а потом выполняют с ним какие-то действия. Найти окно можно, зная его имя. Можно поступить и иначе. Например — выбрать то окно, по которому щелкнет пользователь.

Рассмотрим следующий пример:

echo Pick Window; xdotool selectwindow type «Hackaday»

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

Среди них, например, изменение активного окна и переключение между рабочими столами.

Кстати, надо отметить, что для того чтобы пользоваться некоторыми из возможностей xdotool, нужно чтобы было установлено расширение X-сервера XTest. Я обычно обнаруживаю это расширение уже установленным. Но если вы столкнулись с тем, что у вас что-то не работает — проверьте X-сервер и узнайте о том, загружено ли это расширение.

Утилита wmctrl

Программа wmctrl обладает возможностями, похожими на возможности xdotool, но она, в основном, взаимодействует с оконным менеджером. Единственная проблема тут заключается в том, что она использует стандартный интерфейс к оконному менеджеру. Не все оконные менеджеры поддерживают полный набор возможностей wmctrl. Это, кстати, одна из тех особенностей Linux, которая является причиной того, что распространение программ для этой ОС может превратиться в настоящее приключение. Нет двух одинаковых систем, а некоторые системы даже и близко друг на друга не похожи.

Утилита wmctrl особенно хороша для решения таких задач, как переключение рабочих столов и максимизация окон. Но она способна и на многое из того, что умеет xdotool.

Использование большого монитора

Я недавно поменял свою конструкцию из трёх мониторов на очень большой 4K-монитор. Это 43-дюймовый монстр обладает разрешением в 3840×2160 пикселей. Всё это очень хорошо, но мне не хватало возможности поместить окно одной программы на один монитор, а окно другой (или третьей) программы — на другой монитор.

Читайте также:
Auslogics duplicate file finder что это за программа

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

Работа на большом мониторе

Я сразу подумал о том, чтобы использовать для решения этой задачи xdotool и привязать соответствующие действия к клавиатурным сокращениям, используя возможности KDE. Например, сочетание клавиш CTRL+ALT+1 могло бы закреплять текущее окно в правом верхнем углу экрана, а сочетание CTRL+ALT+0 могло бы максимизировать окно. Сочетание CTRL+ALT+6 позволяло бы окну занять всю правую половину экрана, а сочетание CTRL+ALT+8 должно было размещать окно в верхней половине экрана.

Вот как выглядела моя первая попытка создания команды, соответствующей клавиатурному сокращению CTRL+ALT+1 :

xdotool getwindowfocus windowmove 0 0 windowsize 1920 1080

Тут реализована следующая идея: находим текущее окно, перемещаем его в позицию 0,0, а потом меняем его размер так, чтобы оно заняло бы четверть экрана. Числа, жёстко заданные в коде, это, конечно, не очень хорошо. Но если речь идёт о работе на одном компьютере, то это вполне допустимо.

Размер окна, если вам так удобнее, можно установить и по-другому. Например — в виде 50% 50% . Причём, этот параметр можно настроить с использованием подобного значения, а вот в других макросах, где окно перед изменением его размера перемещается в позицию, отличающуюся от 0,0, всё равно придётся использовать жёстко заданные значения.

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

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

wmctrl -r :ACTIVE: -b remove,maximized_horz,maximized_vert ; xdotool getwindowfocus windowsize 1920 1080 windowmove 0 0

Тут, с помощью wmctrl, отключается максимизация активного окна, а после этого в дело вступает xdotool. Правда, если хочется использовать исключительно wmctrl, то можно применить такую команду:

wmctrl -r :ACTIVE: -b remove,maximized_horz,maximized_vert -e 0,0,0,1920,1080

В опции -e задаются параметры перемещения окна. Причём, обратите внимание на то, что первый 0 — это не опечатка. Значение этого параметра позволяет задавать свойство окна «gravity», которое обычно устанавливается в 0. Следующие четыре числа — это позиция и размер окна.

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

Два окна на экране

Конечно, можно написать простой bash-скрипт, предназначенный для решения всех этих задач. Можно предусмотреть в нём механизмы, позволяющие программе адаптироваться к изменению размеров экрана без вмешательства пользователя в код программы. В скрипте можно даже сделать так, чтобы, например, окна не перекрывались бы, можно и воспользоваться другими специальными эффектами.

Вот пример подобного скрипта:

#!/bin/bash # Это надо изменить вручную или воспользоваться данными xrandr #SCREENX=3840 #SCREENY=2160 # Если у вас нет xrandr, awk, или, если вы не смогли подобрать правильные команды, # просто задайте нужные параметры вручную SCREENX=`xrandr -q | awk -F'[ ,]+’ ‘/current/ < print $8 >’` SCREENY=`xrandr -q | awk -F'[ ,]+’ ‘/current/ < print $10 >’` # Тут, если надо, можно настроить точную позицию окна HALFX=$(( SCREENX/2 )) HALFY=$(( SCREENY/2 )) if [ $# -ne 1 ] then ARG=»?» else ARG=»$1″ fi case «$ARG» in nw) TOP=0 LEFT=0 W=$HALFX H=$HALFY ;; n) TOP=0 LEFT=0 W=$SCREENX H=$HALFY ;; ne) TOP=0 LEFT=$HALFX W=$HALFX H=$HALFY ;; w) TOP=0 LEFT=0 W=$HALFX H=$SCREENY ;; center) TOP=$(( $SCREENY/4 )) LEFT=$(( $SCREENX/4 )) W=$HALFX H=$HALFY ;; e) TOP=0 LEFT=$HALFX W=$HALFX H=$SCREENY ;; sw) TOP=$HALFY LEFT=0 W=$HALFX H=$HALFY ;; s) TOP=$HALFY LEFT=0 W=$SCREENX H=$HALFY ;; se) TOP=$HALFY LEFT=$HALFX W=$HALFX H=$HALFY ;; *) echo «Usage: winpos (nw, n, ne, w, center, e, sw, s, se)» exit 1 ;; esac # выполнить команду # wmctrl -r :ACTIVE:-b remove,maximized_horz,maximized_vert -e 0,$LEFT,$TOP,$W,$H # есть и другой способ (при таком подходе, без дополнительных настроек, будут видны заголовки # окон, а предыдущий метод скрывает их за пределами экрана) wmctrl -r :ACTIVE: -b remove,maximized_horz,maximized_vert xdotool getwindowfocus windowsize $W $H windowmove $LEFT $TOP exit 0

Клавиатурные макросы, в результате, можно использовать для вызова этого скрипта с тегом вроде ne (Northeast, северо-восток) или center (центр), устанавливая таким образом позицию окна. Изменения легче вносить в один скрипт, а не редактировать несколько клавиатурных макросов.

Итоги

В сериале «Звёздный путь» (в настоящем, с Уильямом Шетнером) есть момент, когда Кирк говорит кому-то о том, что нужно изучить то, как всё работает на космическом корабле. ОС семейства Linux очень похожи на этот корабль.

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

Пользуетесь ли вы программными средствами для работы с окнами в Linux?

Источник: habr.com

Управление процессами в Linux

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

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

Запущенный экземпляр программы называется процессом. Процессами можно управлять.

Как узнать, какие процессы запущены сейчас

Linux, как и большинство современных ОС, — мультизадачен. Это значит, что в Linux одновременно может работать множество процессов.

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

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

1. [email protected]: top
2. Tasks: 174 total, 3 running, 171 sleeping, 0 stopped
3. KiB Mem: 4050604 total, 3114428 used, 936176 free
4. Kib Swap: 2104476 total, 18132 used, 2086344 free
5.
6. PID USER %CPU %MEM COMMAND
7. 6978 karpaff 3.0 21.2 firefox
8. 11 root 0.3 0.0 rcu_preempt
9. 6601 karpaff 2.0 2.4 kwin
10. .

Давайте подробнее разберемся, что здесь происходит:

  • Строка 2. Задачи (tasks) — это второе название процессов. В любой момент времени в вашей системе выполняется сразу несколько процессов. Большая часть из них системные. Многие — спят, и это нормально. «Спящие» процессы ожидают какого-то события, чтобы перейти в активное состояние.
  • Строка 3. Это анализ оперативной памяти. Не переживайте, если используется огромное количество памяти: Linux сохраняет недавно открытые программы для повышения быстродействия. Если какому-то процессу понадобится эта память — она очистится.
  • Строка 4. Это анализ виртуальной памяти системы. Если используется большое количество памяти — пора задуматься о ее увеличении. При наличии современного компьютера с достаточным количеством памяти такой проблемы у вас не возникнет.
  • Строки 6-10. Список наиболее ресурсоемких процессов системы в порядке убывания. Он обновляется в реальном времени — наблюдать за этим одно удовольствие. У вас перед глазами все, что происходит в вашей системе. Два важных столбца — используемая память и процент использования ЦП. Если какой-то из них находится на высоком уровне продолжительное время, стоит узнать, почему так. В столбце USER указывается пользователь, который запустил данный процесс, а PID это столбец, в котором указаны ID процессов — их уникальные идентификаторы.

Команда top предоставляет информацию о системе в реальном времени и показывает лишь то число процессов, которые умещаются на экране.

Есть другая команда — ps (processes, процессы). Обычно ее используют для того, чтобы увидеть список процессов в текущем терминале. Но если добавить аргумент aux , выведется полный список процессов, что гораздо полезнее.

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

Как удалить из памяти процессы, потерпевшие сбой

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

Это не страшно: процесс условного Firefox можно завершить и запустить браузер снова. Но сначала нам нужно узнать ID процесса браузера — PID (proccess ID, идентификатор процесса). Вот, как это будет выглядеть:

1. [email protected]: ps aux | grep ‘firefox’
2. karpaff 6978 8.8 23.5 2344096 945452 ? Sl 08:03 49:53 /usr/lib64/firefox/firefox
3. [email protected]:

Рядом с пользователем karpaff находится число — это и есть PID. Его мы будем использовать для обозначения процесса, который мы хотим закрыть. Для завершения процесса существует специальная команда — kill .

1. [email protected]: kill 6978
2. [email protected]: ps aux | grep ‘firefox’
3. karpaff 6978 8.8 23.5 2344096 945452 ? Sl 08:03 49:53 /usr/lib64/firefox/firefox
4. [email protected]:

Обычно простой запуск kill завершает зависший процесс. В этом случае команда отправляет параметр по умолчанию — -1 . Этот сигнал указывает процессу, ему надо закрыться. Сначала всегда нужно попытаться воспользоваться этим вариантом: он короче.

Однако это не всегда работает. В примере выше мы запускали ps, но процесс все еще работал. Ничего страшного, значит, мы просто подадим параметр -9 — это сигнал для принудительного завершения процесса.

1. [email protected]: kill -9 6978
2. [email protected]: ps aux | grep ‘firefox’
3. [email protected]:

Примечание. Пользователь без root-прав может завершать лишь те процессы, которые он запустил. Root-пользователь может завершить любой.

Что делать, если завис рабочий стол

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

В Linux работает сразу несколько виртуальных консолей. Большую часть времени мы видим консоль номер 7 — с GUI. Но мы можем легко обратиться к другим.

Если GUI завис, можно закрыть проблемные процессы с другой консоли. Для переключения между консолями используйте последовательность Ctrl + Alt + F . Например, после нажатия Ctrl + Alt + F2 вы подключитесь к консоли, с помощью которой сможете получить id приведших к сбою процессов и отключить их. А Ctrl + Alt + F7 вернет вас в GUI, чтобы проверить, все ли в порядке.

Читайте также:
Google что это за программа и нужна ли она

Общая тактика такая: отключать процессы до тех пор, пока рабочий стол не «отвиснет».

Совет. Ищите процессы, которые потребляют много памяти и активно используют ЦП: обычно дело именно в них. Если это не помогает, проще перезагрузить компьютер.

Фоновые процессы и процессы переднего плана

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

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

В качестве примера приведем команду sleep . Эта команда ждет, когда пройдет заданное количество времени и завершает свою работу.

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

1. [email protected]: sleep 5
2. [email protected]:

Если вы запустите эту программу, то заметите, что терминал ждет 5 секунд и только потом предлагает ввод снова. Но если мы сделаем то же самое, но добавим в конец
2. [1] 21634
3. [email protected]:
4. [email protected]:
5. [1]+ Done sleep 5

В этот раз процессу присваивается номер (и он, конечно же, выводится), и приглашение к вводу появляется сразу. Мы можем продолжать работать, пока выполняется фоновый процесс. Если по прошествии 5 секунд вы нажмете Enter, вы увидите сообщение, в котором говорится о том, что задание завершено.

Мы также имеем возможность перемещать процессы между фоном и передним планом. Делается это с помощью комбинации Ctrl + Z. После нажатия этой последовательности текущий фоновый процесс останавливается и перемещается на передний план.

Также мы можем использовать команду fg (foreground, передний план). С ее помощью мы можем перевести фоновый процесс на передний план.

1. [email protected]: sleep 15
7. [2]+ Stopped sleep 10
8. [email protected]: fg 2
9. [1] Done sleep 15
10. [email protected]:

Совет. В Windows Ctrl + Z служит для отмены. Часто пользователи, которые перешли на Linux с Windows, используют эту комбинацию и удивляются — куда же пропала программа и почему ввод появился снова. Если вы допустили эту ошибку, не переживайте. Используйте jobs , чтобы узнать номер задачи, который был назначен программе, и верните ее на передний план с помощью fg .

Что нужно запомнить

Команды

top
Выводит данные о процессах, запущенных в системе, в реальном времени.

ps
Выводит список процессов, запущенных в системе.

kill
Завершает процесс

jobs
Выводит список текущих фоновых процессов.

fg
Переводит фоновый процесс на передний план.

Ctrl + Z
Остановить текущий процесс переднего плана и перевести его в фон.

Практически задания

1. Запустите несколько программ на рабочем столе. Затем с помощью команды ps определите их PID и завершите их.
2. Попробуйте сделать то же самое, но сначала переключитесь на другую виртуальную консоль.
3. Поиграйтесь с командой sleep и перемещением процессов между передним и фоновым планами.

Источник: codechick.io

Управление процессами в Linux

Как вы думаете, операционная система Linux может автоматически позаботиться сама о себе? Когда работает все нормально или вам не нужны никакие нестандартные возможности — вполне да. Но иногда может понадобиться ваше вмешательство в ее работу.

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

В этой статье будет затронута обширная тема, мы рассмотрим такие возможности:

  • Просмотр запущенных процессов
  • Просмотр информации о процессах
  • Поиск процессов в Linux
  • Изменение приоритета процессов
  • Завершение процессов
  • Ограничение памяти доступной процессу

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

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

Начнем с того, что разберемся в терминах. По сути, процесс — это каждая программа. Как я уже говорил для каждой запускаемой программы создается отдельный процесс. В рамках процесса программе выделяется процессорное время, оперативная память и другие системные ресурсы. У каждого процесса есть свой идентификатор, Proccess ID или просто PID, по ним, чаще всего и определяются процессы Linux.

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

На самом деле, процессы Linux не настолько абстрактны, какими они вам сейчас кажутся. Их вполне можно попытаться пощупать. Откройте ваш файловый менеджер, перейдите в корневой каталог, затем откройте папку /proc. Видите здесь кучу номеров? Так вот это все — PID всех запущенных процессов.

В каждой из этих папок находится вся информация о процессе.

Например, посмотрим папку процесса 1. В папке есть другие под каталоги и много файлов. Файл cmdline содержит информацию о команде запуска процесса:

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

Управление процессами в Linux

В Linux есть очень большое количество утилит для решения различных задач по управлению процессами. Это и такие многофункциональные решения, как htop, top, а также простые утилиты, например, ps, kill, killall, who и т д. Я не буду рассматривать в этой статье графические утилиты, и top тоже рассматривать не буду. Первое потому что слишком просто, второе — потому что htop лучше. Мы остановимся на работе с программой htop и ее аналогами в форме утилит в стиле GNU, одна утилита — одна функция.

Давайте установим htop, если она у вас еще не установлена. В Ubuntu это делается так:

sudo apt install htop

В других дистрибутивах вам нужно просто использовать свой менеджер пакетов. Имя пакета такое же.

Посмотреть запущенные процессы

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

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

Вы можете увидеть такую информацию о процессе:

  • PID — идентификатор процесса
  • USER — пользователь, от которого был запущен процесс
  • PRI — приоритет процесса linux на уровне ядра (обычно NI+20)
  • NI — приоритет выполнения процесса от -20 до 19
  • S — состояние процесса
  • CPU — используемые ресурсы процессора
  • MEM — использованная память
  • TIME — время работы процесса

К отображению можно добавить и дополнительные параметры, но эти главные. Добавить параметры можно с помощью меню Setup. Там все очень просто, читайте подсказки и следуйте указаниям. Например, добавлен параметр PPID:

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

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

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

Рассмотрим основные опции, которые будем использовать:

  • -e — вывести информацию обо всех процессах
  • -a — вывести информацию обо всех наиболее часто запрашиваемых процессах
  • -t — показывать только процессы из этого терминала
  • -p — показывать информацию только об указанном процессе
  • -u — показывать процессы только определенного пользователя

Одним словом, чтобы посмотреть все активные на данный момент процессы в linux, используется сочетание опций aux:

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

Список будет отсортирован в обратном порядке, внизу значения больше, вверху — меньше. Если нужно в обратном порядке, добавьте минус:

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

Казалось бы, у ps нет возможности стоить деревья процессов. Но не совсем, для этого существует отдельная команда:

Поиск процессов в Linux

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

Чтобы найти процесс linux в htop можно использовать кнопку F3. Нажмите F3 и наберите нужное слово. Дальше чтобы перейти к следующему вхождению нажимайте F2 или Esc для завершения поиска:

Для поиска процессов в htop можно использовать также фильтр htop. Нажмите F4, введите слово и будут выведены только процессы linux, имя которых включает это слово.

В утилите ps фильтрации нет, но зато мы можем использовать утилиту grep, перенаправив вывод ps на нее чтобы найти процесс linux:

ps aux | grep chromium

Это очень часто употребляемая команда.

Изменение приоритета процессов

Приоритет процесса linux означает, насколько больше процессорного времени будет отдано этому процессу по сравнению с другими. Так мы можем очень тонко настроить какая программа будет работать быстрее, а какая медленнее. Значение приоритета может колебаться от 19 (минимальный приоритет) до -20 — максимальный приоритет процесса linux. Причем, уменьшать приоритет можно с правами обычного пользователя, но чтобы его увеличить нужны права суперпользователя.

Читайте также:
Что за программа делает большие глаза

В htop для управления приоритетом используется параметр Nice. Напомню, что Priv, это всего лишь поправка, она в большинстве случаев больше за Nice на 20. Чтобы изменить приоритет процесса просто установите на него курсор и нажимайте F7 для уменьшения числа (увеличения приоритета) или F8 — для увеличения числа.

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

nice -n 10 apt-get upgrade

Или изменить приоритет для уже существующего по его pid:

renice -n 10 -p 1343

Завершение процессов в Linux

Если процесс завис и не отвечает, его необходимо завершить. В htop, чтобы убить процесс Linux, просто установите курсор на процесс и нажмите F9:

Система для управления процессами использует определенные сигналы, есть сигналы, которые указывают процессу завершиться. Вот несколько основных сигналов:

  • SIGTERM — попросить процесс сохранить данные и завершится
  • SIGKILL — завершить процесс немедленно, без сохранения

Вообще сигналов есть несколько десятков, но мы не будем их рассматривать. Отправим сигнал SIGKILL:

Также можно воспользоваться утилитой kill:

Также можно уничтожить процесс по имени:

Ограничение процессов

Управление процессами в Linux позволяет контролировать практически все. Вы уже видели что можно сделать, но можно еще больше. С помощью команды ulimit и конфигурационного файла /etc/security/limits.conf вы можете ограничить процессам доступ к системным ресурсам, таким как память, файлы и процессор. Например, вы можете ограничить память процесса Linux, количество файлов и т д.

Запись в файле имеет следующий вид:

  • домен — имя пользователя, группы или UID
  • тип — вид ограничений — soft или hard
  • элемент — ресурс который будет ограничен
  • значение — необходимый предел

Жесткие ограничения устанавливаются суперпользователем и не могут быть изменены обычными пользователями. Мягкие, soft ограничения могут меняться пользователями с помощью команды ulimit.

Рассмотрим основные ограничения, которые можно применить к процессам:

  • nofile — максимальное количество открытых файлов
  • as — максимальное количество оперативной памяти
  • stack — максимальный размер стека
  • cpu — максимальное процессорное время
  • nproc — максимальное количество ядер процессора
  • locks — количество заблокированных файлов
  • nice — максимальный приоритет процесса

Например, ограничим процессорное время для процессов пользователя sergiy:

sergiy hard nproc 20

Посмотреть ограничения для определенного процесса вы можете в папке proc:

Max cpu time unlimited unlimited seconds
Max file size unlimited unlimited bytes
Max data size unlimited unlimited bytes
Max stack size 204800 unlimited bytes
Max core file size 0 unlimited bytes
Max resident set unlimited unlimited bytes
Max processes 23562 23562 processes
Max open files 1024 4096 files
Max locked memory 18446744073708503040 18446744073708503040 bytes
Max address space unlimited unlimited bytes
Max file locks unlimited unlimited locks
Max pending signals 23562 23562 signals
Max msgqueue size 819200 819200 bytes
Max nice priority 0 0
Max realtime priority 0 0
Max realtime timeout unlimited unlimited us

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

Вот опции команды:

  • -S — мягкое ограничение
  • -H — жесткое ограничение
  • -a — вывести всю информацию
  • -f — максимальный размер создаваемых файлов
  • -n — максимальное количество открытых файлов
  • -s — максимальный размер стека
  • -t — максимальное количество процессорного времени
  • -u — максимальное количество запущенных процессов
  • -v — максимальный объем виртуальной памяти

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

Установим лимит оперативной памяти:

ulimit -Sv 500000

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

Выводы

Вот и все. Теперь управление процессами в Linux не вызовет у вас проблем. Мы рассмотрели очень даже подробно эту тему. Если у вас остались вопросы или есть предложения по дополнению статьи, пишите в комментариях!

Похожие записи

Нет похожих записей.

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

(12 оценок, среднее: 5,00 из 5)

Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна .

Об авторе

Основатель и администратор сайта losst.ru, увлекаюсь открытым программным обеспечением и операционной системой Linux. В качестве основной ОС сейчас использую Ubuntu. Кроме Linux, интересуюсь всем, что связано с информационными технологиями и современной наукой.

Источник: losst.pro

Управление программами из консоли Linux

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

Управление программами с помощью Wmctrl

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

Основное преимущество wmctrl — полная независимость от какого-либо оконного менеджера. Он взаимодействует с окнами посредством протокола EWMH/NetWM, который поддерживают большинство оконных менеджеров.

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

if [ ` wmctrl — xl | grep — c Konsole ` ! = 0 ] ; then
if [ — f / tmp / . Konsole . add ] ; then
wmctrl — r Konsole — b add , below
rm / tmp / . Konsole . add
wmctrl — r Konsole — b add , above
touch / tmp / . Konsole . add

Просто повесь его на клавиатурную комбинацию. Первое нажатие запустит терминал, а все последующие будут сворачивать/разворачивать его.

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

Чтобы этого добиться, сначала нужно определить размеры окон обоих приложений в каждом из двух требующихся состояний. Делается это с помощью команды wmctrl -lG (перед этим растяните/сожмите окна до нужных размеров):

$ wmctrl — lG
0x0500001b 0 0 55 1280 726 N / A Проект OpenNet — QupZilla
0x03000005 0 900 55 380 693 N / A Telegram ( 6 )
$ wmctrl — lG
0x0500001b 0 0 55 900 693 N / A Проект OpenNet — QupZilla
0x03000005 0 900 55 380 693 N / A Telegram ( 6 )

Опция -G добавляет четыре дополнительных столбца в середине вывода команды. В них отражены данные о смещении окон по осям X и Y, а также их ширина и высота соответственно. В моем случае я сначала использовал данные в точности, как их вывела команда. Но при подстановке в сценарий расположение окна QupZilla по оси Y по какой-то причине отличалось от расчетного, поэтому его пришлось немного подкорректировать вручную.

if [ — f / tmp / . telega . half ] ; then
wmctrl — r Telegram — e ‘0,900,55,380,693’ — b add , below
wmctrl — r QupZilla — e ‘0,0,26,1280,726’
rm / tmp / . telega . half
wmctrl — r QupZilla — e ‘0,0,26,900,693’
wmctrl — r Telegram — e ‘0,900,55,380,693’ — b remove , below
touch / tmp / . telega . half

При первом запуске этот скрипт сожмет окно браузера с правой стороны и покажет в освободившемся пространстве окно мессенджера. Второй запуск закроет мессенджер и вернет окно браузера в прежнее состояние.

Управление программами с помощью Xdotool

Telegram, который мы использовали в примере с браузером и мессенджером, сам по себе неплохо управляется сочетаниями клавиш. И все-таки одного шортката мне не хватает. Того, который восстанавливал бы окно из лотка. Wmctrl не всегда способен решить эту задачу. И пока встроенные возможности мессенджера не могут нас порадовать подобной функциональностью, поможет утилита xdotool.

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

Поскольку рабочее окружение у меня Plasma, я создал еще один виджет системного лотка, отключив в его настройках все пункты, кроме «Состояния приложений», а всем элементам приложений, кроме Telegram, указал пожизненную невидимость («Всегда скрывать»). Сам же Telegram должен быть всегда виден.

Осталось только определить координаты значка «Телеграма» при заблокированных виджетах, установив на него курсор мыши и выполнив в терминале такую команду:

$ xdotool getmouselocation

Из всего многообразия полученных данных берем координаты X, Y (в моем случае — 1238 и 776) и подставляем в команду, перемещающую курсор мыши в заданное положение из любой области экрана и эмулирующую одно нажатие левой кнопки.

xdotool mousemove 1238 776 click 1 mousemove 640 400

Далее скрипт можно привязать к комбинации клавиш (или, как у меня, к одной — Menu), чтобы при их нажатии появлялось окно программы. Повторное нажатие того же сочетания клавиш вновь свернет окно Telegram в трей. Для удобства навигации в скрипт добавлен возврат курсора мыши в центр экрана.

Управление программами с помощью Xwininfo

Утилита xwininfo показывает на экране большое количество характеристик выбранного окна: ID, название, размеры, отступы от краев экрана, толщину границ, цветовую палитру и многое другое. Утилита wmctrl, содержащая в строке параметров опцию :SELECT:, позволяет применить указанные параметры к окну, наведя на него курсор и щелкнув мышью:

$ wmctrl — r : SELECT : — T < название >

Управление программами с помощью Xprop

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

$ xdotool getwindowname $ ( xdotool getactivewindow )
$ xwininfo — int — id $ ( xdotool getactivewindow ) | awk — F » ‘/xwininfo:/ < print $2; exit >’
$ xwininfo — id $ ( xprop — root | awk ‘/NET_ACTIVE_WINDOW/ < print $5; exit >’ ) | awk — F » ‘/xwininfo:/ < print $2; exit >’

Кроме того, xprop можно использовать, когда нужно изменить свойства окон или шрифтов. В одной из прошлых статей я рассказывал про трюк с эффектом размытия для полупрозрачного окна Yakuake. Тот же прием для Konsole будет выглядеть так:

Источник: tech-geek.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru