I have a shell script that calls a java jar file and runs an application. There’s no way around this, so I have to work with what I have.
When you execute this shell script, it outputs the application status and just sits there (pretty much a console); so when something happens to the program it updates the screen. This is like with any normal non daemonized/backgrounded process. Only way to get out of it is ctrl-c, which then ends the process altogether. I do know that I could get around this by doing path_to_shell_script/script.sh &, which would background it for my session (I could use nohup if I wanted to logout).
My issue is, I just don’t know how to put this script into a init script. I have most of the init script written, but when I try to daemonize it, it doesn’t work. I’ve almost got it working, however, when i run the initscript, it actually spans the same “console” on the script, and just sits there until i hit ctrl-c. Here’s the line in question:
daemon ${basedir}/$prog && success || failure
The problem is that I can’t background just the daemon ${basedir}/$prog part and I think that’s where I’m running into the issue. Has anyone been successful at creating an init script FOR a shell script? Also this shell script is not daemonizable (you can background it, but the underlying program does not support a daemonize option, or else I would have just let the application do all the work).
You need to open a subshell to execute it. It also help to redirect its output to a file, or at least /dev/null.
Something like:
It work as follows ( list ) & in a background subshell. { list } is a group command, it’s used here to capture all the output of your commands and send it to /dev/null.