Unix2018/процессы

Нужно ли указывать дефис перед опциями ps

В некоторых примерах вы можете увидеть использование ps с опциями без дефиса или с длинными вариантами написания опций в стиле GNU. Для совместимости, ps поддерживает все три формата. Опции без дефиса — это стиль BSD и значение опций с дефисом и без может быть различным!

Пример показа процессов в формате BSD:

ps au
# ИЛИ
ps axu

В этой команде значение опций следующее:

  • u — ориентированный на пользователя формат
  • a — убирает ограничение «только свои процессы»
  • x — убирает ограничение «только процессы с терминалом»

Проще говоря, если использовать вместе a и x, то будут показаны все процессы.

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

4 ответа

21

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

Если вы хотите заставить домашнюю страницу: (сделайте то, что сказал HopelessN00b)

  • Создайте новый объект групповой политики или отредактируйте существующий. (Я предполагаю, что вы знаете, как это сделать уже. Сообщите мне, если вы этого не сделаете.)
  • В редакторе управления групповыми политиками перейдите в раздел Конфигурация пользователя -> Политики -> Административные шаблоны -> Компоненты Windows -> Internet Explorer.
  • Найти политику Отключить изменение настроек домашней страницы.
  • Установите для параметра «Включено» и укажите URL-адрес вашей домашней страницы.
  • Как только он будет применен, опция в IE будет выделена серым цветом на клиентском ПК.

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

  • Моим предпочтительным методом было бы использовать настройки групповой политики для установки необходимых значений реестра. (Другие могут не согласиться.)
  • В редакторе управления групповыми политиками перейдите в раздел Конфигурация пользователя -> Предпочтения -> Настройки Windows -> Реестр.
  • Щелкните правой кнопкой мыши -> Новый -> Элемент реестра
  • Действие = Обновление
  • Hive = HKEY_CURRENT_USER
  • Путь к ключу = Программное обеспечение \ Microsoft \ Internet Explorer \ Main
  • Значение Name =
  • Тип значения = REG_SZ
  • Значение данных = ваш URL главной страницы
  • На вкладке «Общие» установите флажок «Применить один раз» и «Не применять повторно»
  • Это позволит установить домашнюю страницу по умолчанию для всех, но впоследствии пользователь сможет ее редактировать.
  • Если вы идете по этому маршруту, я также рекомендую вам установить значение для , без проверка Apply Once и Do not Re-Apply. Это даст вашим пользователям возможность щелкнуть кнопку «Использовать по умолчанию» в настройках IE и вернуться на домашнюю страницу компании.
  • Возможно, вы также захотите удалить Secondary и .
  • Если вы не знакомы с этими значениями реестра, вероятно, было бы неплохо открыть редактор реестра и посмотреть на HKCU \ Software \ Microsoft \ Internet Explorer \ Main, чтобы понять, как они работают.

Другие способы установки домашней страницы IE:

  • В редакторе GPO перейдите в раздел Конфигурация пользователя -> Предпочтения -> Настройки Windows -> Настройки Интернета. Это может не работать для всех версий IE из коробки . Возможно, вам придется обновить свои административные шаблоны.
  • В редакторе GPO перейдите в раздел Конфигурация пользователя -> Политики -> Настройки Windows -> Обслуживание Internet Explorer. Однако у вас может не быть этого больше с более новыми Административными шаблонами .
  • Используйте набор администрирования Internet Explorer (IEAK) , чтобы создать настраиваемый IE и его развертывание.
  • Используйте сценарий входа для применения тех же параметров реестра, которые были указаны выше.

Одно замечание об объектах групповой политики: . Любой из параметров в разделах «Предпочтения» вашего объекта групповой политики будет применяться только в том случае, если у вас есть Предпочтения на стороне клиента групповой политики и соответствующие зависимости. Windows 7-эпохи ПК поддерживают это из коробки. Однако для обеспечения этой функциональности для компьютеров Vista и XP требуется обновление. Полностью обновленная машина должна быть уже установлена, но если переустановитьпотребуется несколько циклов перезагрузки.

