Я создал сценарий bash, который открывает несколько терминалов gnome, подключается к компьютерам в классе через ssh и запускает сценарий.
Как я могу избежать закрытия терминала gnome после завершения сценария? Обратите внимание, что я также хочу иметь возможность вводить дополнительные команды в терминале.
Вот пример моего кода:
gnome-terminal -e "ssh root@<ip> cd /tmp && ls"
Используйте команду nohup.
nohup gnome-terminal -e "ssh root@ cd /tmp && ls"
Надеюсь, это вам поможет.
Как я понимаю, вы хотите, чтобы gnome-terminal открывался, выполнял некоторые команды, а затем переходил к приглашению, чтобы вы могли ввести еще несколько команд. Gnome-terminal не предназначен для такого использования, но есть обходные пути:
$ gnome-terminal -e "bash -c \"echo foo; echo bar; exec bash\""
exec bash
в конце необходим, потому что bash -c
завершится после выполнения команд. exec
заставляет запущенный процесс быть замененным новым процессом, иначе у вас будет два запущенных процесса bash.
rcfile
, который выполняет ваши командыПодготовьте somercfile
:
source ~/.bashrc
echo foo
echo bar
Затем выполните:
$ gnome-terminal -e "bash --rcfile somercfile"
Подготовьте 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
Ответ Stack Overflow: терминал закрывается после завершения команды, запущенной в нем, поэтому вам нужно написать команду, которая не завершается немедленно. Например, чтобы окно терминала оставалось открытым, пока вы не нажмете в нем Enter:
gnome-terminal -e "ssh host 'cd /tmp && ls'; read line"
Суперпользователь ответ: Создайте профиль, в котором предпочтение "Заголовок и команда/Когда команда выходит" установлено на "Держать терминал открытым". Вызовите gnome-terminal с опцией --window-with-profile
или --tab-with-profile
для указания имени терминала.