백그라운드에서 Dropbox 데몬을 실행하는 방법은 무엇입니까?


38

데비안 6과 Dropbox를 사용하고 있습니다. 나는 다음에 이러한 명령을 설치 할 수 있습니다.

내가 실행할 때 ~/.dropbox-dist/dropboxd— Dropbox가 작동합니다. 문제는 터미널을 닫거나 다시 부팅하면 Dropbox가 작동을 멈추고 해당 데몬을 다시 실행해야한다는 것입니다.

컴퓨터가 백그라운드에서 해당 데몬을 자동으로 시작하도록하려면 어떻게해야합니까?


같은 웹 사이트에서 아래 링크 된 파이썬 스크립트를 사용해 보셨습니까? 데몬 제어를 목표로하는 것 같습니다. (데비안 기반 머신 ATM에 액세스 할 수는 없지만 직접 시도해보십시오).
WhyNotHugo

답변:


51

자신의 계정에서 데몬을 실행하는 경우 부팅시 Cron으로 시작하십시오 . crontab 파일 crontab -e을 편집 하고 줄을 추가 하려면 실행하십시오.

@reboot ~/.dropbox-dist/dropboxd

이것이 효과가 있지만 이상적으로 /etc/init.d/는 포함 된 스켈레톤 스크립트 를 사용하여 서비스 스크립트를 작성하는 것이 가장 좋습니다 . 그런 다음 service dropbox start재부팅시 cron에를 추가 하고 서비스를 중지하고 다시 시작할 수 있습니다.
sparticvs

@sparticvs-init.d에 놓으면 dropbox가 루트로 실행되지 않습니까? 보관 용 계정은 사용자별로 실행되도록 구성 할 수 있습니다. 보관 용 계정을 다른 보관 용 계정을 사용하여 사용자간에 공유 할 수 있습니까?
주님로.

@LordLoh. 좋은 지적. 그러나 당신은 당신이 실행하려는 사람으로 변경할 수 있습니다. 자료를 찾았습니다 . 새로워 보입니다.
sparticvs

1
@LordLoh. @sparticvs init.d루트 문제로 실행에 대한 해결책이 있다고 생각 합니다. 내 답변을 게시했지만 pixeldust.wikidot.com/linode-setup%3adropbox 의 솔루션 이 제대로 작동하는 것 같습니다.
Zac

13

이런 식으로 명령을 실행하십시오.

($HOME/.dropbox-dist/dropboxd &)&

이렇게하면 실제 터미널에서 프로세스가 분리되고 실제 배경에 배치됩니다.

그래도 재부팅 후에도 수동으로 백업을 시작해야합니다.


11

여기 내 해결책이 있습니다. 데비안 8에 있습니다.

표준 지침에 따라 Dropbox를 설치하십시오. 지금까지 한 명의 사용자 만 연결했습니다 .dropbox가 Linux 사용자 계정이 아닌 컴퓨터를 등록하는 것으로 보이므로 여러 사용자와 함께 작동하는지 알 수 없습니다. 하나의 서버에서 여러 사용자 계정을 얻는 방법을 알고 있다면 알려주십시오.

https://www.dropbox.com/en_GB/install?os=lnx

그런 다음 Python 제어 스크립트 지시 사항을 설치 하되 홈 디렉토리 저장소가 아닌 / usr / bin에 넣으십시오.

/lib/systemd/system/dropbox@.service 파일을 작성하십시오.

[Unit]
Description=Dropbox as a system service user %i

[Service]
Type=forking
ExecStart=/usr/bin/dropbox start
ExecStop=/usr/bin/dropbox stop
User=%i
Group=%i
# '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

사용자 fred에 대한 서비스를 활성화하십시오.

$ sudo systemctl enable dropbox@fred.service

그런 다음 서비스를 시작하십시오.

$ sudo systemctl start dropbox@fred.service

나는 당신의 대답을 좋아합니다. 내가 추가 거라고 After=network.target에서 [Unit]와에서 파이썬 파일을 넣어 /usr/local/binunix.stackexchange.com/questions/8656/...
meffect

5

을 수행하여 데몬으로 실행할 수도 있습니다 daemon $HOME/.dropbox-dist/dropboxd.

이는 -n/--name플래그 를 추가로 전달 daemon --[running|restart|stop] -n <name>하면 프로세스를 제어하는 ​​데 사용할 수 있다는 이점이 있습니다 .

어쩌면 다른 사람이 daemon시작시 데몬을 시작하는 데 가장 좋은 방법을 알아낼 수 있습니다 ...



3

여기를보세요 :

https://community.spiceworks.com/topic/131973-dropbox-headless-workstation?page=1#entry-6076539

사용자가 언급 :

내가 언급 할 것이라고 생각했습니다.

(a) 최신 배포판은 이것을 dropbox start명령 줄에서 실행 하는 것만으로도 간단 해 보이지만 (b) X11을 전달한 상태에서 로그인 및 로그 아웃을 조심하십시오.