5

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

Использование административных шаблонов для IE, вам нужно для перехода к: -> -> -> -> , а настройка, управляющая домашней страницей, называется . Включите этот параметр и установите домашнюю страницу в текстовом поле.

Вам может потребоваться загрузить пакет административных шаблонов, применимый к вашей версии Windows, если вы не можете найти папку «Административные шаблоны».

Это зависит от того, какая версия Windows у вас есть. Для Windows 2008 в настройках пользователя /Предпочтения /Панель управления /Интернет-настройки и создание новой группы настроек.
В 2003 году разные, но я думаю, что это похоже на windows 2012 (никогда не использовалось)

Любят знать GPO и опыт здесь, но иногда простой — лучший способ:

Я делаю и нажимаю его с помощью объекта групповой политики при запуске (один раз). Проблема решена.

Понятие

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

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

Описание 2 этапа:

 Второй этап можно характеризовать так: подготовка системы для запуска служб демонов. При подготовке, Загрузчик загружает в память образ ядра из каталога /boot. Давайте рассмотрим пример образа ядра на примере ОС Debian 6:

boot@debian:~# file /boot/vmlinuz-2.6.32-5-686
/boot/vmlinuz-2.6.32-5-686: Linux kernel x86 boot executable bzImage, \
     version 2.6.32-5-686 (unknown@Debian) #, RO-rootFS, swap_dev 0x2, Normal VGA

В приведенном листинге, видно, что команда file выводит информацию о файле образа ядра. В данной информации говориться, что это ядро линукс (Linux kernel), 32-битной архитектуры (x86), содержащий возможность загрузки (boot), исполняемый (executable), в формате bzImage (то есть сжатое, бывают образы не сжатые), далее указывается версия ядра и кое-какие другие параметры образа. Данных файлов может быть несколько (в зависимости от количества установленных версий ядра) и для загрузки выбирается тот, который указан в настройках загрузчика. Образ ядра, инициализирует и подготавливает память, процессор/ы, остальное оборудование, монтирует корневой раздел в режиме только для чтения для загрузки остальной системы (устройство и раздел на котором размещен корень системы должен быть указан в настройках загрузчика GRUB (/boor/grub.conf) или LILO (/boor/lilo.conf)) в виде параметра root=. При этом, выводится сообщение VFS: Mounted root (ext2 filesystem) readonly. Кроме того, ядро из конфигурационного файла загрузчика получает параметры загрузки, такие как корневая файловая система, отображать сообщения ядра или нет и т.п. Параметры, переданные текущему загруженному ядру можно посмотреть в . Вот пример параметров все того же Debian:

boot@debian:~# cat /proc/cmdline
BOOT_IMAGE=/boot/vmlinuz-2.6.32-5-686 root=UUID=6852e86c-b8f1-49d0-b1eb-9d10171083c3 ro quiet

Т.к. ядро Linux является модульным, то при загрузке может возникнуть необходимость подключить модуль ядра, который находится на еще не примонтированной файловой системе. Для решения данной проблемы при загрузке подгружается архив файловой системы (он же инициализационный RAM диск или initrd), содержащий в себе необходимый для загрузки набор модулей ядра. Вот так он выглядит для указанного выше ядра:

root@debian:~# file /boot/initrd.img-2.6.32-5-686
/boot/initrd.img-2.6.32-5-686: gzip compressed data, from Unix, last modified: Thu Mar 17 09:44:39 2011

Какой архив initrd подгружать при загрузке, так же указывается в FSB GRUB или LILO:

boot@debian:~# grep initrd -B4 /boot/grub/menu.lst
title           Debian GNU/Linux, kernel 2.6.26-2-686
root            (hd0,0)
kernel          /boot/vmlinuz-2.6.26-2-686 root=/dev/sda1 ro quiet
initrd          /boot/initrd.img-2.6.26-2-686

