У меня есть два скрипта оболочки, скажем 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) (обязательно прочтите соответствующие части информационного файла) для остановки/перевода заданий в фоновом режиме/переднего плана.