Что такое процесс
Процесс — это работающий экземпляр программы. Он имеет идентификатор процесса, родительский процесс, память, открытые файлы, переменные среды, разрешения и состояние планирования.
Программы — это файлы на диске. Процессы выполняются в реальном времени. Запуск /usr/bin/ssh создает процесс ssh. Запуск его дважды создает два процесса.
Родительские и дочерние процессы
Процессы образуют дерево. Ваш терминал запускает оболочку. Оболочка запускает команды как дочерние процессы. Услуги могут начать рабочие дети. Когда родительский элемент завершает работу, дочерние элементы перезапускаются или останавливаются в зависимости от того, как они были запущены.
Просмотр дерева помогает объяснить, почему закрытие терминала может остановить запуск программ с него и почему службами следует управлять с помощью systemd, а не запускать их вручную в случайной оболочке.
Задания на переднем и заднем плане
Задание переднего плана владеет терминалом до тех пор, пока оно не завершится, не приостановится или не будет прервано. Фоновое задание продолжается, пока оболочка принимает дополнительные команды. Управление заданиями оболочки полезно для интерактивной работы, но не является диспетчером служб.
long-command &
jobs
fg %1Состояния и сигналы процесса
Процессы могут быть запущенными, спящими, остановленными, зомбированными или ожидающими ввода-вывода. Процесс, не потребляющий ЦП, может все еще быть активным, поскольку он ожидает диска, сети, таймеров или ввода.
Сигналы — это сообщения, отправляемые процессам. SIGTERM просит процесс завершиться. SIGKILL вызывает немедленное прекращение действия. SIGHUP часто просит демоны перезагрузить конфигурацию, в зависимости от программы.
| Signal | Meaning | Используйте осторожно, потому что |
|---|---|---|
| SIGTERM | Запросить чистое прекращение | Процессу может потребоваться время для завершения |
| SIGKILL | Принудительное прекращение | Очистка невозможна |
| SIGHUP | Запрос на отключение или перезагрузку | Поведение зависит от программы |
| SIGSTOP | Приостановить процесс | Он не может быть уловлен процессом |
systemd, службы и демоны
Демон — это фоновый процесс, который предоставляет такие службы, как SSH, печать, ведение журнала, кэширование DNS, базу данных или веб-сервер. systemd — это система инициализации и менеджер служб, используемая во многих дистрибутивах.
Модули systemd описывают, как службы запускаются, останавливаются, перезапускаются, зависят от других модулей, записывают выходные данные и участвуют в загрузке. Служба может быть активной сейчас, не будучи включенной при загрузке, или включенной при загрузке, но не запущенной в данный момент.
Включение, отключение, запуск и остановка
start и stop влияют на текущую загрузку. включение и отключение влияют на поведение будущей загрузки. перезапуск останавливает и запускает службу. reload просит службу перечитать конфигурацию без полного перезапуска, если она поддерживает эту операцию.
systemctl status sshsudo systemctl enable --now sshjournalctl -u ssh --since todayПроцесс загрузки и входа в систему
После того, как ядро запускает первый процесс пользовательского пространства, systemd вызывает цели и службы. На сервере путь может заканчиваться текстовым логином или службой SSH. На рабочем столе процесс продолжается через диспетчер дисплея и сеанс рабочего стола.
При устранении неполадок при запуске спросите, на каком этапе произошел сбой: загрузка ядра, запуск модуля systemd, менеджер входа в систему, сеанс рабочего стола или файл конфигурации пользовательской оболочки.