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

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

Было бы хорошо, если бы я мог опередить процесс слишком поздно.

PS Было бы очень здорово, если бы вы также могли показать мне, как "отправить" фоновый процесс на экран GNU, который может быть инициализирован или нет.

4 ответа

Решение

Чтобы "фон" процесс, когда вы запускаете его

Просто добавьте амперсанд (&) после команды.

Если программа пишет в стандартный поток, она все равно будет записывать данные на вашу консоль / терминал.

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

(Вы можете увидеть список заданий в фоновом режиме с jobs.)

например:

sh -c 'sleep 3 && echo I just woke up' & jobs

Чтобы создать фон для текущего запущенного процесса

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

  1. Нажмите Ctrl+z, чтобы перевести текущий процесс в спящий режим и вернуться в свою оболочку. (Этот процесс будет приостановлен, пока вы не отправите ему другой сигнал.)
  2. Запустить bg Команда возобновить процесс, но запустить его в фоновом режиме, а не на переднем плане.

Другой способ заключается в использовании nohup команда с & в конце строки.

Что-то вроде этого

nohup whatevercommandyouwant whateverparameters &

Это запустит его в фоновом режиме и отправит вывод в файл nohup.log.

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

Установить с помощью pip install hapless(или же python3 -m pip install hapless) и просто беги

      $ hap run my-command  # e.g. hap run python my_long_running_script.py
$ hap status  # check all the launched processes
$ hap logs 4  # output logs for you 4th background process
$ hap logs -f 2  # continuously stream logs for the 2nd process

См. документы для получения дополнительной информации.

Я пыталсяnohupно мой процесс остановился через день или два, поэтому я попробовал этот простой скрипт bash, чтобы перезапустить мою команду после ее остановки

run.sh

      while true; do
[ -e stopme ] && break
python3 main.py # your command here
done

тогда делай

      nohup bash run.sh &
Другие вопросы по тегам