Т.к. (вывод сообщений на экран) должен быть связан с каким-либо процессом, соответственно с идентификатором процесса, а у ядра нет идентификатора, оно оно помещает сообщения ядра (и модулей) в буфер кольца ядра и выводит на экран. Данный буфер еще называется dmesg. Его содержимое можно просмотреть, выполнив команду dmesg. После полной инициализации ядро передает управление процеcсу init (первому системному процессу с PID=1). На экран выводится сообщение INIT: version 2.76 booting. При этом, бинарный файл init последовательно ищется в корневом разделе в каталогах: /sbin/init, /etc/init, /bin/init, если в указанных местах не обнаружен файл, то ядро пытается запустить шелл /bin/sh (это, собственно, есть однопользовательский режим загрузки, он же режим восстановления). При этом, не запускается ни один демон. Если не найден и шелл, то вываливается ошибка Kernel panic: No init found. Try passing init= option. Данная ситуация может возникнуть скорее всего, потому что неверно смонтирован корневой раздел.

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

Утилита «системный монитор» — аналоги диспетчера задач в Windows.

Для Cinnamon необходимо установить отдельно:
для РЕД ОС версии 7.1 или 7.2:

sudo yum install gnome-system-monitor

для РЕД ОС версии 7.3 и старше:

sudo dnf install gnome-system-monitor

Расположение утилиты в Cinnamon:

Графический интерфейс утилиты интуитивно понятен, вся информация распределена по четырем вкладкам (Сinamon — 3 вкладки). Выглядит следующим образом:

Вкладка «Система» — выводится базовая минимальная информация о системе.
Вкладка «Процессы» — можно просматривать и управлять, работающими процессами. Каждый процесс можно приостановить, остановить, изменить приоритет.
Вкладка «Ресурсы» — утилита выводит в виде графиков информацию в реальном времени о ресурсах использования процессора, использование оперативной памяти и файла подкачки, и использование сети.
Вкладка «Файловые системы» — отображает информацию о имеющихся устройствах хранения информации.

Активирование политики ограниченного использования программ

Создайте объект групповой политики или откройте в редакторе существующий. Откройте ветвь Конфигурация компьютера или Конфигурация пользователя (в зависимости от того, к чему необходимо будет применить политику). Найдите и выберите раздел Конфигурация Windows – Параметры безопасности – Политики ограниченного использования программ.

Активирование политики ограниченного использования программ

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

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

Активирование политики ограниченного использования программ

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

Активирование политики ограниченного использования программ

Приоритет

Утилита nice, запущенная без аргументов, выводит приоритет nice, унаследованный от родительского процесса. nice принимает аргумент «смещение» в диапазоне от -20 (наивысший приоритет) до +19 (низший приоритет). nice может запустить команду с заданным смещением. Если смещение не указано, будет использовано смещение +10. Привилегированный пользователь (root) может указать отрицательное смещение.

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

$ nice -n 19 tar cvzf archive.tgz largefile

Конкретный эффект от значений nice зависит от реализации планировщика в ядре ОС.

Приоритет nice и приоритет планировщика процессов ядра ОС — разные числа. Число nice — приоритет, который пользователь хотел бы назначить процессу. Приоритет планировщика — действительный приоритет, назначенный процессу планировщиком. Приоритет nice является атрибутом процесса и, как и другие атрибуты, наследуется дочерними процессами. В выводе утилит top, ps, htop и др. приоритет nice называется «NI» — сокращение от «nice», а приоритет планировщика — «PRI» — сокращение от «priority». Обычно, NI = PRI — 20, но это верно не всегда. По умолчанию NI=0, соответственно PRI=20.

  • Утилита nice задаёт приоритет новосоздаваемому процессу. Для изменения приоритета уже запущенных процессов используется утилита renice.
  • В Linux есть также утилита ionice, которая влияет на планировщик I/O-операций, а не на распределение времени процессора.

Linux systemd targets vs. runlevels

