вторник, 18 апреля 2017 г.

NoMachine: удаление автосоздаваемых каталогов с именем хоста

После некоторого периода эксплуатации NoMachine (по моему восприятию, по сравнению с VNC это ПО лучше работает в качестве управления Linux через удалённый рабочий стол) было замечено, что NoMachine автоматически создаёт каталоги (никак не привыкну, что в Linux следует говорить каталоги) с именем хоста, на котором оно установлено. При этом эти каталоги автоматически не удаляются. Удаление их вручную на функциональности NoMachine не сказывается, вследствие чего появилось предположение, что данные каталоги представляют из себя какой-то сеансовый бэкап.


Различия имён хостов на рисунках выше обусловлены различными значениями строк файла /usr/NX/etc/node.cfg  

NodeName H67.net.org – для верхнего рисунка
#NodeName localhost.localdomain – для нижнего рисунка

Так как удалять вручную, всё-таки, "лениво", то пришлось поискать способ их автоматического удаления при старте системы. После долгих попыток адаптирования к своей ситуации найденных команд было принято решение остановиться на двух скриптах (каждый для своего хоста):

#!/bin/sh
find -type d -name "*-H67.net.org-*" | xargs rm -dfR

#!/bin/sh
find -type d -name "*-H68-*" | xargs rm -dfR

Скрипт будет искать совпадение имён указанных в скрипте каталогов во всём домашнем каталоге. Поэтому, запустив его из терминала можно увидеть, что система выдаст сообщение о невозможности работы в ряде скрытых каталогов. Например:

find: «./.config/mc»: Отказано в доступе
find: «./.dbus»: Отказано в доступе
find: «./.local/share/mc»: Отказано в доступе
find: «./.cache/dconf»: Отказано в доступе
find: «./.cache/mc»: Отказано в доступе

Поэтому необходимо указать, в каком каталоге необходимо искать назначенные для удаления данные. Таким образом, окончательное содержание указанных выше скриптов будет следующим:

#!/bin/sh
find /home/каталог_пользователя/.nx -type d -name "*-H67.net.org-*" | xargs rm -dfR

#!/bin/sh
find /home/каталог_пользователя/.nx -type d -name "*-H68-*" | xargs rm -dfR

Данные скрипты помещены в файлы del-nx-H67.sh и del-nx-H68.sh в домашние каталоги пользователей, под которыми и осуществляется сеансовая работа в Linux. Сами файлы помечены как исполняемые.


Так как на обеих системах используется DE xfce, то помещение их в автозагрузку системы осуществляется через "Сеансы и запуск".


В каждую из систем добавлено по команде отложенного автозапуска:

sh -c "sleep 80 && /home/каталог_пользователя/del-nx-H67.sh"

sh -c "sleep 80 && /home/каталог_пользователя/del-nx-H68.sh"

Т.е. запуск скриптов производится через 80 секунд после старта системы.

Следует иметь в виду, что после отработки задания по удалению эти команды всё равно будут находиться в памяти компьютера, отображаясь в диспетчере задач. Для того, чтобы этого избежать и в целях улучшения своей информированности изменяю скрипты:

#!/bin/sh
find /home/каталог_пользователя/.nx -type d -name "*-H67.net.org-*" | xargs rm -dfR
zenity --info --text "Unused old NoMachine data deleted" 2>/dev/null --timeout=3
exit

#!/bin/sh
find /home/каталог_пользователя/.nx -type d -name "*-H68-*" | xargs rm -dfR
zenity --info --text "Unused old NoMachine data deleted" 2>/dev/null --timeout=3
exit

Команда zenity --info --text "Unused NoMachine logs deleted" 2>/dev/null --timeout=3 вызывает отображение информационного окна, в котором отображается текст Unused old NoMachine data deleted (неиспользуемые старые данные NoMachine удалены). Данное информационное окно отображается 3 секунды, после чего автоматически закрывается, как будто если бы Вы нажали кнопку ОК. Время в секундах определяется параметром timeout=3

Команда exit является командой завершения работы скрипта sh.

Если Вы предпочитаете вместо информационных сообщений по центу экрана видеть всплывающие системные уведомления (оповещения), то вместо 

zenity --info --text "Unused old NoMachine data deleted" 2>/dev/null --timeout=3

используйте строку

notify-send -i info "Unused old NoMachine data deleted"

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


sudo apt install libnotify-bin

При соединении с другим узлом автоматически создаётся каталог, в имени которого присутствует R-localhost :


Влияет это на самом деле или нет, но при изменении в файле /usr/NX/etc/node.cfg строки

#SessionLogClean 1 убрать символ решётки

каталог R-localhost-... автоматически удаляется при закрытии соединения с хостом NoMachine.

После перезагрузок обеих хостов и проверки наличия интересующих каталогов, предмета интереса обнаружено не было.


Имеющийся на верхнем рисунке каталог cache содержит данные узла, который управляется с помощью NoMachine.

Комментариев нет:

Отправить комментарий