Я написал сценарий для вызова терминала и выполнения ряда команд.Терминал появляется, но других команд нет.
Я назвал файл 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
bash show-services-status.sh
он работал, но мне нужно нажать q на клавиатуре, прежде чем я увижу результат следующей команды. как это можно устранить?
спасибо , потому что все команды выполняются последовательно в той же оболочке, из которой вы запускаете gnome-terminal
] - вместо запуска внутри нового gnome-terminal
вы можете добавить параметр - 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
, чтобы удерживать терминал открытым - в противном случае он, скорее всего, немедленно закроется,прежде, чем вы успеете прочитать результаты.
Вам может понадобиться следующее:
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
, чтобы заставить терминал ждать, и нет необходимости использовать чтение
.