Процесс запуска Linux в фоновом режиме
Обновлено: 21.11.2024
При использовании командной строки в Linux пользователям обычно приходится ждать выполнения одной команды, прежде чем переходить к следующей. Команды обычно выполняются плавно и не занимают много времени на их выполнение. Компакт-диск является распространенным примером, для которого пользователи просто запускают команды и быстро переключаются из одного каталога в другой для выполнения соответствующих и необходимых функций. Команды запускаются и выполняются за очень короткое время, например, за несколько секунд, и предоставляют полезную информацию, необходимую пользователю.
Иногда процессы могут занять немного больше времени для запуска и завершения своего выполнения. Это когда выполнение по одному может стать немного сложным для пользователя. Это может включать отправку или мониторинг вывода в журналы. Такие процессы могут неожиданно занять больше времени, поскольку компиляция кода не всегда проходит гладко. Таким образом, пока идет компиляция, пользователи не смогут получить доступ к системе, пока компиляция не будет завершена. Во время компиляции терминал нельзя использовать, пока это не будет сделано. Чтобы продолжить обычную работу во время обработки команды, пользователям необходимо знать, как запускать команды в фоновом режиме в Linux. Давайте рассмотрим это руководство, чтобы узнать больше об этом.
Чтобы запустить фоновую команду в Linux Mint 20, вам нужно открыть терминал из меню в левом нижнем углу экрана, а затем выбрать параметр «Терминал» из списка доступных приложений.
После открытия терминала теперь вы можете выполнять команды в фоновом режиме или отправлять их в фоновый режим в соответствии с требованиями пользователя для бесперебойной работы.
Примечание. Чтобы войти в bash, пользователю необходимо иметь учетную запись sudo с правами.
Использование «&» для запуска команды в фоновом режиме:
Пользователи могут выполнять команды для запуска в фоновом режиме, если они добавят символ «&». Это будет означать, что пока команды выполняются, пользователи по-прежнему могут выполнять соответствующую работу параллельно с ними без каких-либо перерывов. В качестве примера рассмотрим команду для добавления чисел в текстовый файл.
Здесь вывод будет похож на прикрепленное изображение:
Данные в квадратных скобках — это номер задания фонового процесса, а следующий набор цифр — идентификатор процесса.
Примечание. Как только описанный выше процесс будет запущен, снова появится командная строка, которая позволяет пользователям возобновить свою работу, выполняя команды в фоновом режиме в соответствии с требованиями пользователя. Если бы мы ввели команду, не заканчивая ее символом «&», тогда не было бы никакого взаимодействия с пользователем, и она была бы полностью заблокирована, пока действие не будет завершено.
Чтобы отправить текущую команду в фоновом режиме:
Если пользователи уже запустили определенную команду, и пока они используют свою систему, их командная строка блокируется, тогда они могут приостановить выполнение своего текущего приоритетного процесса, используя «ctrl+z» для окон и «команда+ z» для систем Mac. Они поставят свои процессы в фазу временной остановки, и тогда это поможет им использовать идентификатор задания, который мы уже видели ранее и который был написан в квадратных скобках.
Примечание. На этот раз удалите символ «&», добавленный ранее, перед применением клавиш «Ctrl+Z».
Теперь процесс переднего плана приостановлен, и, зная идентификатор задания, мы теперь можем установить и настроить фон. Мы можем сделать это, просто набрав это в нашей командной строке:
Здесь, как уже упоминалось выше, 1 – это идентификатор нашей работы. Теперь пришло время проверить фон со статусом запущенных заданий. Введите jobs -l в командной строке и нажмите Enter. Вывод показывает, что наш процесс работает в фоновом режиме, как показано на снимке экрана ниже:
Теперь процесс снова запущен и работает в фоновом режиме.
Чтобы перевести фоновый процесс на передний план:
Пользователи также могут легко вывести фоновый процесс на передний план, просто нажав fg [номер задания] рядом с ним.
Примечание: вы можете использовать любой желаемый номер задания
Теперь пользователи снова могут использовать клавиши ctrl+z, чтобы снова приостановить процесс. Это простой способ сначала вывести процесс на передний план, а затем остановить его.
Чтобы завершить фоновое задание:
Пользователи могут не только запускать и перемещать различные процессы с помощью фоновых команд, но и завершать определенное задание или процесс, используя % перед идентификатором. Пример ниже показывает ту же команду. Просто введите kill %1, потому что в нашем случае мы использовали 1.
В вашем случае вы можете попробовать заменить выделенную жирным шрифтом цифру «1» номером вашей конкретной работы.
Примечание. Вы также можете перепроверить процесс уничтожения, используя «jobs -l». Он отобразит список всех завершенных заданий.
Вывод:
Когда пользователи запускают команду в фоновом режиме, им теперь не нужно ждать, пока она завершится, прежде чем выполнять следующую команду в очереди. Обсужденные выше параметры охватывают всю связанную информацию, чтобы облегчить пользователям запуск и перемещение процессов, заданий и команд в любом месте в зависимости от их требований, предоставляя им достаточную гибкость. Это руководство будет полезно всем пользователям, которые планируют работать в ОС Linux и хотят работать параллельно с несколькими процессами, запущенными в их системах. Таким образом, они могут либо отправлять запущенные команды в фоновый режим, либо использовать оператор «&», добавляя его в конец своих команд, а затем перемещая его в фоновом режиме. Упомянутые здесь указатели с примерами также помогут вам вывести процессы на передний план. Кроме того, вы также можете завершить фоновое задание.
Об авторе
Акса Ясин
Я целеустремленный профессионал в области информационных технологий и обожаю писать. Я технический писатель и люблю писать для всех разновидностей Linux и Windows.
Команда Linux выполняется слишком долго? Используйте любой из этих шести способов, чтобы перевести его в фоновый режим.
Команды Linux — отличный способ взаимодействия с системой с помощью терминала. Однако иногда выполнение поставленной задачи может занять некоторое время. Это заставляет пользователей ждать значительное время или вообще создавать новую оболочку.
К счастью, вы можете запускать команды Linux в фоновом режиме, следуя некоторым простым методам. Остальная часть этой статьи иллюстрирует некоторые из этих методов.
1. Добавьте амперсанд после команды
Самый простой способ запустить фоновую команду Linux — добавить символ амперсанда (&) после команды. Например, если вы запускаете текстовый редактор gedit со своего терминала, вы не сможете использовать оболочку, пока не закроете редактор. Однако, когда вы добавите к своей команде дополнительный &, вы сможете сразу же использовать оболочку.
2. Используйте bg для отправки запущенных команд в фоновый режим
Иногда вы запускаете команду только для того, чтобы узнать, что ее выполнение занимает гораздо больше времени. Вы можете легко перевести эти команды в фоновый режим, нажав клавиши Ctrl + Z, а затем используя команду bg. Ctrl+Z останавливает запущенный процесс, а bg переводит его в фоновый режим.
Вы можете просмотреть список всех фоновых задач, введя задания в терминале. Используйте команду fg, чтобы вернуться к текущей задаче.
3. Отправка команд в фоновый режим с помощью nohup
Команда nohup в Linux позволяет администраторам запускать команды терминала, невосприимчивые к сигналам HUP или Hang Up. Вы можете запускать команды Linux в фоновом режиме с помощью nohup.
В приведенном ниже примере выполняется сканирование портов Nmap в фоновом режиме.
Одним из ключевых преимуществ nohup является то, что ваши команды будут выполняться, даже если вы выйдете из оболочки. Кроме того, он генерирует файлы журнала выполнения. Найдите nohup.out в текущем каталоге или внутри $HOME.
4. Запуск фоновых команд с использованием системных перенаправлений
Вы также можете запускать фоновые команды в Linux, используя системные перенаправления. Например, если вы запустите приведенную ниже команду ping, ваша оболочка запустит ее в фоновом режиме и немедленно вернет приглашение терминала.
Здесь вывод команды ping перенаправляется в файл output.log. Вы можете заменить его на /dev/null, если хотите отказаться от результата. 2>&1 указывает bash перенаправлять любые ошибки в тот же файл. Последний & сигнализирует bash о выполнении этой команды в фоновом режиме.
5. Установите команды Linux в фоновом режиме с помощью disown
Команда disown в Linux упрощает выполнение команд в фоновом режиме. Во-первых, вам нужно отправить задачу в фоновом режиме с помощью оператора &. Затем введите disown, чтобы отсоединить его от оболочки.
Одним из основных преимуществ disown является то, что, как и nohup, система не уничтожит вашу задачу, когда вы закроете оболочку или выйдете из нее.
6. Запуск команд Linux в фоновом режиме с помощью Tmux
Tmux — это мощный мультиплексор, который позволяет запускать несколько сеансов терминала в одном окне. Изучение tmux — отличный выбор для людей, которые с ним не знакомы. Tmux упрощает выполнение фоновых команд в Linux.
Когда вы запускаете указанную выше команду tmux, она выполняет команду ping в отдельной оболочке и сохраняет ее в фоновом режиме. С помощью этого метода вы можете выполнить любую команду Linux в фоновом режиме.
Оставьте свои команды Linux в фоновом режиме
Возможность запускать команды в фоновом режиме делает управление системой более продуктивным для администраторов. Вы можете фонировать свои задачи несколькими способами. Функции Bash, такие как & и Ctrl + Z, удобны, но система завершит фоновое задание при закрытии оболочки. С другой стороны, такие инструменты, как nohup и disown, сохраняют выполнение вашей команды, даже когда вы выходите из системы или завершаете работу оболочки.
Если вы оставите свои программы в фоновом режиме на долгое время, они могут стать процессами-зомби, если они не написаны должным образом. Эти процессы могут значительно замедлить работу системы. Поэтому не забывайте время от времени выявлять и уничтожать зомби-процессы.
Узнайте, как выполнять команды в фоновом режиме в Linux. Вы также узнаете, как вернуть фоновые задания на передний план.
Если у вас есть длительная задача, не всегда разумно ждать ее завершения. Я имею в виду, зачем держать терминал занятым для конкретной команды? В Linux вы можете отправить команду или процесс в фоновый режим, чтобы команда выполнялась, но терминал был свободен для выполнения других команд.
В этом руководстве я покажу вам несколько способов отправки процесса в фоновом режиме. Я также покажу вам, как вернуть фоновые процессы на передний план.
Запуск процесса Linux в фоновом режиме напрямую
Если вы знаете, что команда или процесс займет много времени, было бы лучше запустить команду в фоновом режиме.
Чтобы выполнить команду Linux в фоновом режиме, достаточно добавить амперсанд (&) в конце команды, например:
Возьмем простую команду bash sleep и отправим ее в фоновый режим.
Когда команда завершается в фоновом режиме, вы должны увидеть информацию об этом на терминале.
Отправить запущенный процесс Linux в фоновый режим
Если вы уже запускали программу, а затем поняли, что должны были запустить ее в фоновом режиме, не беспокойтесь. Вы также можете перевести запущенный процесс в фоновый режим.
Что вам нужно сделать здесь, так это использовать Ctrl+Z, чтобы приостановить запущенный процесс, а затем использовать «bg» (сокращение от фона), чтобы перевести процесс в фоновый режим. Приостановленный процесс теперь будет работать в фоновом режиме.
Возьмем тот же пример, что и раньше.
Просмотреть все процессы, работающие в фоновом режиме
Теперь, когда вы знаете, как отправлять процессы в фоновом режиме, вам может быть интересно узнать, какие команды выполняются в фоновом режиме.
Для этого вы можете ввести в терминал эту команду:
Сначала переместим некоторые команды в фоновый режим.
Теперь команда jobs покажет вам все запущенные задания/процессы/команды в фоновом режиме следующим образом:
Вы заметили цифры [1], [2] и [3] и т. д.? Это идентификаторы работы. Вы также заметите знаки «-» и «+» в двух командах. Знак + указывает на последнее задание, которое вы выполняли или переводили в приоритетный режим. Знак – указывает на предпоследнее задание, которое вы выполнили или сделали приоритетным.
Вывести процесс на передний план в Linux
Хорошо! Итак, вы научились запускать команды в фоновом режиме в Linux. Но как насчет того, чтобы снова перевести процесс, работающий в фоновом режиме, на передний план?
Чтобы отправить команду в фоновый режим, вы использовали «bg». Чтобы вернуть фоновый процесс, используйте команду «fg».
Теперь, если вы просто используете fg, последний процесс в очереди фоновых заданий будет переведен на передний план. В нашем предыдущем примере запуск «fg» вернет редактор Vim обратно в терминал.
Если вы хотите вывести определенный процесс на передний план, вам нужно указать его идентификатор задания. Идентификатор задания — это число, которое вы видите в начале каждой строки в выводе команды «jobs».
Где n – это идентификатор задания, отображаемый в выводе командных заданий.
Вот и все
Это было быстро, но достаточно, чтобы вы узнали кое-что о выполнении команд в фоновом режиме в Linux. Я бы посоветовал также изучить команду nohup. Эта команда позволяет выполнять команды в фоновом режиме даже после выхода из сеанса.
Дэйв Маккей
Дэйв Маккей
Писатель
Используйте оболочку Bash в Linux для управления активными и фоновыми процессами. Вы можете использовать функции управления заданиями и сигналы Bash, чтобы дать вам больше гибкости в том, как вы запускаете команды. Мы покажем вам, как это сделать.
Все о процессах
Всякий раз, когда программа выполняется в Linux или Unix-подобной операционной системе, запускается процесс. «Процесс» — это название внутреннего представления исполняемой программы в памяти компьютера. Для каждой активной программы существует процесс. На самом деле, существует процесс почти для всего, что запущено на вашем компьютере.Сюда входят компоненты вашей графической среды рабочего стола (GDE), такие как GNOME или KDE, а также системные демоны, которые запускаются при запуске.
Почему почти все запущено? Что ж, встроенные функции Bash, такие как cd, pwd и alias, не требуют запуска (или «порождения») процесса при их запуске. Bash выполняет эти команды в экземпляре оболочки Bash, которая запущена в окне вашего терминала. Эти команды выполняются быстро именно потому, что для их выполнения не требуется запускать процесс. (Вы можете ввести help в окне терминала, чтобы просмотреть список встроенных модулей Bash.)
Процессы могут выполняться на переднем плане, и в этом случае они берут на себя управление вашим терминалом до тех пор, пока не завершатся, или же они могут выполняться в фоновом режиме. Процессы, работающие в фоновом режиме, не доминируют в окне терминала, и вы можете продолжать работать в нем. Или, по крайней мере, они не доминируют в окне терминала, если не генерируют вывод на экран.
Запутанный пример
Запустим простую трассировку ping. Мы собираемся пропинговать домен How-To Geek. Это будет выполняться как процесс переднего плана.
Мы получаем ожидаемые результаты, прокручивая окно терминала вниз. Мы не можем ничего делать в окне терминала, пока работает ping. Чтобы завершить команду, нажмите Ctrl+C .
На снимке экрана выделен видимый эффект сочетания клавиш Ctrl+C. ping дает краткую сводку и затем останавливается.
Давайте повторим это. Но на этот раз мы нажмем Ctrl+Z вместо Ctrl+C. Задача не будет прекращена. Это станет фоновой задачей. Нам вернули контроль над окном терминала.
На снимке экрана выделен видимый эффект от нажатия Ctrl+Z.
На этот раз нам сообщают, что процесс остановлен. Остановлено не значит прекращено. Это как машина на остановке. Мы его не разобрали и не выбросили. Он все еще в пути, стоит на месте, ждет своего часа. Теперь процесс является фоновым заданием.
Команда jobs выводит список заданий, запущенных в текущем сеансе терминала. И поскольку задания (неизбежно) являются процессами, мы также можем использовать команду ps, чтобы увидеть их. Давайте воспользуемся обеими командами и сравним их результаты. Мы будем использовать опцию T (терминал), чтобы перечислить только процессы, которые выполняются в этом окне терминала. Обратите внимание, что нет необходимости использовать дефис - с опцией T.
Команда jobs говорит нам:
Команда ps сообщает нам:
- PID: идентификатор процесса. Каждый процесс имеет уникальный идентификатор.
- TTY: псевдотелетайп (окно терминала), из которого был запущен процесс.
- STAT: статус процесса.
- ВРЕМЯ: количество процессорного времени, потребляемого процессом.
- КОМАНДА: команда, которая запустила процесс.
Это общие значения для столбца STAT:
- D: Непрерывный сон. Процесс находится в состоянии ожидания, обычно ожидая ввода или вывода, и его нельзя прервать.
- Я: бездействует.
- Р: Бегу.
- S: Прерывистый сон.
- T: остановлен сигналом управления заданием.
- Z: Процесс-зомби. Процесс был завершен, но его родительский процесс не «очистил».
За значением в столбце STAT может следовать один из следующих дополнительных индикаторов:
-
SS . Заглавная буква «S» говорит нам, что оболочка Bash спит, и ее можно прервать. Как только он нам понадобится, он ответит. Строчная буква «s» говорит нам, что оболочка является лидером сеанса.
Команда ping имеет состояние T . Это говорит нам о том, что ping был остановлен сигналом управления заданием. В этом примере это был Ctrl+Z, который мы использовали, чтобы перевести его в фоновый режим.
Команда ps T имеет состояние R , что означает выполнение. + указывает, что этот процесс является членом группы переднего плана. Таким образом, команда ps T выполняется на переднем плане.
Команда bg
Команда bg используется для возобновления фонового процесса. Его можно использовать как с номером задания, так и без него. Если вы используете его без номера задания, задание по умолчанию выводится на передний план. Процесс по-прежнему работает в фоновом режиме. Вы не можете отправлять в него какие-либо данные.
Если мы выполним команду bg, мы возобновим нашу команду ping:
Команда ping возобновляется, и мы снова видим прокручивающийся вывод в окне терминала. Имя команды, которая была перезапущена, отображается для вас. Это выделено на скриншоте.
Но у нас есть проблема. Задача работает в фоновом режиме и не принимает ввод. Так как же нам это остановить? Ctrl+C ничего не делает. Мы можем видеть его, когда набираем его, но фоновая задача не получает эти нажатия клавиш, поэтому продолжает весело пинговаться.
На самом деле сейчас мы находимся в странном смешанном режиме. Мы можем печатать в окне терминала, но то, что мы набираем, быстро сметается прокручивающимся выводом команды ping. Все, что мы вводим, вступает в силу на переднем плане.
Чтобы остановить нашу фоновую задачу, нам нужно перевести ее на передний план, а затем остановить.
Команда fg
Команда fg переводит фоновую задачу на передний план. Как и команду bg, ее можно использовать как с номером задания, так и без него. Использование его с номером задания означает, что он будет работать с конкретным заданием. Если он используется без номера задания, используется последняя команда, отправленная в фоновый режим.
Если мы введем fg, наша команда ping будет переведена на передний план. Вводимые нами символы смешиваются с выводом команды ping, но они обрабатываются оболочкой так, как если бы они были введены в командной строке, как обычно. И на самом деле, с точки зрения оболочки Bash, именно это и произошло.
И теперь, когда команда ping снова запущена на переднем плане, мы можем остановить ее с помощью Ctrl+C.
Нам нужно подавать правильные сигналы
Это было не совсем красиво. Очевидно, что запуск процесса в фоновом режиме лучше всего работает, когда процесс не производит выходных данных и не требует ввода.
Но, неважно, беспорядочно это или нет, наш пример выполнил:
- Перевод процесса в фоновый режим.
- Восстановление рабочего состояния процесса в фоновом режиме.
- Возвращение процесса на передний план.
- Завершение процесса.
При использовании Ctrl+C и Ctrl+Z вы отправляете сигналы процессу. Это сокращенные способы использования команды kill. Есть 64 различных сигнала, которые может послать убийство. Используйте команду kill -l в командной строке, чтобы вывести их список. kill — не единственный источник этих сигналов. Некоторые из них вызываются автоматически другими процессами в системе
Вот некоторые из наиболее часто используемых.
- SIGHUP: сигнал 1. Автоматически отправляется процессу, когда терминал, в котором он запущен, закрывается.
- SIGINT: Сигнал 2. Отправлен в процесс, в который вы нажали Ctrl+C . Процесс прерывается и сообщается о прекращении.
- SIGQUIT: сигнал 3. Отправляется процессу, если пользователь отправляет сигнал выхода Ctrl+D .
- SIGKILL: Сигнал 9. Процесс немедленно уничтожается и не будет пытаться корректно закрыться. Процесс не проходит корректно.
- SIGTERM: сигнал 15. Это сигнал по умолчанию, отправляемый kill . Это стандартный сигнал завершения программы.
- SIGTSTP: сигнал 20. Отправляется процессу, когда вы используете Ctrl+Z . Он останавливает процесс и переводит его в фоновый режим.
Мы должны использовать команду kill для подачи сигналов, которым не назначены комбинации клавиш.
Дальнейший контроль работы
Процесс, переведенный в фоновый режим с помощью Ctrl+Z, переводится в остановленное состояние. Мы должны использовать команду bg, чтобы снова запустить его. Запустить программу как работающий фоновый процесс очень просто. Добавьте амперсанд & в конец командной строки.
Хотя фоновые процессы лучше не записывать в окно терминала, мы будем использовать примеры, которые это делают. Нам нужно что-то на скриншотах, на что мы можем сослаться. Эта команда запустит бесконечный цикл как фоновый процесс:
пока верно; do echo «Процесс циклического обучения гика»; спать 3; готово &
Нам сообщается номер задания и идентификатор процесса. Наш номер задания — 1, а идентификатор процесса — 1979. Мы можем использовать эти идентификаторы для управления процессом.
Вывод нашего бесконечного цикла начинает появляться в окне терминала. Как и раньше, мы можем использовать командную строку, но любые команды, которые мы вводим, перемежаются выводом процесса цикла.
Чтобы остановить наш процесс, мы можем использовать задания, чтобы напомнить себе номер задания, а затем использовать команду kill .
jobs сообщает, что наш процесс является заданием номер 1. Чтобы использовать этот номер с kill, мы должны поставить перед ним знак процента % .
kill отправляет сигнал SIGTERM, номер сигнала 15, процессу, и он завершается. При последующем нажатии клавиши Enter отображается состояние задания. В нем процесс указан как «завершенный». Если процесс не отвечает на команду kill, вы можете поднять его на ступень выше. Используйте команду kill с SIGKILL , сигнал номер 9. Просто поставьте цифру 9 между командой kill и номером задания.
Что мы рассмотрели
- Ctrl+C: отправляет SIGINT , сигнал 2, процессу, если он принимает ввод, и сообщает ему о завершении.
- Ctrl+D: отправляет SISQUIT , сигнал 3, в процесс, если он принимает ввод, и сообщает ему завершить работу.
- Ctrl+Z: отправляет сигнал SIGSTP , сигнал 20, в процесс и сообщает ему, чтобы он остановился (приостановил) и стал фоновым процессом.
- jobs: список фоновых заданий и их номер.
- bgномер_задания: перезапускает фоновый процесс. Если вы не укажете номер задания, будет использоваться последний процесс, который был преобразован в фоновую задачу.
- fgномер_задания: переводит фоновый процесс на передний план и перезапускает его. Если вы не укажете номер задания, будет использоваться последний процесс, который был преобразован в фоновую задачу.
- командная строка&: добавление амперсанда & в конец командной строки приводит к выполнению этой команды в качестве фоновой задачи, которая выполняется.
- kill %job_number: отправляет SIGTERM , сигнал 15, процессу для его завершения.
- kill 9%job_number: отправляет SIGKILL, сигнал 9, процессу и резко завершает его.
Команды Linux | |
Файлы | tar · pv · cat · tac · chmod · grep · diff · sed · ar · man · pushd · popd · fsck · testdisk · seq · fd · pandoc · cd · $PATH · awk · join · jq · fold · uniq · journalctl · tail · stat · ls · fstab · echo · less · chgrp · chown · rev · look · strings · type · rename · zip · unzip · mount · umount · install · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · du · ln · patch · convert · rclone · shred · srm |
Процессы | alias · screen · top · nice · renice · прогресс · strace · systemd · tmux · chsh · история · at · пакетное · бесплатное · которое · dmesg · chfn · usermod · ps · chroot · xargs · tty · pinky · lsof · vmstat · timeout · стена · yes · kill · спать · sudo · su · время · groupadd · usermod · группы · lshw · выключение · перезагрузка · halt · poweroff · passwd · lscpu · crontab · date · bg · fg |
Сеть | netstat · ping · traceroute · ip · ss · whois · fail2ban · bmon · копать · finger · nmap · ftp · curl · wget · who · whoami · w · iptables · ssh-keygen · ufw |
- › Как использовать фильтры Wireshark в Linux
- › Как убить зомби-процессы в Linux
- › Почему не было Windows 9?
- › Как восстановить метки панели задач в Windows 11
- › Что означает XD и как вы его используете?
- › Почему прозрачные чехлы для телефонов желтеют?
- › Как установить Google Play Маркет в Windows 11
- ›5 шрифтов, которые следует прекратить использовать (и лучшие альтернативы)
Читайте также: