help writing a service file for dropbox

T.C. Hollingsworth tchollingsworth at gmail.com
Tue Sep 23 01:29:14 UTC 2014


On Mon, Sep 22, 2014 at 12:40 PM, Steven Stern
<subscribed-lists at sterndata.com> wrote:
> Can I treat a .service file like a bash script and  do all those "loop"
> sorts of things?

No, but you can invoke a bash script from a service file that does
things in a loop.  But that doesn't buy you much^D anything really
over the initial initscript.  ;-)

A proper systemdish way to accomplish this would be to use an instance
service for dropbox and use the standard systemd tools to
enable/disable it for particular users instead of keeping the list in
an /etc/sysconfig file.

First, I'd suggest reading this nice introduction to instance
services; it's not very long and afterward you'll have a full
understanding of what's going on with my example below:
http://0pointer.de/blog/projects/instances.html

To create an instance service for dropbox, instead of using
"dropbox.service", create a "dropbox at .service" file (the @ is very
important), with the following contents:
--
[Unit]
Description=Dropbox service for user %I

[Service]
ExecStart=/home/%i/.dropbox-dist/dropboxd
User=%i

[Install]
WantedBy=multi-user.target

--

Once you have that, instead of managing the users it is started for
with a file in /etc/sysconfig, just use systemctl to enable/disable it
for users as appropriate.

To enable the dropbox service for the "sdstern" user:
# systemctl enable dropbox at sdstern.service

To disable the dropbox service for the "sdstern" user later on:
# systemctl disable dropbox at sdstern.service

And, to see all the users dropbox is enabled for:
% ls /etc/systemd/system/multi-user.target.wants/dropbox@*

-T.C.


More information about the users mailing list