понедельник, 30 апреля 2018 г.

Эмблемы для каталогов Linux. Свой набор 2 – recyclers

Для собственных нужд мной был создан набор эмблем для каталогов Recyclers. Несмотря на то, что набор эмблем предназначался для окружения xfce, он может быть использован в Cinnamon или MATE.

Состав набора включает 5 эмблем Корзины.


Первоначально одна из эмблем была использована для изменения значка файлов и каталогов, удаляемых по расписанию через Thunar (подробности). В дальнейшем состав набора был дополнен другими эмблемами.

Для добавления в систему эмблем набора Recyclers можно использовать приёмы, описанные в этих публикациях: вариант 1 или вариант 2.

Скачать набор значков Recyclers.

пятница, 27 апреля 2018 г.

Runtu: включить уведомления об обновлениях

Мейнтейнеры сборки Runtu не включили в неё графического отображения о наличии обновлений системы. Периодически проверять наличие обновлений через соответствующий пункт главного меню для меня оказалось не совсем удобным.

Для включения графического отображения о наличии уведомлений об обновлениях сначала установите интервал проверки обновлений.


Установите службу, уведомляющую о доступности обновлений, update-notifier


После этого уведомления об обновлениях будут отображаться как в оригинальной Ubuntu:





среда, 18 апреля 2018 г.

Автоочистка файла .bash_history


В течение долгого времени мной не обращалось внимания на файл .bash_history, расположенный в корне домашнего каталога. На днях из простого любопытства он мной был открыт, в результате чего выяснилось много интересного ... Короче, после этого было принято решение периодически обнулять данный файл.


Принятое решение задачи сводится к удалению существующего и созданию нового файла .bash_history на периодической основе – раз в месяц.

Создаю исполняемый файл del-bash-hist.sh (или просто del-bash-hist) со следующим содержанием:

#!/bin/bash
rm /home/user/.bash_history
> /home/user/.bash_history
exit

В данном исполняемом файле: 

user – домашний каталог пользователя системы;

rm /home/user/.bash_history – удаление файла .bash_history;

> /home/user/.bash_history – создание пустого файла .bash_history;

exit – команда выхода.

Создание пустого файла .bash_history может быть осуществлено одной из трёх равнозначных по получаемому результату команд:

> /home/user/.bash_history

cp /dev/null /home/user/.bash_history

cat /dev/null > /home/user/.bash_history

Выбор конкретной команды зависит от Вашего предпочтения.

После создания файла назначаю ежемесячное задание на его выполнение. О создании пользовательского задания, выполняемого через cron, читайте здесь.

Примечание. Если Вы намерены не чистить файл, а только ограничить его размер, то читайте эту публикацию.

суббота, 14 апреля 2018 г.

Ошибка синтаксиса sudoers


При попытке настроить срабатывание одного из скриптов, который обращается к системной функции от имени обычного пользователя системы, возникла необходимость внести изменения в полномочия пользователя через файл /etc/sudoers

В найденных на эту тему материалах говорится, что редактирование данного файла необходимо производить через команду visudo. Хотелось бы, конечно, чтобы авторы таких материалов уточняли, что команду следует запускать от имени суперпользователя, так как при вводе просто visudo в терминале появляется:

~ $ visudo
visudo: /etc/sudoers: Отказано в доступе

После ввода "правильной" команды открывается окно редактора nano с загруженным в него содержанием файла sudoers.

Авторы публикаций поясняют, что при таком способе будет проверяться правильность синтаксиса вносимых в него изменений.

Вследствие отсутствия необходимости использования редактора nano мне не было известно назначение клавиш, с помощью которых производится запись в файл вносимых изменений:


И только в дальнейшем после "подсказки друга" мне стало известно, что символ ^ соответствует клавише Ctrl.

Поэтому редактирование мной файла sudoers производилось более привычным способом – sudo gedit /etc/sudoers

Увы, никто не застрахован от ошибок и после очередного эксперимента с редактированием содержания этого файла система мне выдала сообщение:

>>> /etc/sudoers: ошибка синтаксиса near line 21 <<<
sudo: parse error in /etc/sudoers near line 21
sudo: no valid sudoers sources found, quitting
sudo: не удаётся инициализировать модуль политики

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


К счастью, "лечение" сломанного механизма сводится к выполнению одной команды:

    pkexec visudo

После ввода пароля суперпользователя будет открыт тот же редактор nano с загруженным в него содержанием файла sudoers.

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

root ALL=(ALL:ALL) ALL
%admin ALL=(ALL) ALL
%sudo ALL=(ALL:ALL) ALL

