Все прекрасно запускается и работает, кроме собственно отображения виджета dropbox в системном лотке(KDE). Сам виджет "системный лоток" при этом естественно уже инициализирован.
Вопрос: Как изменить содержимомое файла, при том, что если, например, от имени пользовавателя напрямую подать команду /usr/bin/dropboxd то запуск происходит как надо и виджет в системном лотке появляется.
Не, спасибо, я пробовал kfilefox - не понравилось, и при этом он еще на каждом запуске проверярет последнюю версию dropbox и качает ее целиком в /home/<user>/.dpopboxd, у меня же все установлено пакетом в /usr/local , а обновление принудительно отключить как-то так и не получилось. Я просто думаю что кто нибудь из знатоков systemd подскажет правильный синтаксис, ибо у меня с английским пока не складывается, а официальная документация только на нем.
Попробовал, не работает увы. Но вообще-то в моем случае старт сервиса напрямую не связан с процессом старта системы (и соответственно уровнями инициализации и запуском других демонов). Показать
На самом деле все происходит в следующем порядке:
a.) Полный запуск оси в Х-окружение (КДЕ).
б.) Старт networkmanager с запросом пароля kwallet
в.) После ввода пароля Поднимается wi-fi соединение
г.) После того как коннект произошел запускается скрипт 10-dropboxd из "секции" /etc/NetworkManager/dispatcher.d/
text
#!/bin/bash
# Get username of the currently logged in user
username=$(who | cut -d' ' -f1 | sort | uniq)
case "$2" in
up)
systemctl restart dropbox@$username
;;
down)
systemctl stop dropbox@$username
;;
esac
д.) Только тогда запускается упомянутый в самом первом посте systemd-сервис dropbox@.service
ж.) и в финале стартует, вызываемый из systemd-сервиса, скрипт запуска dropboxd
text
#!/bin/sh
# Copyright 2008-2013 Dropbox, Inc.
#
# Environment script for the dropbox executable.
PAR=$(dirname "$(readlink -f "$0")")
OLD_LD_LIBRARY_PATH="$LD_LIBRARY_PATH"
export OLD_LD_LIBRARY_PATH
if ping -q -c 1 dropbox.com &> /dev/null; then
if (( $(ping -q -c 1 dropbox.com | grep avg | cut -c23-26) < 250 )); then
exec "$PAR"/dropbox "$@"
fi
fi
При отключении wi-fi (или любого из активных соединений) dropbox выгружается из памяти.(пункт г.), строка: systemctl stop dropbox@$username и, соответственно, запускается обратно при восстановлении соединения)
Так как сам процесс синхронизации работает на ура, за исключением отсутствия виджета, я подумал что проще разобратся с этой проблемой,
Нежели, например, делать автозапуск dropbox'a, при этом виджет есть, но сам dpopbox естественно уже не будет освобождать память при отсутствии сети.
Я бы даже "плюнул" и на отсутствие виджета, раз все работает и так, но проблема в том что скорость сети недостаточно высока и стабильна, поэтому скрипт запуска dropboxd (пункт ж.)строка if (( $(ping -q -c 1 dropbox.com | grep avg | cut -c23-26) < 250 )) привязан к пингу и dropbox не запускается, например по вечерам, после работы, когда со скоростью совсем плохо.
Вот как-то так :[
Потому-то и важен виджет, так как иначе сложно понять синхронизировались ли уже папки или нет.
папке /usr/lib/systemd/system/, который запускает dropbox от имени текущего пользователя
А почему не
[console]$ mkdir -p ~/.config/systemd/user
[/console]
Создаем там файл dropbox.service с нужным содержимым
И запускаем сервис
[console]$ sudo systemctl daemon-reload
$ systemctl --user start dropbox
$ systemctl --user enable dropbox
[/console]
P.S. Для получения большей информации можно добавить в секцию [Service] строку
Environment=SYSTEMD_LOG_LEVEL=debug
Нашел решение на arch-Wiki (и как я его пропустил ума не приложу).
Привожу здесь на всякий случай:
Создать файл /etc/systemd/system/dropbox@.service, со следующим содержимым