Відповіді:
Спочатку розпочніть сеанс окремого екрана. Потім надішліть команди до цього сеансу, використовуючи його ім'я. Зауважте, що немає жодного хорошого способу з'ясувати, чи вже сеанс працює та / або що відбувається всередині нього; Вам належить переконатися, що ви не намагатиметесь перезапустити цей сценарій, коли він вже запущений (існує багато способів зробити це, але це питання не вдається для цього питання).
Рекомендую вводити ваші командні рядки в сценарії, інакше ви, ймовірно, матимете пекельний час із рівнями цитування. Якщо припустити, що ви це зробили, сценарій запуску буде приблизно таким:
#!/bin/bash
# An arbitrary name to uniquely identify this screen session:
SESSION="my_session_name_here"
# Create the detached session, running the first command in its first window:
screen -S "${SESSION}" -d -m script1.sh
# Now add the other windows. You create new windows within screen with
# "C-a:screen" (usually mapped to some other shortcut), so that's the command:
screen -S "${SESSION}" -X screen script2.sh
screen -S "${SESSION}" -X screen script3.sh
# You could have given the windows different titles by adding "-t title1" etc.
Ви можете в будь-який час долучити сеанс, щоб побачити, що він робить, як ніби ви запустили його інтерактивно. Однак, оскільки команда у кожному вікні не є оболонкою, з якої ви запустили відповідний скрипт, як тільки ви вимкнете Control-C зі скрипту, вікно закриється. Якщо ви хочете цього уникнути, пам’ятайте, що сеанс на екрані ведеться так, ніби ви з ним взаємодієте вручну, тож ви зробите щось на кшталт:
screen -S my_session -d -m
# "active" window is now 0 (the only one)
screen -S my_session -X exec script1.sh
screen -S my_session -X screen
# "active" window is now 1, running the shell
screen -S my_session -X exec script2.sh
# ... etc.
Однак це дещо крихке. Якщо ви все-таки використовуєте це, ви, безумовно, хочете мати справді тривіальний скрипт обгортки, який містить лише перелік віддалених команд на екрані та має всю фактичну роботу в інших сценаріях, навіть якщо вони тривіально короткі.
bash
Сценарій може запустити будь-яку програму, то чи з командного рядка або графічного інтерфейсу користувача. Все, що вам потрібно зробити, - це створити рядок на додаток. Якщо ви використовуєте, nohup
ви можете вийти з оболонки, як тільки всі програми запущені: -
#!/bin/bash
nohup Program1Path Program1Parameters&
nohup Program2Path Program2Parameters&
nohup Program3Path Program3Parameters&
nohup Program4Path Program4Parameters&
exit
Після того, як ви створили цей скрипт і зробили його виконуваним, просто додайте його до Startup Applications
нього і він запускатиметься кожного разу, коли ви ввійдете в систему.
{ Prog1; Prog2; Prog3; Prog4; }&
?
{ ping google.com | while read input; do echo "$(date): $input"; done; }&
. Останній командний рядок можна запустити на передньому плані, без { ... }&
. Ваші приклади не включають жодної програми GUI, тому я не бачу, куди потрапляють чотири вікна, якщо ви не хочете, щоб кожна командна рядок була окремою (переднього плану), і всі чотири сценарії додані як окремі записи в Startup Applications
.