Як я можу створити, використовуючи одну команду, сеанс GNU з 4 вікнами, кожне з яких виконує різні команди?


0

Я намагаюся запускати екран у фоновому режимі кожного разу при завантаженні. Мені потрібно мати щонайменше 4 вікна, кожне автоматично виконує різні команди. Як я можу це зробити?

Відповіді:


1

Спочатку розпочніть сеанс окремого екрана. Потім надішліть команди до цього сеансу, використовуючи його ім'я. Зауважте, що немає жодного хорошого способу з'ясувати, чи вже сеанс працює та / або що відбувається всередині нього; Вам належить переконатися, що ви не намагатиметесь перезапустити цей сценарій, коли він вже запущений (існує багато способів зробити це, але це питання не вдається для цього питання).

Рекомендую вводити ваші командні рядки в сценарії, інакше ви, ймовірно, матимете пекельний час із рівнями цитування. Якщо припустити, що ви це зробили, сценарій запуску буде приблизно таким:

#!/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.

Однак це дещо крихке. Якщо ви все-таки використовуєте це, ви, безумовно, хочете мати справді тривіальний скрипт обгортки, який містить лише перелік віддалених команд на екрані та має всю фактичну роботу в інших сценаріях, навіть якщо вони тривіально короткі.


0

bashСценарій може запустити будь-яку програму, то чи з командного рядка або графічного інтерфейсу користувача. Все, що вам потрібно зробити, - це створити рядок на додаток. Якщо ви використовуєте, nohupви можете вийти з оболонки, як тільки всі програми запущені: -

#!/bin/bash
nohup Program1Path Program1Parameters&
nohup Program2Path Program2Parameters&
nohup Program3Path Program3Parameters&
nohup Program4Path Program4Parameters&
exit

Після того, як ви створили цей скрипт і зробили його виконуваним, просто додайте його до Startup Applicationsнього і він запускатиметься кожного разу, коли ви ввійдете в систему.


Проблема полягає в тому, що кожна команда виводить в інший файл за допомогою ">>". Чи все одно це буде працювати? Також не є програмою сама по собі, більше схожа на серію команд, які виконуються до зупинки.
MarioPL98

Перенаправлення це не вплине. Мені не зрозуміло, як ви хочете запланувати програми: ви маєте на увазі щось подібне { Prog1; Prog2; Prog3; Prog4; }&?
АФХ

Простий приклад того, що я намагаюся досягти, скажемо, що я маю: ping google.com | під час читання введення; do echo "$ (дата): $ input"; виконано Іншою командою може бути: while (true); робити датчики | під час читання введення; do echo "$ (дата): $ input"; зроблено; сон 1; зроблено;
MarioPL98

Мені потрібно кілька таких команд, але більш складний старт при завантаженні в різних вікнах за один екранний сеанс.
MarioPL98

Будь-який з ваших рядків команд може бути закреслений, як зазначено вище, наприклад { ping google.com | while read input; do echo "$(date): $input"; done; }&. Останній командний рядок можна запустити на передньому плані, без { ... }&. Ваші приклади не включають жодної програми GUI, тому я не бачу, куди потрапляють чотири вікна, якщо ви не хочете, щоб кожна командна рядок була окремою (переднього плану), і всі чотири сценарії додані як окремі записи в Startup Applications.
AFH
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.