Вызов терминала из сценариев оболочки для отображения результатов команд

Я написал сценарий для вызова терминала и выполнения ряда команд.Терминал появляется, но других команд нет. Я назвал файл show-services-status.sh , поместил его в домашний каталог и сделал исполняемым, используя chmod + x

show-services-status.sh , содержащий следующее команды:

gnome-terminal
echo "Display Manager Status"
sudo systemctl status display-manager.service
echo "System Log Status"
sudo systemctl status syslog.service
  1. Почему терминал запускается, не показывая результатов других команд?
  2. Я запустил терминал вручную и выполнил bash show-services-status.sh он работал, но мне нужно нажать q на клавиатуре, прежде чем я увижу результат следующей команды. как это можно устранить? спасибо
0
задан 21 November 2020 в 19:10

2 ответа

  1. , потому что все команды выполняются последовательно в той же оболочке, из которой вы запускаете gnome-terminal ] - вместо запуска внутри нового gnome-terminal

  2. вы можете добавить параметр - no-pager к командам systemctl - см. man systemctl

Если вы хотите запустить следующие команды внутри нового gnome-terminal , вы можете заключить их в оболочку и передать в виде командной строки, например:

gnome-terminal -- sh -c '
  echo "Display Manager Status"
  systemctl --no-pager status display-manager.service
  echo "System Log Status"
  systemctl status syslog.service
'

Обратите внимание, что я пропустил - no-pager в последней команде systemctl , чтобы удерживать терминал открытым - в противном случае он, скорее всего, немедленно закроется,прежде, чем вы успеете прочитать результаты.

0
ответ дан 3 January 2021 в 22:49

Вам может понадобиться следующее:

gnome-terminal -x bash -c 'echo "Display Manager Status"
systemctl --no-pager -l status display-manager.service 
echo "System Log Status"
systemctl --no-pager -l status syslog.service
read'

Нажмите return, чтобы выйти из терминала.

Если вы используете xfce4-terminal вместо этого, вы можете использовать -H перед параметром -x , чтобы заставить терминал ждать, и нет необходимости использовать чтение .

0
ответ дан 3 January 2021 в 22:49

Другие вопросы по тегам:

Похожие вопросы: