Редактировать 25.10.2016: Если вы не собираетесь использовать спящий режим, потому что вы не можете или вы предпочитаете suspend / S3, тогда вы можете отключить его в Grub, добавив noresume в GRUB_CMDLINE_LINUX_DEFAULT в /etc/default/grub и запустите [ f5]. Вот пример на Chromebook N22, работающем под управлением GalliumOS:
livewire@zc01:~$ systemd-analyze
Startup finished in 8.580s (kernel) + 4.160s (userspace) = 12.740s
livewire@zc01:~$ systemd-analyze
Startup finished in 3.595s (kernel) + 4.254s (userspace) = 7.850s
Я нашел это, потому что мне было любопытно, что часть загрузки «Выполнение сценариев локального подсчета» во время загрузки и немного исследовалась в initramfs, что привело меня к этот параметр, который я использовал ранее, когда моя система не могла проснуться из спящего режима.
Редактировать 06.08.2016: вам следует обновиться до последней версии вашего дистрибутива Linux, который приходит с системойd.
Ингредиенты:
Получите систему UEFI с незащищенным кодом UEFI или Coreboot. Установите SSD. Установите Ubuntu в режиме UEFI. Бонус: сжимайте initramfs с помощью xz lzop и включают только модули. (Вы должны действительно знать, что делаете, прежде чем пытаться это сделать.) Бонус: Удалите ненужные демоны или настройте их для запуска быстрее. Хотя установка по умолчанию уже достаточно хороша. Пример: задание инициализации btrfs, которое ищет пулы для монтирования, пока на этом устройстве нет томов btrfs. Это заставило меня удалить инструменты btrfs из некоторых моих установок.Я должен сказать, что 32 секунды на самом деле достаточно хороши. Это не будет намного быстрее с традиционным оборудованием. Мой новый Lenovo T530 занимает такое же количество времени, чтобы загрузиться в устаревшем режиме. С новым микро SSD, который я недавно установил, и Ubuntu в режиме UEFI, он до 15 секунд не нажал кнопку питания для входа в систему. По-прежнему кажется, что он тратит 5 секунд во время публикации, но абсолютно не тратит время на запуск реальной операционной системы. Микро SSD имеет скорость передачи 280 Мбайт / с, может быть 500 Мбайт / с SSD может сделать это до 7 секунд. Но разработчикам действительно сокращать время загрузки pre OS (POST, а что нет).
Что касается профилирования загрузки и параллелизма между командами. Эти данные можно рассматривать как датированные или, в конечном итоге, мифы. Я помню, что автоматическое загрузочное профилирование или что-то, что сделало загрузочный профилирование абсолютно лишним, было добавлено в Linux или в базовую систему несколько лет назад, с тех пор я больше не использовал профилирование загрузки после установки нового пакета ядра. Параметр параллелизма оболочки, как говорили, нарушал вещи, но с Systemd и Upstart он тоже должен быть лишним и не должен иметь положительного эффекта.
Таинственный амперсанд «& amp;» суффикс, кажется, заставляет терминал поместить процесс в фоновый режим ... (но я не уверен, что там происходит).
blockquote>Он делает, и часто то, что вы хотите. Если вы забыли использовать & amp ;, вы можете приостановить программу с помощью ctrl-z, затем поместите ее в фоновом режиме с помощью команды bg и продолжите использовать эту оболочку.
Процесс 'stdin, stdout и stderr все еще подключены к терминалу; вы можете перенаправить их из / в / dev / null или любой другой файл (например, сохранить выходной журнал где-нибудь):
some-program & lt; / dev / null & amp; gt; / dev / null & amp; # & amp; & gt; файл является bash для 1 & gt; файл 2 & amp; 1
Вы можете увидеть процесс в заданиях, вернуть его на передний план (команда fg) и отправить его сигналы (команда kill).
Некоторые графические программы будут отсоединены от терминала; если это так, когда вы запускаете команду «обычно», вы заметите, что она запускает графическую программу и «завершает».
Вот короткий script , вы можете поместить его в ~ / bin , который я назвал runbg:
#! / bin / bash [$ # -eq 0] & Amp; & Amp; {# $ # - количество аргументов args echo "$ (basename $ 0): отсутствует команда" & gt; & amp; 2 exit 1} prog = "$ (который" $ 1 ")" # см. ниже [-z "$ prog"] & amp; ; & амп; {echo "$ (basename $ 0): неизвестная команда: $ 1" & gt; & amp; 2 exit 1} shift # удалить $ 1, теперь $ prog, из args tty -s & amp; & amp; & amp; exec & lt; / dev / null #, если stdin является терминалом, перенаправление с нулевого tty -s & amp; 1 & amp; & amp; exec & gt; / dev / null #, если stdout является терминалом, перенаправляет на null tty -s & amp; 2 & amp; & amp; exec 2 & gt; 1 # stderr в stdout (который может быть не равен нулю) "$ prog" "$ @" & amp; # $ @ - все args
Я просматриваю программу ($ prog) перед перенаправлением, поэтому можно сообщить об ошибках в ее местонахождении. Запустите его как «runbg your-command args ...»; вы можете перенаправить stdout / err в файл, если вам нужно где-то сохранить выход.
За исключением перенаправления и обработки ошибок, это эквивалентно ответу htorque .
Это работает даже внутри скрипта (как и псевдонимы, трейлер «& amp;» обычно не разрешен в сценариях, потому что они не являются интерактивными):
bash -i & gt; / dev / null 2 & amp; 1 & lt; & lt; nohup gedit & amp;
Это сработало для меня:
$ (nohup gedit 2 & gt; / dev / null & amp;)
Чтобы запустить приложение и отсоединить его от запущенного терминала, используйте & amp;!.
firefox & amp ;!
Использовать nohup
nohup - это программа, которая запускает заданную команду с игнорируемыми сигналами зависания, так что команда может продолжать работать в фоновом режиме после его родительского процесса завершается. См. Справочную страницу
blockquote>Например:
nohup gedit something
Как выяснилось много людей, nohup - это то, что нужно учитывать. Но nohup stills остается открытым на терминале и отображает активность программы на терминале, который раздражает. После этого вы можете просто закрыть терминал, чтобы этого избежать. Я обнаружил очень простой способ, который я использую.
nohup gedit & amp; exit
И все. Он открывает gedit и закрывает терминал при запуске gedit. Поскольку теперь gedit не связан с терминалом, он остается активным.
Это сработало для меня:
$ (some-program & amp;) & gt; / dev / null # Примеры: $ (gedit & amp;) & gt; / dev / null $ (google-chrome & amp;) & gt; / dev / null
Откройте терминал, введите экран , введите команду, которую вы хотите запустить, закройте терминал. Программа должна продолжать работать в сеансе GNU Screen .
Предположим, что gedit
- программа, которую вы хотите запустить отдельно (aka. «disown», «disentangle», «disouple»). Существуют разные способы в зависимости от того, что вы хотите сделать точно:
disown -h
is путь, если вы хотите сделать это с уже запущенной программой (т. е. если вы забыли nohup
). Сначала вам нужно остановить его, используя Ctrl + Z. Затем вы можете вставить в скобку с помощью bg [jobId]
(например, bg 1
). Вы получаете список текущих заданий с их jobId с помощью заданий
. После этого вы можете отделить его от терминала, используя disown -h% [jobId]
. Пример терминальной сессии:
confus @ confusion: ~ $ gedit ^ Z [1] + Остановлен gedit confus @ confusion: ~ $ jobs [1] + Остановлен gedit confus @ confusion: ~ $ bg 1 [1] + gedit & amp; confus @ confusion: ~ $ disown -h% 1 confus @ confusion: ~ $ exit
nohup
не всегда присутствует на всех машинах. Если вы знаете, что хотите разделить заранее, вы должны использовать:
nohup gedit & amp;
Возможно, вам также захочется перенаправить вывод оболочки, а ваша программа - на источник псевдослучайного кода, так что: nohup ./myprogram & gt; foo.out 2 & gt; bar.err & lt; / dev / null & amp;
. Вы хотите перенаправить вывод, чтобы он не был раздражен им или использовать его позже. Нулевой вход может помочь предотвратить hickups в ssh a.
Вы можете добиться подобного эффекта с помощью
confus @ confusion : ~ $ (geany 2 & amp; 1 / dev / null & amp;)
Скобки открывают новую подоболочку для запуска gedit. 2 & amp; 1 / dev / null
перенаправляет вывод оболочки в никуда (подавление вывода). И & amp;
в конце ставит процесс в фоновом режиме.
Также терминальное мультиплексирование с использованием экрана или бёб . Вы в основном запускаете программу самостоятельно. Я действительно могу рекомендовать byobu по другим причинам. Ниже приведен список ярлыков boybu, которые могут пригодиться для ваших первых шагов:
Полезно:
Менее полезно:
Shift-F2 Разделить экран по горизонтали - Ctrl-F2 Сдвинуть экран по вертикали - Shift-F3 Переместить фокус на следующий раскол - Shift-F4 Переместить фокус на предыдущий раскол - Shift-F5 Свернуть все расщепления - - F5 Обновить все уведомления о состоянии - F8 Переименовать текущее окно - F9 Запустить меню настройки Byobu - F12 Экран исчезновения экрана GNU - Alt-Pageup Прокрутите страницу назад по этому окну - Alt-Pagedown Прокрутите страницу вперед по истории этого окна - Ctrl-a-! Включите или отключите все комбинации клавиш Byobu -
в
- хороший полезный инструмент для запуска команды в запланированное время. Это может быть «неправильно использовано» для отсоединения команды от оболочки:
echo './myprogram myoption1 myoption2' | теперь
Также вы можете посмотреть setsid
и start-stop-daemon
, но другие методы должны быть достаточными.
Таинственный амперсанд «& amp;» суффикс, кажется, заставляет терминал поместить процесс в фоновый режим ... (но я не уверен, что там происходит).
blockquote>Он делает, и часто то, что вы хотите. Если вы забыли использовать & amp ;, вы можете приостановить программу с помощью ctrl-z, затем поместите ее в фоновом режиме с помощью команды bg и продолжите использовать эту оболочку.
Процесс 'stdin, stdout и stderr все еще подключены к терминалу; вы можете перенаправить их из / в / dev / null или любой другой файл (например, сохранить выходной журнал где-нибудь):
some-program & lt; / dev / null & amp; gt; / dev / null & amp; # & amp; & gt; файл является bash для 1 & gt; файл 2 & amp; 1
Вы можете увидеть процесс в заданиях, вернуть его на передний план (команда fg) и отправить его сигналы (команда kill).
Некоторые графические программы будут отсоединены от терминала; если это так, когда вы запускаете команду «обычно», вы заметите, что она запускает графическую программу и «завершает».
Вот короткий script , вы можете поместить его в ~ / bin , который я назвал runbg:
#! / bin / bash [$ # -eq 0] & Amp; & Amp; {# $ # - количество аргументов args echo "$ (basename $ 0): отсутствует команда" & gt; & amp; 2 exit 1} prog = "$ (который" $ 1 ")" # см. ниже [-z "$ prog"] & amp; ; & амп; {echo "$ (basename $ 0): неизвестная команда: $ 1" & gt; & amp; 2 exit 1} shift # удалить $ 1, теперь $ prog, из args tty -s & amp; & amp; & amp; exec & lt; / dev / null #, если stdin является терминалом, перенаправление с нулевого tty -s & amp; 1 & amp; & amp; exec & gt; / dev / null #, если stdout является терминалом, перенаправляет на null tty -s & amp; 2 & amp; & amp; exec 2 & gt; 1 # stderr в stdout (который может быть не равен нулю) "$ prog" "$ @" & amp; # $ @ - все args
Я просматриваю программу ($ prog) перед перенаправлением, поэтому можно сообщить об ошибках в ее местонахождении. Запустите его как «runbg your-command args ...»; вы можете перенаправить stdout / err в файл, если вам нужно где-то сохранить выход.
За исключением перенаправления и обработки ошибок, это эквивалентно ответу htorque .
Чтобы запустить приложение и отсоединить его от запущенного терминала, используйте & amp;!.
firefox & amp ;!
disown & lt; pid-of-command & gt;
после запуска команды в фоновом режиме.
– htorque
31 October 2010 в 16:29
Это работает даже внутри скрипта (как и псевдонимы, трейлер «& amp;» обычно не разрешен в сценариях, потому что они не являются интерактивными):
bash -i & gt; / dev / null 2 & amp; 1 & lt; & lt; nohup gedit & amp;
Это сработало для меня:
$ (nohup gedit 2 & gt; / dev / null & amp;)
Откройте терминал, введите экран , введите команду, которую вы хотите запустить, закройте терминал. Программа должна продолжать работать в сеансе GNU Screen .
Это сработало для меня:
$ (some-program & amp;) & gt; / dev / null # Примеры: $ (gedit & amp;) & gt; / dev / null $ (google-chrome & amp;) & gt; / dev / null
Как выяснилось много людей, nohup - это то, что нужно учитывать. Но nohup stills остается открытым на терминале и отображает активность программы на терминале, который раздражает. После этого вы можете просто закрыть терминал, чтобы этого избежать. Я обнаружил очень простой способ, который я использую.
nohup gedit & amp; exit
И все. Он открывает gedit и закрывает терминал при запуске gedit. Поскольку теперь gedit не связан с терминалом, он остается активным.
Использовать nohup
nohup - это программа, которая запускает заданную команду с игнорируемыми сигналами зависания, так что команда может продолжать работать в фоновом режиме после его родительского процесса завершается. См. Справочную страницу
blockquote>Например:
nohup gedit something
nohup
следует использовать в этом сценарии.
– boehj
31 May 2011 в 17:26
nohup
(и отключено
bash) не позволяет сигналу достичь приложения.
– enzotib
31 May 2011 в 17:33
nohup
создает файл в текущем каталоге с именем nohup.out
. Для получения дополнительной информации см. Справочную страницу . Поэтому я предпочитаю отказаться от
и за то, что disown
работает после запуска gedit
.
– Flimm
31 May 2011 в 19:17
Предположим, что gedit
- программа, которую вы хотите запустить отдельно (aka. «disown», «disentangle», «disouple»). Существуют разные способы в зависимости от того, что вы хотите сделать точно:
disown -h
is путь, если вы хотите сделать это с уже запущенной программой (т. е. если вы забыли nohup
). Сначала вам нужно остановить его, используя Ctrl + Z. Затем вы можете вставить в скобку с помощью bg [jobId]
(например, bg 1
). Вы получаете список текущих заданий с их jobId с помощью заданий
. После этого вы можете отделить его от терминала, используя disown -h% [jobId]
. Пример терминальной сессии:
confus @ confusion: ~ $ gedit ^ Z [1] + Остановлен gedit confus @ confusion: ~ $ jobs [1] + Остановлен gedit confus @ confusion: ~ $ bg 1 [1] + gedit & amp; confus @ confusion: ~ $ disown -h% 1 confus @ confusion: ~ $ exit
nohup
не всегда присутствует на всех машинах. Если вы знаете, что хотите разделить заранее, вы должны использовать:
nohup gedit & amp;
Возможно, вам также захочется перенаправить вывод оболочки, а ваша программа - на источник псевдослучайного кода, так что: nohup ./myprogram & gt; foo.out 2 & gt; bar.err & lt; / dev / null & amp;
. Вы хотите перенаправить вывод, чтобы он не был раздражен им или использовать его позже. Нулевой вход может помочь предотвратить hickups в ssh a.
Вы можете добиться подобного эффекта с помощью
confus @ confusion : ~ $ (geany 2 & amp; 1 / dev / null & amp;)
Скобки открывают новую подоболочку для запуска gedit. 2 & amp; 1 / dev / null
перенаправляет вывод оболочки в никуда (подавление вывода). И & amp;
в конце ставит процесс в фоновом режиме.
Также терминальное мультиплексирование с использованием экрана или бёб . Вы в основном запускаете программу самостоятельно. Я действительно могу рекомендовать byobu по другим причинам. Ниже приведен список ярлыков boybu, которые могут пригодиться для ваших первых шагов:
Полезно:
Менее полезно:
Shift-F2 Разделить экран по горизонтали - Ctrl-F2 Сдвинуть экран по вертикали - Shift-F3 Переместить фокус на следующий раскол - Shift-F4 Переместить фокус на предыдущий раскол - Shift-F5 Свернуть все расщепления - - F5 Обновить все уведомления о состоянии - F8 Переименовать текущее окно - F9 Запустить меню настройки Byobu - F12 Экран исчезновения экрана GNU - Alt-Pageup Прокрутите страницу назад по этому окну - Alt-Pagedown Прокрутите страницу вперед по истории этого окна - Ctrl-a-! Включите или отключите все комбинации клавиш Byobu -
в
- хороший полезный инструмент для запуска команды в запланированное время. Это может быть «неправильно использовано» для отсоединения команды от оболочки:
echo './myprogram myoption1 myoption2' | теперь
Также вы можете посмотреть setsid
и start-stop-daemon
, но другие методы должны быть достаточными.
bg% 1
вы можете просто ввести bg
.
– MasterMastic
15 March 2016 в 16:51
Таинственный амперсанд «& amp;» суффикс, кажется, заставляет терминал поместить процесс в фоновый режим ... (но я не уверен, что там происходит).
blockquote>Он делает, и часто то, что вы хотите. Если вы забыли использовать & amp ;, вы можете приостановить программу с помощью ctrl-z, затем поместите ее в фоновом режиме с помощью команды bg и продолжите использовать эту оболочку.
Процесс 'stdin, stdout и stderr все еще подключены к терминалу; вы можете перенаправить их из / в / dev / null или любой другой файл (например, сохранить выходной журнал где-нибудь):
some-program & lt; / dev / null & amp; gt; / dev / null & amp; # & amp; & gt; файл является bash для 1 & gt; файл 2 & amp; 1
Вы можете увидеть процесс в заданиях, вернуть его на передний план (команда fg) и отправить его сигналы (команда kill).
Некоторые графические программы будут отсоединены от терминала; если это так, когда вы запускаете команду «обычно», вы заметите, что она запускает графическую программу и «завершает».
Вот короткий script , вы можете поместить его в ~ / bin , который я назвал runbg:
#! / bin / bash [$ # -eq 0] & Amp; & Amp; {# $ # - количество аргументов args echo "$ (basename $ 0): отсутствует команда" & gt; & amp; 2 exit 1} prog = "$ (который" $ 1 ")" # см. ниже [-z "$ prog"] & amp; ; & амп; {echo "$ (basename $ 0): неизвестная команда: $ 1" & gt; & amp; 2 exit 1} shift # удалить $ 1, теперь $ prog, из args tty -s & amp; & amp; & amp; exec & lt; / dev / null #, если stdin является терминалом, перенаправление с нулевого tty -s & amp; 1 & amp; & amp; exec & gt; / dev / null #, если stdout является терминалом, перенаправляет на null tty -s & amp; 2 & amp; & amp; exec 2 & gt; 1 # stderr в stdout (который может быть не равен нулю) "$ prog" "$ @" & amp; # $ @ - все args
Я просматриваю программу ($ prog) перед перенаправлением, поэтому можно сообщить об ошибках в ее местонахождении. Запустите его как «runbg your-command args ...»; вы можете перенаправить stdout / err в файл, если вам нужно где-то сохранить выход.
За исключением перенаправления и обработки ошибок, это эквивалентно ответу htorque .
ctrl-z
(suspend) снова возвращает мне доступ к командной строке, но затушевывает GUI, пока я не выдаю bg
, который кажется отменить его. (имеет смысл) ... Есть еще одна команда, с помощью которой я могу отсоединить графический интерфейс ... Ага! Теперь я понимаю, что вы подразумеваете под sighals (kill command)
... (интересные вещи эти сигналы). Я использовал фрагмент кода, чтобы сделать dd
постепенно выводить его статистику. и он использовал kill
+ a СИГНАЛ ... Есть ли специальный СИГНАЛ для отсоединения «задания»?
– Peter.O
31 October 2010 в 16:41
отменить
задания -p gedit`` и, похоже, удалить работу ... (но я получил системные сообщения в терминале, когда я вручную закрытый gedit ... но я думаю, что на данный момент у меня есть прикрученный терминал ... слишком много экспериментирует :(
– Peter.O
31 October 2010 в 16:51
jobs -p command
, если у вас есть несколько экземпляров одной команды, работающей в фоновом режиме за раз. вы можете использовать jobs
, чтобы найти правильный идентификатор задания, а затем выполнить задания -p & lt; job-id & gt;
, чтобы получить PID задания. Лично я считаю, что версия с подоболочкой намного проще. ;-)
– htorque
31 October 2010 в 17:22
gedit & amp; открестился
– user
31 October 2010 в 17:32