Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

I tend to always use daemonize to start a Java program because typically I need to pass several startup options (like Xms, Xmx, etc.) and systemd unit files cannot perform even the simplest variable interpolation needed [1].

Someday systemd will go beyond simple key-value substitution, and on that day I'll stop using daemonize.

[1]: http://www.opsfordevelopers.com/2015/05/startup-scripts-for-...



What's wrong with doing something like the following:

...

[Service]

Type=forking

EnvironmentFile=-/usr/local/myJavaConfig

ExecStart=/bin/sh -c '${JAVA_HOME} ${JAVA_OPTS}'

Or if you're after passing things in, use the other technique that lets you use systemctl myservice@your_sub.service


Two things are wrong, neither of which, however, make daemonize appropriate. First, and trivially, there's a missing /bin/java (-: Second, that's a potential readiness protocol and a main PID mismatch. See http://unix.stackexchange.com/a/200365/5132 for details. And then http://askubuntu.com/a/624871/43344 . Remembering to exec is another lesson to bring along from the daemontools world.


That's a case for creating a wrapper shell script that you launch through ExecStart=. Nothing to do with whether your process does the daemon(7) dance or not.


Correct, I should've been clearer that I use daemonize mostly out of frustration with systemd limitations and inability to tell me precisely what's wrong when there are errors launching the service.




Consider applying for YC's Winter 2027 batch! Applications are open till November 2.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: