Как использовать один терминал с несколькими интерактивными заданиями, не останавливая их?

Как использовать один терминал с несколькими интерактивными заданиями, не останавливая их?

У меня есть два скрипта оболочки, скажем client.shи server.sh, которые должны работать одновременно и выдавать какой-то полезный вывод в watch-way.
И я могу использовать только один терминал. Поэтому мне нужно переключаться между ними, чтобы видеть, что происходит, но не останавливать их ( Ctrl+ Z).
Я не могу понять, как это сделать.
Когда я запускаю

./server.sh &

затем введите Enterв терминале (перед запускомклиент.sh), но это показывает

[1]+ Stopped                   ./server.sh

Есть ли удобный способ переключаться между заданиями в терминале, чтобы видеть их вывод (внутреннее состояние), не останавливая их?

решение1

Использовать screen:

$ screen -S my-job

Это запустит новый screenсеанс с именем «my-job» и подключится к нему.

$ ./server.sh

Это запустит ваш server.shскрипт на первом (по умолчанию) терминале, подключенном к screenсеансу. Теперь нажмите Ctrl-, Aа затем Ctrl- C. ЭтоССоздайте новый терминал и переключитесь на него. Теперь вы можете запустить:

$ ./client.sh

и наблюдайте за его выходом. Чтобы переключиться вперед и назад, нажмите Ctrl-, Aа затем Ctrl- Aеще раз.

Чтобы отключиться, screenне закрывая при этом программы, нажмите Ctrl-, Aа затем dнажмитеДetach. Чтобы снова подключиться и просмотреть вывод, используйте:

$ screen -x my-job

Вы также можете просмотреть вывод обоих скриптов одновременно, выполнив следующие действия:

  • Нажмите Ctrl- Aзатем sнажмитеСразделите свое мнение.
  • Нажмите Ctrl-, Aа затем , Tabчтобы перейти к нижнему разделу
  • Ctrl- Aзатем нажмите , "чтобы открыть список активных терминалов, и выберите 1-й терминал (0-й по умолчанию подключен к верхнему разделению).

решение2

То, что вы ищете, это управление заданиями из Bash. Вы можете прочитать все об этом с помощью man bashи поиска «УПРАВЛЕНИЕ ЗАДАНИЯМИ» (введите /^JOB CONTROLв man-странице bash).

Тем не менее, command &команда должна все еще работать в фоновом режиме. Вы можете проверить это с помощью jobsкоманды bash. Она выведет список всех фоновых заданий, их номер задания и статус.

С помощью bg nили %n &можно возобновить остановленную задачу с номером n (например, bg 5 для возобновления задачи № 5).

С помощью fg nили %nвы можете вернуть работу с заднего плана на передний план.

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

решение3

Используйте что-то вроде screen(1) или tmux(1) для запуска эквивалента нескольких терминалов одновременно. Вы даже можете выйти из системы и снова войти в нее из другого места.

Используйте вкладки, например, в терминале Gnome.

Используйте управление заданиями в bash(1) (обязательно прочтите соответствующие части информационного файла) для остановки/перевода заданий в фоновом режиме/переднего плана.

Связанный контент