Linux start program in background

Содержание
  1. Как запускать команды Linux в фоновом режиме
  2. How to Run Linux Commands in Background
  3. В этой статье мы поговорим о фоновых процессах Linux. Мы покажем вам, как запустить команду в фоновом режиме и как сохранить процесс работающим после закрытия сеанса оболочки.
  4. Запустите команду Linux в фоновом режиме
  5. Переместить процесс переднего плана в фон
  6. Поддерживать выполнение фоновых процессов после выхода из оболочки
  7. Альтернативы
  8. Screen
  9. Вывод
  10. How to Run Bash Commands in the Background in Linux
  11. End a Command with &
  12. & After a Command, Then Disown It
  13. & After a Command with /dev/null
  14. Nohup, with & and /dev/null
  15. Запуск команд Linux в фоновом режиме (+Видео)
  16. Видео
  17. Что такое приоритетный и фоновый режимы
  18. Как запустить команду в фоновом режиме
  19. Пример запуска команды в фоновом режиме
  20. Как вывести задание из фонового режима
  21. Просмотр заданий, работающих в фоновом режиме
  22. Перевод задания в фоновый режим
  23. Заключение
  24. How to Start Linux Command in Background and Detach Process in Terminal
  25. How to Start a Linux Process or Command in Background
  26. Keep Linux Processes Running After Exiting Terminal
  27. Detach a Linux Processes From Controlling Terminal
  28. If You Appreciate What We Do Here On TecMint, You Should Consider:

Как запускать команды Linux в фоновом режиме

How to Run Linux Commands in Background

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

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

Что если выполнение команды занимает много времени, а вы хотите выполнять другие команды в это время? У вас есть несколько вариантов в вашем распоряжении. Наиболее очевидный и простой вариант — запустить новый сеанс оболочки и запустить в нем команду. Другой вариант — запустить команду в фоновом режиме.

Фоновый процесс — это процесс / команда, которая запускается из терминала и выполняется в фоновом режиме, без взаимодействия с пользователем.

Запустите команду Linux в фоновом режиме

Чтобы выполнить команду в фоновом режиме, добавьте символ амперсанда ( & ) в конце команды:

Идентификатор задания оболочки (заключенный в квадратные скобки) и идентификатор процесса будут напечатаны на терминале:

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

Фоновый процесс будет продолжать записывать сообщения в терминал, из которого вы вызвали команду. Для подавления stdout и stderr сообщения используют синтаксис следующий:

>/dev/null 2>&1 означает перенаправление stdout на /dev/null и stderr к stdout .

Используйте jobs утилиту для отображения состояния всех остановленных и фоновых заданий в текущем сеансе оболочки:

Вывод включает в себя номер задания, идентификатор процесса, состояние задания и команду, запустившую задание:

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

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

Чтобы завершить фоновый процесс, используйте kill команду, за которой следует идентификатор процесса:

Переместить процесс переднего плана в фон

Чтобы переместить запущенный процесс переднего плана в фоновом режиме:

  1. Остановите процесс, набрав Ctrl+Z .
  2. Переместите остановленный процесс в фоновом режиме, набрав bg .

Поддерживать выполнение фоновых процессов после выхода из оболочки

Если ваше соединение прерывается или вы выходите из сеанса оболочки, фоновые процессы завершаются. Есть несколько способов сохранить процесс после завершения сеанса интерактивной оболочки.

Одним из способов является удаление задания из управления заданиями оболочки с помощью disown встроенной оболочки:

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

Убедитесь, что задание удалено из таблицы активных заданий с помощью jobs -l команды. Для просмотра списка всех запущенных процессов, в том числе отключенных, используйте ps aux команду.

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

Команда nohup выполняет другую программу, указанную в качестве аргумента, и игнорирует все SIGHUP сигналы (зависания). SIGHUP это сигнал, который отправляется процессу, когда его управляющий терминал закрыт.

Чтобы запустить команду в фоновом режиме, используя nohup команду, введите:

Вывод команды перенаправляется в nohup.out файл.

Если вы выйдете из системы или закроете терминал, процесс не прекратится.

Читайте также:  Acer support windows 10

Альтернативы

Есть ряд программ, которые позволяют вам иметь несколько интерактивных сессий одновременно.

Screen

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

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

Вывод

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

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

Источник

How to Run Bash Commands in the Background in Linux