다양한 컴퓨터에 연결하기 위해 많은 Bash 별칭을 설정했으며 모두 -XX11 패킷을 전달 하는 옵션이 포함되어 있습니다. 이 때문에 보관도 아래를 실행 내에서 로그 아웃 죽어 유지 screen와 함께 nohup. 분명히 X11을 전달하면 Dropbox가 원격 시스템이 아닌 로컬 시스템에서 dbus 프로세스를 연결하게되었습니다. 그래서 연결을 끊을 때 Dropbox는 dbus가 종료 된 것으로보고 그 자체로 종료되었습니다.

참고로, 조금 비틀 거리는 것처럼 보였습니다. 열쇠는 내가 언론에 가진 것을이었다 Ctrl- C도 / 로그 아웃 실행 한 후 exit 원격 시스템에서. 분명히 열린 연결이 남아 있기 때문에 Bash를 종료했지만 SSH가 세션을 열린 상태로 유지했습니다.

-XDropbox를 시작하기 전에 다음 과 같이 포워드를 "중단"해야합니다.

$ unset DISPLAY

Bash 스크립트에서이 작업을 수행하면 스크립트 내부에서 전달이 "손상"되지만 일단 실행되면 '터미널'이 여전히 전달됩니다.


3

다음은 Upstart 1.4 이상을 사용하는 Linux 배포판 솔루션입니다.

아래의 설정 파일에 아래의 내용을 저장 /etc/init예를 들어, : /etc/init/db_user.conf:

# Dropbox upstart script for user db_user, db_user can be replaced by anything you like.

description "Dropbox db_user"
author "myth384"

start on runlevel [2345]
stop on runlevel [!2345]

respawn

setuid db_user
# The next two lines are optional. I use these to be able to share the 
#   Dropbox using Samba. Within group shareusers are all Samba users.
# setgid shareusers
# umask 0002

# The next line is necessary to be able to synchronise files with non-ASCII characters.

env LANG="en_US.UTF-8"     
exec /home/db_user/.dropbox-dist/dropbox

재부팅하지 않고 데몬을 시작하려면 :

sudo start db_user

참고 : setgid 줄의 주석 처리를 제거 .dropbox.cache하면 인터넷의 다른 소스에서 표시 한대로 폴더 에 setgid 플래그를 설정할 필요가 없습니다 .


2

당신은 사용할 수 있습니다 screen:

screen -dmS ~/.dropbox-dist/dropboxd

데몬으로 시작하고 분리 모드로 시작됩니다.

그런 다음이 방법으로 서비스로 실행하고 2, 3, 4, 5와 같은 필요한 실행 레벨을 추가하기 #!/bin/bash위해 고유 한 init.d 스크립트를 작성해야합니다 chkconfig. 이것을 확인해야합니다.


1

여기init.d설명 된 내용 을 추가하는 상당히 좋은 방법이 있습니다 . Dropbox를 시작할 사용자를 init 스크립트에 추가해야합니다 (충분히 쉬움). 시스템이 부팅 될 때 각 사용자에 대해 Dropbox 데몬이 시작됩니다.

유일하게 주목해야 할 것은 DAEMON=.dropbox-dist/dropbox내가 옳다고 믿는 것을 지정한다는 것 입니다. 저자 d는 그 말미에 잊어 버렸습니다 DAEMON=.dropbox-dist/dropboxd.


1

모든 Linux 배포판에 유용하지는 않지만 CentOS 7의 응용 프로그램 / 시스템 도구 / 메뉴에서 ' 시작 응용 프로그램 '을 엽니 다 . 그런 다음 추가를 클릭하고 다음 명령을 입력하십시오.

/home/username/.dropbox-dist/dropboxd

또는

/home/.dropbox-dist/dropboxd

여기에 이미지 설명을 입력하십시오


당신의 판단에 감사합니다. 다른 솔루션은 무엇입니까? 방금 나를 위해 일한 해결책을 게시했습니다.
Aryo Z

0

내 .profile 파일 끝에 다음 줄을 추가했습니다. 터미널에서 컴퓨터를 부팅하는 것을 선호합니다. 그러나이 후에 X11을 시작하면 시스템 트레이에 드롭 박스 애플릿이 표시되지 않습니다.

dropbox running
rv=$?
if [ $rv -eq 0 ]; then
    dropbox start;
fi

당신이 정말로 의미하는 [ $rv -eq 0]것이 아니라고 가정하면 다음 과 같이 [ $rv -ne 0 ]모든 것을 단순화 할 수 있습니다.dropbox running && dropbox start
roaima



-1

해결책은 다른 파이썬 프로그램과 같습니다.

shell$ nohup ~/.dropbox-dist/dropboxd & 

-2

가장 좋은 방법은이 코드를 사용하여 / usr / bin에 새 파일을 만드는 것입니다.

#!/bin/bash

~/.dropbox-dist/dropboxd

저장하고 이름을 "dropbox"로 지정하십시오. 이제 백그라운드에서 콘솔에서 실행하거나 메뉴 / 데스크톱에서 바로 가기를 만들 수 있습니다


2
포 그라운드에서 실행되는 것처럼 올바르지 않습니다. 여전히 dropbox &백그라운드로 보내야합니다. 또한 터미널 연결이 종료되면 Hangup 신호가 프로세스를 종료시킵니다.
sparticvs
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.