=== apachelogger is now known as javalogger | ||
shaatar | hey all, I am trying to write an upstart service (/etc/init/*.conf file). I basically want to be able to say "start flashpolicy" and execute a command that works from the command line. What I have so far is this: http://www.privatepaste.com/45189f0858 | 22:42 |
---|---|---|
shaatar | however, it does not work and I get a "start: Job failed to start." | 22:43 |
JanC | shaatar: does this service need networking or something like that? | 22:45 |
JanC | or a filesystem to be mounted, etc... | 22:46 |
shaatar | JanC: yes, I suppose it does. It's accepts TCP connections over port 843 and returns a static xml file | 22:46 |
ion | Or the root filesystem to be mounted in readwrite mode | 22:46 |
JanC | then you are starting it way too early | 22:47 |
shaatar | i see, I need to require some other services | 22:47 |
JanC | shaatar: http://upstart.ubuntu.com/cookbook/ might be useful (it's a work-in-progress still, but some info you need is there already) | 22:49 |
shaatar | I haven't actually tested this on boot yet, however. I am just trying to run $ start flashpolicy. Wouldn't networking have already loaded? Unless I am misunderstanding this. | 22:49 |
shaatar | JanC: thanks, I was looking at that, I shall look into it some more. | 22:49 |
shaatar | should my command be in a script stanza? | 22:50 |
JanC | you are right that networking is probably up by that time, yes | 22:50 |
shaatar | I will require it anyways, better safe than sorry. | 22:50 |
JanC | maybe something is wrong with the command you run? | 22:51 |
ion | Anything in the daemon’s logs? Anything in its output? (exec >/tmp/flashpolicy.out 2>&1 before running the service) | 22:51 |
shaatar | ion: Like this? root@dev:/etc/init# >/tmp/flashpolicy.out 2>&1 | 22:55 |
shaatar | root@dev:/etc/init# start flashpolicy | 22:55 |
ion | No, in the script section of the job. | 22:56 |
ion | exec >/tmp/flashpolicy.out 2>&1 | 22:56 |
shaatar | JanC: I can run the command copy + pasted into the command line. | 22:56 |
shaatar | AH I see, sorry about that | 22:56 |
shaatar | hmm, interesting, it says "erlexec: HOME must be set" | 22:58 |
shaatar | looks like more of an erlang configuration issue. what user does upstart execute commands as? | 22:58 |
ion | root | 22:58 |
shaatar | interesting, the command definitely runs as root from bash. looks like google has some info on this error though, thanks all! | 22:59 |
ion | I use “exec su -c 'exec …' username” for an Erlang service. | 23:00 |
ion | The PAM session sets HOME etc. | 23:00 |
shaatar | where username is just some other user, say, a user I create called flashpolicy? | 23:01 |
ion | for instance | 23:01 |
shaatar | exec su -c 'exec rl -pa /opt/flashpolicy/ebin -noshell -noinput -detached -flashpolicy logfile_path '"/var/log/flashpolicy/"' -run flashpolicy_app start' | 23:10 |
shaatar | does that look good? except for my *erl typo | 23:10 |
shaatar | ah, that appears to have at least run the command, excellent! | 23:12 |
shaatar | thank you muchly | 23:12 |
ion | You have mismatched quotes. | 23:12 |
ion | exec su -c 'exec "$0" "$@"' username -- erl -pa … should take care of it. | 23:13 |
shaatar | I do? | 23:13 |
ion | Might as well add -s. exec su -s /bin/sh -c 'exec "$0" "$@"' username -- erl -pa … | 23:14 |
shaatar | gotcha | 23:14 |
shaatar | what does "$0" "$@"' do? | 23:15 |
ion | # su -s /bin/sh -c 'printf "|%s|" exec "$0" "$@"' ion -- foo bar 'baz quux' | 23:16 |
ion | |exec||foo||bar||baz quux| | 23:16 |
shaatar | Ah, I see | 23:17 |
shaatar | one last q: 'username', replace that with an actual username? I don't think so based on what I understand of su | 23:17 |
ion | Yes, whatever user you want to service to run as. | 23:18 |
shaatar | ah, understood | 23:18 |
shaatar | i need to learn more about su then :P | 23:18 |
Generated by irclog2html.py 2.7 by Marius Gedminas - find it at mg.pov.lt!