There’s nothing more annoying than running a command in your terminal and having it run for minutes, sometimes hours, and not be able to use your terminal again. Sure, you can use tabs, but that’s a clunky solution, and it’s not always optimal because you may want to see updates as you’re working. Here we show you a few different ways to run bash commands in the background in Linux.

Also read: How to Use lsof Command in Linux to List Open Files

End a Command with &

If you want to push a command into the background, using & at the end is an easy way to do that. This way, you can issue a command in the background and continue to use your terminal as it runs. It comes with a catch, though. Using & doesn’t disconnect the command away from you; it just pushes it into the background. This means that while you’re trying to use the terminal, anything the command wants to push to STDOUT or STDERR will still be printed, which may be distracting.

When the terminal session is closed, the command ends. You can also kill the command by issuing the jobs command, finding the number of the command that’s running, and killing it with the kill command. That syntax is as follows:

Using & is good if you need to push something off for a bit but don’t expect it to continue forever.

& After a Command, Then Disown It

Running a command with just & pushes it off to the back and keeps it running as long as the terminal window is open. If, however, you’re looking to keep this command running in constant, even with your terminal session ending, you can use the disown command.

To use this method, start by adding an & .

As mentioned above, using & pushes this command into the background but doesn’t detach it from your user. You can verify this by typing jobs into the terminal. It’ll show the command running in the background as we saw before.

Just type disown into the shell, and it’ll do just that. (And you can once again verify this with the jobs command.)

You can just make out the disown command in there

Now you can close your terminal and continue about your day. It’ll still keep piping things to STDOUT or STDERR , but once you exit and reopen your terminal, you won’t see anything there. You can find the command again with the top or ps commands and kill it with the kill command.

The disowned job is the second one, with the PID 16238.

& After a Command with /dev/null

Adding & after a command will push a command into the background, but as a result, the background command will continue to print messages into the terminal as you’re using it. If you’re looking to prevent this, consider redirecting the command to /dev/null .

This does not prevent the command from closing when the terminal closes. However, as mentioned above, it’s possible to use disown to disown the running command away from the user. You can also kill it in either of the methods mentioned above if you don’t want it to run anymore.

Читайте также:  Просмотр полной карты сети windows 10

Nohup, with & and /dev/null

Unlike the previous commands, using nohup allows you to run a command in the background and keep it running. How? nohup bypasses the HUP signal (signal hang up), making it possible to run commands in the background even when the terminal is off. Combine this command with redirection to “/dev/null” (to prevent nohup from making a nohup.out file), and everything goes to the background with one command.

Also read: What Is Nohup and How Do You Use It?

Most terminal programs on Linux today have features built in to allow them to run in the background with little effort. Along with that, modern init systems (like systemd) can allow users to start programs like services at boot or whenever.

Still, some programs on Linux lack the ability to run as a daemon or integrate with modern init systems. This is a real inconvenience but is understandable, as not all developers have the skill or time to add new features.

Luckily, commands like nohup or disown are still a reality and can close the gap in moving programs like this to the background. They’re not perfect or fancy, but they get the job done when needed.

If you enjoyed this Linux article, make sure to check out some of our other Linux content, like how to connect your Google account to GNOME Shell, the best Linux distros for windows users, and LS commands you need to know.

John is a young technical professional with a passion for educating users on the best ways to use their technology. He holds technical certifications covering topics ranging from computer hardware to cybersecurity to Linux system administration.

Источник

Запуск команд Linux в фоновом режиме (+Видео)

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

Видео

Видео-версия. Наше видео про запуск команд в фоновом режиме.

Что такое приоритетный и фоновый режимы

Обычно все команды Linux запускаются в оболочке (в командной строке) в приоритетном режиме, называемом foreground. В этом режиме оболочка ожидает завершения работы команды, прежде чем пользователь сможет ввести новую команду.

Можно запускать команды Linux в фоновом режимеbackground, при котором не нужно ожидать завершения команды, чтобы запустить другую команду.

Пользователь может запускать несколько команд в фоновом режиме одновременно. То есть эти команды будут выполняться параллельно. При этом окно терминала доступно для ввода новых команд.

Как запустить команду в фоновом режиме

Чтобы запустить команду в фоновом режиме, нужно в конец команды через пробел добавить знак амперсанда &

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

Пример запуска команды в фоновом режиме

Рассмотрим пример. Предположим, нам нужно распаковать большой tar-архив. Выполняем команду:

