Краткий обзор, я создал скрипт, который перезагружает ноутбук через x времени и x циклов. Я добавил скрипт в запускаемые приложения, и он, кажется, работает в фоновом режиме, но никогда не открывает окно терминала. Я что-то пропустил?

Добавление кода (он сохраняется в файле с именем countdown.sh)

#!/bin/bash

# check if passed.txt exists if it does, send to soak test

if [ -f passed.txt ];
then
echo reboot has passed $nol cycles
sleep 5;
echo Starting soak tests 
sleep 5;
rm testlog.txt;
rm passed.txt;
phoronix-test-suite run quick-test
exit 0;
fi

# check if file testlog.txt exists if not create it

if [ ! -f testlog.txt ];
then
echo >> testlog.txt;
fi

# read reboot file to see how many loops have been completed

exec < testlog.txt
nol=0
while read line
do
nol=`expr $nol + 1`
done

# start the countdown, x is time limit

let x=10; 
while [ $x -gt 0 ]; 
do clear; 
figlet "Rebooting in..."; 
figlet $x; 
let x-=1; 
sleep 1;
done;
echo reboot success $nol >> testlog.txt;
shutdown -r now;

# set how many times the script should shutdown the laptop

reboot_count=1

# if number of reboots matches nol's then stop the script
# create a new text file called passed.txt

if [ "$nol" == "$reboot_count" ];
then
echo reboot passed $nol cycles >> passed.txt;
fi

1 ответ1

1

Сценарии оболочки не открывают автоматически окна на вашем рабочем столе. Вы должны включить код, чтобы сделать это, если это то, что вы хотите.


Обновление 1

Один из способов сделать это - использовать Xdialog.

Обратите внимание, что вам может потребоваться установить его с помощью sudo yum install Xdialog или apt-get install Xdialog (или любой другой команды, подходящей для менеджера пакетов вашего дистрибутива Unix/Linux).

Есть примеры в /usr/share/doc/xdialog*/samples , вот один

Используя этот инструмент, вы можете настроить фоновый скрипт для отображения сообщений на системной консоли (при условии, что на нем запущен X-сервер). Возможно, вам придется установить значение переменной окружения DISPLAY, чтобы программа знала, на каком экране она должна отображать диалоговое окно. Это также работает для удаленных ПК и т.д., Если на них установлен X-сервер (например, Xming в Windows).

Вот быстрый пример

Тест Xdialog


Обновление 2

Примечание: вышеописанное не является обычным способом взаимодействия системной фоновой задачи с пользователями. Обычно я просто делаю задачу записывать свои сообщения в файл журнала (и, возможно, использовать logger для записи в syslog), тогда любой, кто заинтересован, может просто использовать tail -f logfilename чтобы увидеть текущее состояние фонового процесса.

Если вам необходимо привлечь внимание кого-либо к выполнению задания, вы можете вместо этого отправить ему электронное письмо или вызвать предупреждение SNMP.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .