пятница, 18 января 2019 г.

Linux: вариант запуска и остановки Диска Яндекс с графическим индикатором вручную или по расписанию

Публикация рассматривает вариант запуска и остановки Диска Яндекс по расписанию (пользовательское задание cron), при котором также будет запущен и остановлен индикатор Диска Яндекс.

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

Изменение конфигурации (конфигураций) клиента Диска Яндекс

Так как в рассматриваемом варианте запуск и остановка клиента Диска Яндекс не будет осуществлять командами индикатора, то в конец файла конфигурации клиента Диска Яндекс config.cfg необходимо добавить строки:

startonstartofindicator="no"
stoponexitfromindicator="no"

Настройка автостарта индикатора Диска Яндекс

Проверьте в файле настроек индикатора соответствие строки autostart значению no, то есть должно быть autostart="no".

Файл настроек индикатора: ~/.config/yd-tools/yandex-disk-indicator.conf

Создание исполняемого файла запуска

Если у Вас только 1 учётная запись Яндекса, то файл запуска имеет вид:

#!/bin/bash
yandex-disk start
yandex-disk-indicator
exit

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

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

Не исключено, что приводимый ниже скрипт для Ваших потребностей может показаться избыточным. В таком случае можно отказаться от некоторых строк. Так как по тексту будут приводиться комментарии (см. символы # и текст курсивом), то, полагаю, их назначение будет понятным.

#!/bin/bash
# Проверка наличия запущенного экземпляра Диска Яндекс.
# Если демон запущен, то в каталоге /tmp имеется каталог, в имени
# которого присутствует yandex-disk-
# Если Диск Яндекс запущен, ты вызывается команда его
# остановки yandex-disk stop (актуально для запуска по расписанию).
# Если про проверке такого каталога не найдено,
# то не производится никаких действий.
# Команде "Ничего не делать" соответствует двоеточие, то есть :
yd=/tmp/yandex-disk-*
if [ -d $yd ]; then
  yandex-disk stop
else
  :
fi
# Бывает, что в каталоге настроек Диска Яндекс появляется файл crash.txt
# Если такой файл будет найден, то он удаляется.
# crash, D1, D2 представляют из себя пути. Данные значения применены для
# того, чтобы вместо указания полного пути использовать переменные.
crash=/home/user/.config/yandex-disk/crash.txt
D1=/home/user/.config/yandex-disk
D2=/home/user/scripts/yandex/client-1
if [ -f $crash ]; then
  rm -f $D1/crash.txt
else
  :
fi
# Текущие файлы настроек клиента Диска Яндекс удаляются (rm), а вместо них
# записываются (cp) данные нужного аккаунта (3 файла настроек).
rm -f $D1/config.cfg
rm -f $D1/iid
rm -f $D1/passwd
cp $D2/config.cfg $D1
cp $D2/iid $D1
cp $D2/passwd $D1
# Запуск демона Диска Яндекс и графического индикатора.
yandex-disk start
yandex-disk-indicator
exit

Создание исполняемого файла остановки

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

#!/bin/bash
[ "$(pidof python3 /usr/bin/yandex-disk-indicator)" ] && pkill yd-tools || sleep 1
yandex-disk stop
exit

Выбор запуска: по расписанию или вручную

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

EXPORT DISPLAY=:0 && путь_к_ скрипту

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

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