Избегать закрытия gnome-terminal после выполнения скрипта?

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

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

Вот пример моего кода:

gnome-terminal -e "ssh root@<ip> cd /tmp && ls"
61
задан lesmana 7 July 2015 в 14:09
поделиться

3 ответа

Используйте команду nohup.

nohup gnome-terminal -e "ssh root@ cd /tmp && ls"

Надеюсь, это вам поможет.

-5
ответ дан 24 November 2019 в 17:17
поделиться

Как я понимаю, вы хотите, чтобы gnome-terminal открывался, выполнял некоторые команды, а затем переходил к приглашению, чтобы вы могли ввести еще несколько команд. Gnome-terminal не предназначен для такого использования, но есть обходные пути:

Позвольте gnome-terminal запустить bash и скажите bash выполнить ваши команды, а затем запустите bash

$ gnome-terminal -e "bash -c \"echo foo; echo bar; exec bash\""

exec bash в конце необходим, потому что bash -c завершится после выполнения команд. exec заставляет запущенный процесс быть замененным новым процессом, иначе у вас будет два запущенных процесса bash.

Пусть gnome-terminal запускает bash с подготовленным rcfile, который выполняет ваши команды

Подготовьте somercfile:

source ~/.bashrc
echo foo
echo bar

Затем выполните:

$ gnome-terminal -e "bash --rcfile somercfile"

Пусть gnome-terminal запускает скрипт, который выполняет ваши команды, а затем переходит в bash

Подготовьте scripttobash:

#!/bin/sh
echo foo
echo bar
exec bash

Установите этот файл как исполняемый.

Then run:

$ gnome-terminal -e "./scripttobash"

В качестве альтернативы вы можете сделать genericscripttobash:

#!/bin/sh
for command in "$@"; do
  $command
done
exec bash

Then run:

$ gnome-terminal -e "./genericscripttobash \"echo foo\" \"echo bar\""

Каждый метод имеет свои особенности. Вы должны выбрать, но выбрать с умом. Мне нравится первое решение за его многословность и простоту.

С учетом всего вышесказанного, это может быть полезно для вас: http://www.linux.com/archive/feature/151340

86
ответ дан 24 November 2019 в 17:17
поделиться
  • Ответ Stack Overflow: терминал закрывается после завершения команды, запущенной в нем, поэтому вам нужно написать команду, которая не завершается немедленно. Например, чтобы окно терминала оставалось открытым, пока вы не нажмете в нем Enter:

    gnome-terminal -e "ssh host 'cd /tmp && ls'; read line"
    
  • Суперпользователь ответ: Создайте профиль, в котором предпочтение "Заголовок и команда/Когда команда выходит" установлено на "Держать терминал открытым". Вызовите gnome-terminal с опцией --window-with-profile или --tab-with-profile для указания имени терминала.

11
ответ дан 24 November 2019 в 17:17
поделиться