Halfway point between interactive and daemon?
Cameron Simpson
cs at zip.com.au
Fri Aug 22 22:09:59 EDT 2014
On 22Aug2014 12:27, Travis Griggs <travisgriggs at gmail.com> wrote:
>I’m curious if there’s a technique one could use to get half way there.
>Basically, with minimal modifications, I’d like to get it running at startup.
>So I can put a line like this in rc.local
>
>nohup python3 myMain.py 2>&1 > /var/log/mylog.log &
Just to this. You have your redirections backwards. They are applied left to
right. So, first "2>&1": sending stderr to where stdout currently goes
(probably the system console if this runs from rc.local). Then, ">
/var/log/mylog.log": sending current stdout to the log file. Importantly, _not_
attaching stderr to the log file.
You want to write this:
command >log 2>&1
As others have remarked, you do not need to daemonise a process started from
rc.local.
And as others have remarked, if you want it to start/stop under external
conrol, or restart after a program abort etc, you may be better adding it as to
the configuration of something like systemd or init.
That said, I start a bunch of things in rc.local. It is quick and easy, and
also handy for stuff that shouldn't be restarted automatically if it dies.
>Then I can “check” on it when I need to with a tail -f /var/log/mylog.log. But
>then I have the problem of managing the log size. And also I either have to
>wait for stdout to flush, or insert sys.stdout.flush() after any of my
>print()’s.
Log messages should be going to stderr anyway, which by default is unbuffered.
Cheers,
Cameron Simpson <cs at zip.com.au>
You can't have everything... where would you put it?
- Charles Robinson, cr0100 at medtronic.com
More information about the Python-list
mailing list