Исправьте свои "неверные" записи или приведите файл к исходного значению, после чего нажмите на комбинацию клавиш Ctrl и o. На последующий запрос нажмите y:


Далее, используя клавишу Backspace, удалите в наименовании файла .tmp и на вопрос о перезаписи существующего файла снова нажмите клавишу y:



Как видите, нет необходимости в переустановке системы. К тому же Вы будете избавлены от боязни дальнейшего редактирования файла sudoers, так как всегда сможете вернуться к корректному состоянию его содержания.


вторник, 10 апреля 2018 г.

Вариант автоматизации автоочистки Linux Mint и Ubuntu


В Linux Mint и Ubuntu, в отличие от Windows, требующей после процедур удаления ПО для своей последующей чистки использования специального ПО (например, CCleaner) произвести очистку системы от ненужных пакетов программ можно двумя командами терминала:

sudo apt autoclean и sudo apt autoremove.

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

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

Предлагаемый вариант автоматизации представляет из себя запуск двух исполняемых файлов (скриптов sh) с определённой периодичностью. Другими словами, запуск заданий автоматической очистки от ненужных пакетов программ будет осуществляться по заданию cron.

Как сделать своё задание cron описано в этой публикации. Далее предполагается, что Вами усвоены инструменты редактирования заданий cron и имеется представление о том, как добавить задание в планировщик cron.

Создаются два исполняемых файла, например, autoclean.sh и autoremove.sh

#!/bin/bash
apt autoclean
sleep 15 && exit

#!/bin/bash
apt autoremove -y
sleep 15 && exit

Так как задания будут выполняться от имени root, то в строку выполняемый команды добавлять sudo не требуется. -y является указанием на то, что в процессе выполнения команды вопросы не будут отображаться, так как на них предусматривается ответ "Да". exit представляет из себя команду завершения работы скрипта, а sleep 15 – 15-ти секундную паузу "на всякий случай".

Мной было определено, что эти файлы будут расположены в каталоге /usr/share, поэтому, используя файловый менеджер под правами суперпользователя или Midnight Commander (sudo mc), перемещаю файлы в выбранный каталог.

Далее составляется задание – sudo crontab -e

Примечание. Для редактирования задания в Linux Mint с помощью встроенного редактора Midnight Commander следует использовать команду: 

  sudo EDITOR=mcedit crontab -e

Мной было принято решение о запуске файлов 28-го числа каждого месяца в 21 час 10 минут и 21 час 15 минут, поэтому вношу следующие строки:

10 21 28 * * /usr/share/autoclean.sh
15 21 28 * * /usr share/autoremove.sh

Для корректного назначения задания после внесения второй строки необходимо добавить пустую строку, иначе файл заданий записан не будет.

После этого в перечне пользовательских заданий cron появится файл root. Файл будет расположен в каталоге /var/spool/cron/crontabs:


суббота, 7 апреля 2018 г.

Решение частного вопроса создания резервной копии данных с помощью rsync. Графический интерфейс rsync

Постановка задачи. Один из компьютеров в реальном масштабе времени синхронизирует важные данные на облако Диск.Яндекс. Для гарантии сохранения этого набора данных они должны быть переданы на облако MEGA. При этом резервная копия должна быть идентична источнику. Аппаратные мощности компьютера с источником данных не позволяют одновременно запустить 2 сеанса синхронизации данных в реальном масштабе времени (Диск.Яндекс и MEGA), так как на компьютере с источником данных производится одновременная работа с 10-15 файлами офисного ПО Microsoft Office.

Реализация решения возложена на компьютер c большими аппаратными возможностями, функционирующий под управлением Linux Mint.

Для получения идентичной копии данных источника владелец аккаунта Диск.Яндекс предоставил синхронизируемые данные в доступ другому аккаунта Диска.Яндекс. При этом для исключения непреднамеренного удаления данных доступ предоставлен уровнем "только чтение".

В комплект поставки дистрибутива Linux Mint включено ПО резервного копирования rsync. В целях более удобной настройки синхронизации каталогов через rsync дополнительно была установлена графическая оболочка управления – пакет grsync, представляющий из себя GTK+ frontend для rsync.

После установки grsync запускается уже с русскоязычным интерфейсом.


По умолчанию предлагается настроить задание под именем "default". Но кнопкой + (Добавить) можно создать задание с желаемым именем.


Настройки сессии условно разделены на 3 категории: основные, расширенные и дополнительные.

В основных опциях указываются каталог источника и каталог назначения в порядке сверху вниз.


Далее следуют настройки, относящиеся к назначаемому заданию синхронизации.


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

Так как каталог-источник является копией данных с уровнем доступа "только чтение", а клиент синхронизации с облаком MEGA создаёт в синхронизируемом каталоге компьютера скрытый каталог .debris, то при выполнении задания синхронизации каталогов его необходимо исключить (в каталоге-источнике каталог .debris будет отсутствовать). Если этого не сделать, то в процессе синхронизации в каталоге-получателе каталог .debris будет удалён.

Что из себя представляет каталог .debris и для чего он нужен читайте здесь.

В опциях grsync настройки исключения каталогов не предусмотрено. Для указания исключения каталога из синхронизации в поле "Дополнительные опции" раздела "Расширенные опции" необходимо вписать строку --exclude '.debris'


Для описываемой задачи в разделе "Дополнительные опции" никаких изменений вносить не требуется.


После внесения настроек в задание можно запустить его текст или выполнение, для чего нажать кнопку главного меню: "Симуляция" или  "Выполнить".


Если в основных опциях вы не снимали галочку в поле "Показывать ход передачи", то после нажатия кнопки "Выполнить" будет отображено дополнительное окно, например:


При наличии интереса можно посмотреть, какая команда будет отправлена утилите rsync для выполнения Вашего задания.


Команда будет отображена в информационном окне, например:


среда, 4 апреля 2018 г.

Альтернативный способ добавления своих эмблем на каталоги в Linux Mint и Ubuntu


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

Если у Вас уже имеется подготовленный набор эмблем в виде файлов png, сведённых в каталоги 16, 22, 24, 32, 48 (по размерам изображений по горизонтали и вертикали), то включите в своём файловом менеджере отображение скрытых файлов и перейдите в каталог /home/user/.local/share, в котором создайте каталог icons.

В данном примере user является Вашим пользовательским каталогом (Вашей домашней папкой). Если имя пользователя в системе, например, boss, то, соответственно, необходимо перейти в каталог /home/boss/.local/share.

Далее уточните тему используемых Вами значков темы оформления и создайте каталог в наименованием данной темы, например, Mint-X.

В созданном каталоге создайте каталог emblems, в который и переместите каталоги с подготовленными дополнительными эмблемами: 16, 22, 24, 32, 48.

Перейдите в каталог /usr/share/icons/Mint-X (или другой каталог, соответствующий используемой Вами темой оформления) и скопируйте файлы icon-theme.cache и index.theme в каталог /home/user/.local/share/icons/Mint-X. После этого действия содержание каталога Mint-X в Вашем домашнем каталоге приобретёт вид:


Обновите кэш значков.

В Linux Mint:

gtk-update-icon-cache /home/user/.local/share/icons/Mint-X/

Если не получается, то выполните команду (в одну строку):

sudo gtk-update-icon-cache /usr/share/icons/Mint-X/ && sudo gtk-update-icon-cache /home/user/.local/share/icons/Mint-X/

Для пользователей Runtu (Ubuntu): 

update-icon-caches /home/user/.local/share/icons/Mint-X/*

В некоторых случаях может потребоваться перезапуск файлового менеджера. Например, для перезапуска thunar используется команда: thunar -q

вторник, 3 апреля 2018 г.

Выключение компьютера Linux через cron


После успешного применения назначения выполнения пользовательских задач через планировщик заданий cron (см. публикацию на эту тему) возникла необходимость в реализации ежедневного выключения компьютера по расписанию через задание cron.

К сожалению, пользовательское задание в виде исполняемого файла с содержанием:

#!/bin/bash
shutdown

не срабатывает. Для того, чтобы такая задача выполнялась через cron, задание необходимо создать для пользователя root:

 sudo crontab -e

Чтобы в Linux Mint вместо текстового редактора nano был запущен редактор mcedit, команда должна быть такой:

 sudo EDITOR=mcedit crontab -e

В п.2 публикации про пользовательские задания cron указывался способ назначения редактора заданий для редактирования заданий cron пользователя. Но в Linux Mint по умолчанию вход в систему под пользователем root не осуществляется, соответственно – домашний каталог пользователя root не создаётся, что делает невозможным внести необходимые изменения в файл .bashrc

Командой выключения от имени root является не shutdown, а  /sbin/poweroff.

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

 30 23 * * * /sbin/poweroff

Примечание. Не забывайте, что после неё необходимо добавить пустую строку.

Проверить существование задания можно командой sudo crontab -l

или в Linux Mint – sudo EDITOR=mcedit crontab -l ,

а самого файла задания – через sudo mc или sudo Ваш_менеджер_файлов, обратившись с каталогу /var/spool/cron/crontabs, в котором будет присутствовать файл root:


Если в дальнейшем необходимость в таком задании исчезнет, то удалите файл root командой терминала sudo crontab - r