Следующие действия написаны для карточки семейства NVidia.
Нужно сделать файл /usr/bin/gputemp.sh следующего содержания:
#!/bin/sh
temperature=`nvidia-settings --ctrl-display=:0 -q GPUCoreTemp | grep Attribute | awk '{print $4}' | sed 's/\.//'`
if test ${temperature} -gt 42
then
# Получаем номера активных дисплеев.
# Это нужно, чтобы сообщение открывалось не только на дисплее :0, если в системе
# одновременно открыто несколько сессий с разными пользователями
disp=`ps -ef | awk '$8 ~ /X$/ {print $9}'`
#echo ${disp}
for n in $disp
do
export DISPLAY=${n}
zenity --info --title="Warning" --text="Ядро видеокарты слишком горячее. Текущая температура ${temperature} C. Проверьте, включен ли кулер." &
done
fi
Затем от рута надо дать команду:
crontab -e
И в открывшемся редакторе добавить строчку:
*/2 * * * * root /usr/bin/gputemp.sh
Эта запись означает, что проверка будет вызываться каждую вторую минуту.
Далее, под правами рута открыть на редактирование файл /etc/profile, и в конец файла дописать строку:
xhost +local:
Комментарий: Данная команда обязательно должна выполниться после запуска X-сервера. По умолчанию, X-сервер настроен так, что соединяться с ним и открывать окна могут только программы от пользователя, зарегистрированного в данный момент в системе. Сервер samba работает под системаным пользователем nobody (так же как и, например программа cron). Поэтому любые попытки запустить X-приложение из samba (или например из cron), будут отвергаться X-сервером
Команда xhost +local:, запущенная от текущего пользователя, настраивает X-сервер так, что он начинает принимать локальные (в пределах компьютера) соединения от любого пользователя. Таким образом, X-программа zenity, которая вызывается из скрипта /usr/bin/getnetsend.sh из-подпользователя nobody, сможет нормально работать.