Подтвердить что ты не робот

Как запустить экранную команду Unix с помощью команды?

В соответствии с docs для команды "Экран" Unix, вы можете настроить его в .screenrc, чтобы начать с кучи экранов по умолчанию, каждый из которых выполняет указанную команду.

Здесь мой cofig:

# Default screens
screen -t "shell_0"  1
screen -t "autotest" 2 cd ~/project/contactdb ; autotest

Он не будет запускать команду автотеста. Это окно, где я пытаюсь запустить autotest, сразу закрывается, когда я запускаю screen.

Я тоже пробовал это с помощью...

screen -t "autotest" 2 cd ~/project/contactdb

Тот же результат.

Я тоже пробовал...

screen -t "autotest" 2 ls

Тот же результат тоже.

В чем секрет, чтобы заставить его запускать команду на заданном экране при запуске?

4b9b3361

Ответ 1

Ваша программа запускается (ну, кроме cd), она просто запускается без родительской оболочки, поэтому, как только она завершается, она завершается, и все готово.

Вы можете сделать:

screen -t "autotest" 2 bash -c 'cd ~/project/contactdb ; autotest'

Создает две оболочки, но жизнь, вероятно, продолжится.

Ответ 2

Попробуйте следующее:

$ screen -S 'tailf messages' -d -m tailf /var/log/messages

Затем вы можете сделать следующее:

$ screen -ls
1234.tailf messages

Далее следуют:

$screen -r 1234

Ответ 3

Это может помочь, но может быть не совсем то, что вы хотите.

Поместите "зомби az" или "defzombie az" в качестве первой строки вашего .screenrc. "az" может быть любым 2 клавишами, которые вы хотели бы. Теперь, когда экран должен закрыться (например, команда завершена, например), она фактически не закрывается; нажатие "a" закроет его, нажатие "z" повторит выполнение команды, прикрепленной к этому экрану.

Я обнаружил, что в экранное руководство пользователя.

Ответ 4

Вы также можете "набить" символы на экран, как если бы вы их набрали.

Здесь вы можете сделать это с помощью вашего примера:


screen -t "shell_0"  1

# create the following screen in the desired dir, instead of cd-ing afterwards :)
chdir ~/project/contactdb
screen -t "autotest" 2

# (without this sometimes screens fail to start correctly for me)
sleep 5

# paste some text into screen number 2:
select 2
stuff "autotest\012"

Ответ 5

Вот как выглядит мой. Кажется, он работает нормально. Я думаю, что либо скобка может вызвать проблему, либо экран не откроет окно, если команда "autotest" не существует.

screen -t zsh 1
screen -t emacs 2 emacs -nw
screen -t mutt 3 mutt
monitor on
screen -t mc 4 mc -s
screen -t elinks 4 elinks

Ответ 6

Вот как я это сделаю.

screen -t shell_0
chdir ~/project/contactdb
screen -t autotest autotest

Вышеупомянутое, по-видимому, оценивается процедурно по экрану. Сначала мы устанавливаем новый экран с названием shell_0. Поскольку мы не указали других параметров, текущий рабочий каталог будет иметь каталог родительской оболочки или домашний каталог пользователя. Затем мы устанавливаем каталог по умолчанию для новых экранов на ~/project/contactdb. Затем мы создаем новый экран с командой autotest.

Номер окна (n) является необязательным, я обычно опускаю его.