Распаковка архива выполняется в фоновом режиме, а мы можем вводить в терминале новые команды.

Как вы можете видеть, на экран выводятся символы [1] 7958
[1] — это номер, который оболочка назначила нашему фоновому заданию, чтобы мы могли идентифицировать его и управлять им (см. ниже как).
7958 — это идентификатор (PID) процесса, который был создан.

Как вывести задание из фонового режима

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

Команда fg , запущенная без аргументов, выводит из фонового режима последний запущенный фоновый процесс.

Например, запустим две команды в фоновом режиме и выполним команду fg . В результате мы выведем вторую команду из фонового режима.

Можно указать номер конкретного задания, которое нужно вывести из фонового режима:

Просмотр заданий, работающих в фоновом режиме

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

Символом плюс + помечается последнее запущенное задание. Если использовать команду fg без аргументов, то она будет применена именно к этому заданию.
Символом минус — помечается задание, которое было запущено перед последним.

Перевод задания в фоновый режим

Чтобы перевести задание, которое в данный момент работает в приоритетном режиме, в фоновый режим, используется команда bg

Читайте также:  Honestech vhs to dvd windows 10

Так как задание работает в приоритетном режиме, то вы не можете вводить команды, поэтому сначала нужно приостановить выполнение задания. Для этого используется сочетание клавиш Ctrl+Z

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

Заключение

Мы кратко рассмотрели, как запускать команды Linux в фоновом режиме. Использование фонового режима позволяет запускать одновременно несколько процессов из одного окна терминала (экземпляра оболочки). Особенно это удобно, когда команда должна выполняться длительное время и не требует постоянного наблюдения. Пользователь при этом может продолжать пользоваться командной строкой.

Источник

How to Start Linux Command in Background and Detach Process in Terminal

In this guide, we shall bring to light a simple yet important concept in process handling in a Linux system, that is how to completely detach a process from its controlling terminal.

When a process is associated with a terminal, two problems might occur:

  1. your controlling terminal is filled with so much output data and error/diagnostic messages.
  2. in the event that the terminal is closed, the process together with its child processes will be terminated.

To deal with these two issues, you need to totally detach a process from a controlling terminal. Before we actually move to solve the problem, let us briefly cover how to run processes in the background.

How to Start a Linux Process or Command in Background

If a process is already in execution, such as the tar command example below, simply press Ctrl+Z to stop it then enter the command bg to continue with its execution in the background as a job.

You can view all your background jobs by typing jobs . However, its stdin, stdout, stderr are still joined to the terminal.

Run Linux Command in Background

You can as well run a process directly from the background using the ampersand, & sign.

Start Linux Process in Background

Take a look at the example below, although the tar command was started as a background job, an error message was still sent to the terminal meaning the process is still connected to the controlling terminal.

Linux Process Running in Background Message

Keep Linux Processes Running After Exiting Terminal

We will use disown command, it is used after the a process has been launched and put in the background, it’s work is to remove a shell job from the shell’s active list jobs, therefore you will not use fg , bg commands on that particular job anymore.

In addition, when you close the controlling terminal, the job will not hang or send a SIGHUP to any child jobs.

Let’s take a look at the below example of using diswon bash built-in function.

Keep Linux Process Running After Closing Terminal

You can also use nohup command, which also enables a process to continue running in the background when a user exits a shell.

Put Linux Process in Background After Closing Shell

Detach a Linux Processes From Controlling Terminal

Therefore, to completely detach a process from a controlling terminal, use the command format below, this is more effective for graphical user interface (GUI) applications such as firefox:

In Linux, /dev/null is a special device file which writes-off (gets rid of) all data written to it, in the command above, input is read from, and output is sent to /dev/null.

As a concluding remark, provided a process is connected to a controlling terminal, as a user, you will see several output lines of the process data as well as error messages on your terminal. Again, when you close the a controlling terminal, your process and child processes will be terminated.

Importantly, for any questions or remarks on the subject, reach us by using the comment form below.

If You Appreciate What We Do Here On TecMint, You Should Consider:

TecMint is the fastest growing and most trusted community site for any kind of Linux Articles, Guides and Books on the web. Millions of people visit TecMint! to search or browse the thousands of published articles available FREELY to all.

If you like what you are reading, please consider buying us a coffee ( or 2 ) as a token of appreciation.

We are thankful for your never ending support.

Источник

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