Это - вполне интересная вещь, которую я заметил, например:
Я использую Редактора Atom, и я называю его через свое Терминальное использование:
$ atom
и нажмите Enter, который инициировал Редактора, и также выскажите терминальное мнение курсора к новой строке; создание его (Терминал), свободный для дальнейших утилит командной строки.
Однако, когда используемое использование RhythmBox rhythmbox
как терминальная команда, это имеет тенденцию работать над передним планом (я предполагаю), и сохраняет терминал занятым, пока я не закрываю Rhythmbox или использую CTRL+C.
Я попробовал это texmaker
также и это выполняет подобную вещь как Rhythmbox. Я знаю это &
возьмет процесс на фоне, но там логическое объяснение некоторых приложений, как упомянуто здесь?
Какие-либо взломы или подсказки так, чтобы я мог изучить, как настроить вещи как это?
Я пытаюсь использовать CTRL+Z на вышеупомянутых приложениях, и приложения затем отображаются серым и становятся безразличными, и я должен вызвать выход на них
Использование Ubuntu 16.10
Терминал Gnome
echo $SHELL
дать /bin/bash
Как был указан в комментариях, такое поведение характерно для каждого приложения. Приложения, записанные на языке программирования C, например, могут использовать setsid
звоните для разъединения от управления терминалом, хотя они требуют вызова к fork()
syscall сначала. Python, также имеет os.setsid()
и os.fork()
функции; хотя возможно просто использовать os.fork()
создать дочерний процесс и уничтожить родителя.
Другая очень частая техника, которую используют авторы программного обеспечения, запускает приложения с помощью сценария обертки и называет новый процесс через nohup
. Это точно что atom
делает:
$ file $(which atom)
/usr/bin/atom: Bourne-Again shell script, ASCII text executable
$ grep 'nohup' $(which atom)
nohup "$ATOM_PATH" --executed-from="$(pwd)" --pid=$$ "$@" > "$ATOM_HOME/nohup.out" 2>&1
cat "$ATOM_HOME/nohup.out"
Можно сделать так также. Например, способ, которым я склонен запускать программы и отсоединять их от терминала, через функцию, которая запускает желаемую программу с nohup
уже добавленный к команде:
runstuff() {
nohup "$@" >/dev/null 2>&1 &
}
После того как Вы определяете это в Вашем .bashrc
, можно запустить Firefox как так:
runstuff firefox
Иначе, через setsid
команда (который называют тем же как системный вызов C, но является на самом деле автономным двоичным файлом):
setsid firefox
При использовании Ubuntu с X environemnt, можно продвинуть Ctrl + F2 и затем поместить команду, в которой Вы нуждаетесь (т.е. rythmbox
). Это не будет иметь отдельного терминала, где можно продвинуть ctrl+C.
можно также попытаться работать nohup rythmbox &
. Это должно выполнить Ваш плеер в backgroud и сделать это terminal-close-proof.