Это интересно! Здесь н
Производим сервера, с бесплатной доставкой в Москве.© 2009-2013 Пингвинус Linux
20.06.2012 Комментарии 22.06.2012, 01:39 Более корректный вариант: использование nohup.Это позволит нам отследить ошибки, если они вдруг возникли или проконтролировать, что работа программы была завершена корректно, как в случае с фоновой загрузкой файла, например.nohup <наша фоновая программа> &При таком использовании весь стандартный вывод программы идет в файл nohup.out (по умолчанию, можно переопределить ключом -O), а терминал освобождается и может быть закрыт. Причем вывод идет и при закрытом терминале или отсоединенной сессии, в случае с доступом по ssh (основной вариант использования в моем случае). Natrio23.06.2012, 10:39 Гораздо правильнее (и надёжнее) будет использовать не nohup, а setsid, поскольку многие программы могут закрываться НЕ ТОЛЬКО по сигналу HUP.setsid создаёт для запускаемой через неё программы отдельную сессию, изначально отсоединённую от текущей консоли TTY, а значит не получающую от неё никаких сигналов. В простейшем случае:setsid программаили, если требуется сразу отключить стандартный ввод-вывод, можно сделать такой скрипт:#!/bin/shsetsid "$@" &> /dev/null < /dev/null &Положить его, скажем, в /usr/local/bin/run и запускатьrun программа параметры Nor26.06.2012, 05:12 " Команда disown с ключом -h используется для того, чтобы пометить процесс с номером 1Процесс с номером 1 это всегда init :) , в данном случае это _номер_задачи_ относящейся к данному контролирующему терминалу. Для поиска задач используется команда jobs. Если мы имеем только одну задачу, то указывать %1 не обязательно, можно просто fg или bg (для перевода в приоритетный или фоновый режим). Также можно указывать имя %edit или часть имени %?ediКроме этого, не каждый интерпретатор посылает сигнал SIGHUP при закрытии терминала, но bash посылает :)Про nohup, setsid согласен. Nor26.06.2012, 05:33 И да, не сочтите за доковырку, то что на рисунке это _эмулятор_ терминала :) в настоящий терминал можно попасть по Ctrl-Alt-F[x] (на F7 иксы). Добавить комментарийВы не зарегистрированы: комментарий будет опубликован только после просмотра администратором сайта.Имя *Введите ваше имя.Электронная почта *Электронная почта публиковаться не будет.Комментарий *Код подтвержденияВведите символы, которые изображены на рисунке.Кликните на изображение, чтобы сгенерировать новый код.
bg 1Команда disown с ключом -h используется для того, чтобы пометить процесс с номером 1 (это наша запущенная программа) не закрываться при закрытии терминала (на нее не подействует сигнал SIGHUP), а команда bg переводит задачу в фоновый режим. Теперь вы можете спокойно закрыть терминал (кликнуть на крестик или ввести команду exit).Есть еще один способ, при котором окно терминала закроется сразу после запуска какой-нибудь команды. Для этого нужно добавить к команде & exit. Например, следующая команда запустит редактор GEdit и тут же закроет терминал:gedit & exit
Предположим, что вы открыли терминал в Linux и запустили в нем какую-нибудь программу. Если вы закроете окно терминала, тогда программа, которую вы запустили, тоже закроется.Чтобы закрыть терминал, но при этом оставить работать запущенную из него программу, перейдите в терминал и нажмите сочетание клавиш Ctrl+Z (это позволит вам получить доступ к командой строке). Затем наберите в терминале следующие команды:disown -h %1
Закрываем окно терминала без закрытия открытой программы. Linux блоги. Пингвинус Linux / / Закрываем окно терминала без закрытия открытой программы
Комментариев нет:
Отправить комментарий