In recent years, systemd has come to replace the long-standing “System V init” (runlevels) system. It still works in basically the same way, but uses some new commands and commonly refers to “runlevels” as “targets” instead.

Runlevel 0 = poweroff.target (runlevel0.target)

Runlevel 1 = rescue.target (runlevel1.target)

Runlevel 2 = multi-user.target (runlevel2.target)

Runlevel 3 = multi-user.target (runlevel3.target)

Runlevel 4 = multi-user.target (runlevel4.target)

Runlevel 5 = graphical.target (runlevel5.target)

Runlevel 6 = reboot.target (runlevel6.target)

We’ll continue going over systemd and the commands you’ll need to know as this tutorial progresses.

Как повысить приоритет процесса в Windows 10 через реестр

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

  1. Переходят в меню «Пуск» и набирают в командной строке «редактор реестра».
  2. Дожидаются окончания поиска и выбирают соответствующую программу.
  3. Вставляют в поиск редактора строку «HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionImage File Execution Options» или самостоятельно переходят к ключу, пошагово открывая разделы.
  4. Переходят к файлу программы, чей приоритет необходимо изменить, нажимают по нему или его ярлыку правой клавишей мыши и выбирают пункт «Свойства».
  5. В поле «Объект» находят нужное название файла и копируют его.
  6. В «Редакторе реестра» в директории, которая была открыта до этого, создают папку и дают ей скопированное имя файла.
  7. Переходят в этот каталог и создают в нем еще одну папку с названием «PerfOptions».
  8. Заходят в папку и создают там параметр типа DWORD 32 с именем «CpuPriorityClass» и значением (1 — низкий, 5 — ниже среднего, 8 — средний, 3 — высокий).

Обратите внимание! Попасть в редактор реестра можно и другими путями. Наиболее быстрым является нажатие сочетания клавиш «Win + R» и ввод в специальную строку команды «regedit»

Также можно нажать правой клавишей мыши по ярлыку «Мой компьютер» и выбрать нужную программу.

Как изменить приоритет процесса в Windows 10

Чтобы повысить или понизить приоритет процесса в Windows 10 сделайте следующее:

  1. Откройте диспетчер задач .
  2. При необходимости переключите его в режим просмотра «Подробнее», используя ссылку «Подробнее» в левом нижнем углу.
  3. Перейдите во вкладку «Подробности»
  4. Щелкните правой кнопкой мыши нужный процесс и выберите « Установить приоритет» в контекстном меню. В раскрывающемся подменю выберите желаемый уровень приоритета, например, « Выше обычного» .
  5. Откроется следующий диалог:
  6. Подтвердите операцию, и все готово.

Есть способ запустить процесс с желаемым приоритетом. Это можно сделать с помощью консольной команды «start», доступной в классической командной строке (cmd.exe). Вот как:

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

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

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

<домен> <тип> <элемент> <значение>

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

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

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

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

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

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

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

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

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

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

Теперь смотрим:

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

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

BIOS vs UEFI

Первым делом подгружаеться BIOS, который выполняет базовое тестирование при включении питания POST(power-on self test), т.е. проверка всех подключенных аппаратных средств. Потом выполняется нумерация и инициализации локальных устройств. После этих действий BIOS передает управление MBR.
В современных системах на смену BIOS пришел UEFI (Unified Extensible Firmware Interface). Это программный интерфейс, который работает между операционной системой и прошивкой платформы, что позволяет заменить BIOS. Он же в свою очередь использует GPT (GUID Partition Table) вместо таблиц MBR. Если размер диска превышает 2.2 TB, то без GPT уже не обойтись, потому что MBR поддерживает диски только до 2-х терабайтов.

runlevels

Пример файла /etc/inittab:

id:5:initdefault:
si::sysinit:/etc/rc.d/rc.sysinit
l0:0:wait:/etc/rc.d/rc 0
l1:1:wait:/etc/rc.d/rc 1
l2:2:wait:/etc/rc.d/rc 2
l3:3:wait:/etc/rc.d/rc 3
l4:4:wait:/etc/rc.d/rc 4
l5:5:wait:/etc/rc.d/rc 5
l6:6:wait:/etc/rc.d/rc 6
1:2345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2
3:2345:respawn:/sbin/mingetty tty3
4:2345:respawn:/sbin/mingetty tty4
5:2345:respawn:/sbin/mingetty tty5
6:2345:respawn:/sbin/mingetty tty6
x:5:respawn:/etc/X11/prefdm -nodaemon

По умолчанию в системе использовано 7 уровней инициализации:

  • 0 — остановка системы
  • 1 — загрузка в однопользовательском режиме
  • 2 — загрузка в многопользовательском режиме без поддержки сети
  • 3 — загрузка в многопользовательском режиме с поддержкой сети
  • 4 — не используется
  • 5 — загрузка в многопользовательском режиме с поддержкой сети и графического входа в систему
  • 6 — перезагрузка

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

В большинстве Unix/Linux систем, узнать текущий уровень инициализации можно командами:

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

Стартовые скрипты для каждого уровня находятся в каталогах с /etc/rc0.d до /etc/rc6.d, где цифра после rc соответствует номеру уровня инициализации.

$ ls /etc/rc5.d/
README             S02acpid    S02irqbalance         S02thermald      S04cups-browsed
S01apport          S02anacron  S02kerneloops         S02whoopsie      S04saned
S01binfmt-support  S02atd      S02nginx              S03avahi-daemon  S05grub-common
S01php7.0-fpm      S02atop     S02rsync              S03bluetooth     S05ondemand
S01rsyslog         S02cron     S02speech-dispatcher  S03lightdm       S05plymouth
S01uuidd           S02dbus     S02sysstat            S04cups          S05rc.local

Обычно скрипты не дублируются для каждого уровня. В каталогах rcX просто ставятся симлинки на скрипты в /etc/init.d.

$ ls -l /etc/rc5.d/S02nginx 
lrwxrwxrwx 1 root root 15 Nov 28 19:56 /etc/rc5.d/S02nginx -> ../init.d/nginx

Сами скрипты в /etc/init.d обычно пишутся по шаблону и должны уметь принимать параметр start|stop|restart.

В именовании используется такая логика.

  • S — скрипты для запуска (start)
  • K — скрипты для остановки (stop)
  • Номер задаёт порядок выполнения: чем меньше номер, тем раньше запускается скрипт.

Для автоматизации создания этих линков с правильными именами есть специальные утилиты. Например, в RedHat и Fedora используется программа chkconfig, в Debian — update-rc.d.

Есть также специальный скрипт /etc/rc.local, который выполняется во всех многопользовательских уровнях.

Как зайти в Конфигурацию системы

Поиск Windows

Первый способ запуска Мсконфиг достаточно простой, для вызова утилиты понадобиться использовать «Поиск Windows»:

Данный способ подразумевает собой использование окна «Выполнить»:

Использование командной строки

Вариант запуска будет рассмотрен для Windows 7 и старших версий. Необходимо заметить, что в версиях после «семерки» процесс запуска командной строки выглядит иначе.

Для
Win 7:

  • открываем меню «Пуск»;
  • затем выбираем пункт «Все программы
    »;
  • далее открываем «Стандартные
    »;
  • ищем командную строку и запускаем ее;
  • в консоли вводим команду «msconfig» и жмем «Enter».

Для
Win 8 и 8.1:

  • нажимаем на клавиатуре сочетание клавиш «Win+
    X
    »;
  • в контекстном меню выбираем «»;
  • в окне консоли вводим «msconfig» и жмем «Enter».

Для
Win 10:

Открытие из папки

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

PID

Идентификатор процесса (process identifier, PID) — уникальный номер (идентификатор) процесса в многозадачной операционной системе (ОС).

Как правило, PID’ы выдаются последовательно от 0. По достижении лимита счёт снова начинается с 300 (в Mac OS X — со 100). Это сделано отчасти для ускорения, потому что малые PID часто заняты системными процессами.

Часто имеется два специальных значения PID: swapper или sched — процесс с номером 0 (часто не отображается в списке), отвечает за выгрузку страниц и является частью ядра операционной системы. Процесс 1 — обычно является процессом init, ответственным за запуск и остановку системы.

C

В C-коде: тип данных (на самом деле определён как ).

#include <unistd.h>
pid_t getpid(void);

Приятно, обрабатывать ошибочный код возврата не нужно. «These functions are always successful.»

#include <stdio.h>
#include <unistd.h>
 
int main() {
    pid_t p = getpid();
    printf("My PID is %d\n", p);
    return ;
}

Что такое Unix?

Unix считается «матерью» большинства операционных систем. Об мы говорили на соответствующем уроке.

Главной управляющей составляющей Unix является её ядро. Ядро имеет полный контроль над всей системой. Оно имеет подсистемы, которые предлагают свои «услуги» по обработке файловой системы, обработке ресурсов, управлению памятью, запуску и остановке программ и нескольким другим низкоуровневым основным задачам.

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

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

Примерами операционной системы Unix являются Solaris и HP-UX. Крупнейшими дистрибьюторами UNIX-систем являются IBM, HP и SUN.

Современные альтернативы init

Сейчас существует множество систем, призванных заменить собой классический init.

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

  • launchd (в Mac OS X)
  • Upstart (первоначально разрабатывалась в Ubuntu, ныне устарела)
  • systemd (используется в современных Debian, Ubuntu, Fedora, …; критикуется за отход от Unix-философии и сложность)

На Ubuntu 16.04:

$ sudo readlink -f /proc/1/exe
/lib/systemd/systemd

Классический файл /etc/inittab вообще отсутствует.

Способы запуска и остановки сервисов

Классический UNIX System V init:

$ sudo /etc/init.d/nginx start
$ sudo /etc/init.d/nginx stop

Upstart:

$ sudo start nginx
$ sudo stop nginx

systemd:

$ sudo systemctl start nginx
$ sudo systemctl stop nginx

Универсальный:

$ sudo service nginx start
$ sudo service nginx stop

Свой простейший демон на systemd

Добавляется конфиг /etc/systemd/system/foo.system:

Unit
Description=foo
 
Service
WorkingDirectory=/home/
ExecStart=/usr/bin/env python -m SimpleHTTPServer
 
Install
WantedBy=multi-user.target

Затем установка и запуск:

$ sudo systemctl enable foo
$ sudo systemctl start foo

Which runlevel is the best for me?

Determining which runlevel is the best for you all depends on the situation. Generally, you are probably going to be using runlevels 3 and 5 on a regular basis.

If you are comfortable with the command line and don’t need a graphical interface, runlevel 3 (on most distributions) is going to be best for you.

This will keep unnecessary services from running. On the other hand, if you want more of a desktop experience and a graphical interface to use various apps, etc., then runlevel 5 will be your preferred runlevel.

If you need to perform maintenance on a production server, runlevel 1 suits that situation well. You can use this runlevel to ensure that you are the only one on the server (the network service is not even started), and you can perform your maintenance uninterrupted.

In rare cases, you may even need to use runlevel 4. This would only be in particular situations where you or the system administrator has a custom configured runlevel. We will cover how to do that in the next section.

As you have probably assumed, you won’t (and can’t) run your system in runlevels 0 or 6, but it’s possible to switch to them just to reboot or power off. Doing so shouldn’t ordinarily be necessary since there are other commands that do that for us.

Вносим изменения в конфигурационный файл программы

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

  • Для начала перейдём в папку с приложением/exe-шником игры и найдем файл в формате .ini либо .cfg. Кликаем по нему ПКМ и в контекстном меню выбираем «Открыть с помощью». Для простоты примера выберем стандартный блокнот. Нажимаем F для вызова строки поиска и в ней прописываем «Priority».
  • Файл автоматически подсветит искомое слово. Здесь можно задать приоритет, прописав цифровое значение для этого параметра вручную. Так 0 – стандартный приоритет, 6 – ниже среднего, 4 – скрытый, 8 – стандартный, 10 – выше среднего, 13 – высокий и 24 – в реальном времени. Сохраняем файл, закрываем его и запускаем приложение.

Открываем конфигурационный файл программы при помощи блокнота и вносим в нём соответствующие изменения

Просмотр списка процессов

ps

ps (process status) — программа в UNIX-системах, выводящая отчёт о работающих процессах.

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

Опции разных видов:

  1. UNIX options (начинаются с -)
  2. BSD options (без -)
  3. GNU long options (--)

Так, например, ключи -e (с минусом) и ax (без минуса) полностью эквивалентны.

$ ps aux
USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root           1  0.0  0.0  35660  3396 ?        Ss   авг.26   0:43 /sbin/init
...
$ ps -ef
UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 21:27 ?        00:00:01 /sbin/init splash

Пример — получить имя процесса по PID:

sobols@sobols-VirtualBox:~$ ps -p 1 -o comm=
systemd
sobols@sobols-VirtualBox:~$ ps -p 1 -o command=
/sbin/init splash

pgrep

Поиск процесса по имени — регулярному выражению. По умолчанию используется синтаксис ERE.

$ pgrep 'bash'

примерно эквивалентно такому:

$ ps ax | awk '{sub(/.*\//, "", $5)} $5 ~ /bash/ {print $1}'

pidof

Аналогично, поиск по имени.

sobols@sobols-VirtualBox:~$ pgrep init
sobols@sobols-VirtualBox:~$ pgrep systemd -l
1 systemd
201 systemd-journal
243 systemd-udevd
673 systemd-logind
1084 systemd
sobols@sobols-VirtualBox:~$ pgrep ^systemd$ -l
1 systemd
1084 systemd
sobols@sobols-VirtualBox:~$ pidof systemd
1084
sobols@sobols-VirtualBox:~$ pidof init
1

top

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

ps же формирует вывод и завершается. Можно следить за выводом при помощи команды watch:

watch ps ax --sort=-pcpu

Чтобы выйти из программы top, нужно нажать клавишу q.

htop

Предоставляет пользователю текстовый интерфейс; для вывода на терминал использует библиотеку ncurses.

Автор (Hisham Muhammad) назвал программу «htop» по аналогии с тем, как названа программа «pinfo», написанная программистом по имени Przemek Borys. Слово «pinfo» означает «Przemek’s info». Слово «htop» означает «Hisham’s top».

atop

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

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

What is my current runlevel?

You can see your current runlevel on most distributions by simply typing “runlevel” in the terminal.

When you enter the “runlevel” command, it’ll give you two different numbers. The first number is the previous runlevel your system was running, and the second number is the current runlevel of your system.

In the screenshot above, the “N” is short for “none”, meaning that the system was not in any different runlevel previously. The “5” means our system is currently in runlevel 5.

We are running CentOS in this example, which booted directly into a graphical interface, hence why the system went straight to runlevel 5.

78. Опишите два свойства модели Белла — Лападулы

  1. Простое свойство безопасности (The simple security property) — процесс, запущенный на уровне безопасности k, может проводить операцию чтения только в отношении объектов своего или более низкого уровня. К примеру, генерал может читать документы лейтенанта, но лейтенант не может читать генеральские документы.
  2. Свойство * (The * property) — процесс, работающий на уровне безопасности k, может вести запись только в объекты своего или более высокого уровня. К примеру, лейтенант может добавить сообщение в генеральский почтовый ящик, докладывая обо всем, что ему известно, но генерал не может добавить сообщение в лейтенантский почтовый ящик, сообщая о том, что известно ему, поскольку генерал может быть ознакомлен с совершенно секретными документами, содержание которых не должно доводиться до лейтенанта.
Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Мой редактор ОС
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: