Я установил Dropbox, используя текстовый метод установки, описанный здесь. Однако теперь я хотел бы, чтобы dropbox запускался автоматически при запуске компьютера и начинал синхронизацию файлов. Мне понадобится Dropbox для запуска от имени пользователя Dropbox из домашнего каталога пользователей Dropbox.

Я думаю, что следующая команда запустит dropbox от имени пользователя dropbox в домашнем каталоге пользователей dropbox. Не могли бы вы исправить меня, если это не сработает?

LANG=en_US.UTF-8 sudo -H -u dropbox ./.dropbox-dist/dropbox end script   

1 ответ1

2

Мои догадки:

  1. Вы указали неправильный путь к команде dropbox ; ./ всегда ссылается на текущий каталог, который не изменяется с помощью sudo -H . Вам все равно придется использовать /home/dropbox/.dropbox-dist/dropbox .

  2. Dropbox отказывается запускаться из-за end script в командной строке. Он не является частью команды - исходный пример Upstart должен был состоять из нескольких строк:

    start on runlevel 2
    start on runlevel 3
    start on runlevel 4
    start on runlevel 5
    stop on shutdown
    respawn
    script
        # Without next line DB does not sync non ASCII characters (ubuntu 10.04-x86_64, db 0.7.110)
        export LANG=en_US.UTF-8
        cd /home/dropbox
        exec sudo -H -u dropbox ./.dropbox-dist/dropbox
    end script
    

    Как вы можете видеть, конфигурационные компакт-диски Upstart для /home/dropbox перед обращением к ./.dropbox-dist .


Для systemd создайте /etc/systemd/system/dropbox.service:

[Unit]
Description=Dropbox as a system service

[Service]
ExecStart=/home/dropbox/.dropbox-dist/dropbox
User=dropbox
# 'LANG' might be unnecessary, since systemd already sets the
# locale for all services according to "/etc/locale.conf".
# Run `systemctl show-environment` to make sure.
Environment=LANG=en_US.utf-8

[Install]
WantedBy=multi-user.target

Используйте systemctl start dropbox.service чтобы запустить службу сейчас.

Используйте systemctl enable dropbox.service чтобы он автоматически запускался при загрузке.

Если вы редактируете файл модуля после того, как он был использован один раз, запустите systemctl daemon-reload чтобы очистить файл, сохраненный в кэше.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .