Linux: Daemon and Daemon output to be logged in a file - linux

I am using the below command to run my python code as a daemon on the server.
nohup python mycode.py >> log.txt 2>&1 &
For some reason unknown to me only few lines are getting written to the file.
Thanks in advance

nohup itself writing output in nohup.out so no need to redirect output to log.txt,bydefault all output will be redirected to nohup.out

Related

nohup - Not printing all logs

I am running two scripts
# Script 1
nohup sh {command} &
and the nohup.out is having all logs in details (for script 1)
# Script 2
nohup sh {command} > {log_path} 2>&1 &
But nohup.out having only limited log as listed below (for script 2),
## Script2 output
Shutdown message has been posted to the server.
Server shutdown may take a while - check logfiles for completion
How can i generate all logs by using script 2 format in nohup.out itself .
If you want to have both files (nohup.out and {log_path}) you can try:
((nohup {command}) > >(tee {log_path}) 2> >(tee {log_path}))>> nohup.out
the first part of the command line is explained here.
After this, you only have to redirect (append) output to nohup.out.

Where will be nohup file created/stored

On executing below given command within a script file:
Command :
nohup /usr/hp/ism/jboss-3.2.8.SP1/bin/run.sh &
Where will the nohup.out file be created, assuming that script is running in root directory ?
Could you check home directory.
also you can redirect as below;
nohup /usr/hp/ism/jboss-3.2.8.SP1/bin/run.sh &> /tmp/nohup.out
man nohup ;
If standard input is a terminal, redirect it from /dev/null. If
standard output is a terminal, append output to 'nohup.out' if
possible, '$HOME/nohup.out' otherwise. If standard error is a
terminal, redirect it to standard
output. To save output to FILE, use 'nohup COMMAND > FILE'.
Running a python code using nohup and & the nohub.out was in the same directory as the command was run from
pwd output:
/home/dv/project7
command run:
nohup python3 /home/dv/project7/test_code_v3.1.py &
ls -l output:
test_code_v3.1.py
nohup.out
I think a better way is so that your program outputs to your own error log file vs. stdout thgerefore to nohub.out

nohup command not working in chef resources

I am trying to execute
>nohup.out
nohup ./example.sh &
which comes under my main.sh file. I am calling the main.sh from my bash resource in Chef. However, the STDERR is thrown when I run the chef-client. Shouldn't it go to nohup.out ?
From nohup manual:
If standard input is a terminal, redirect it from /dev/null. If standard >output is a terminal, append output to 'nohup.out' if possible, >'$HOME/nohup.out' otherwise. If standard error is a terminal, redirect it >to standard output.
So to have stderr redirected to nohup.out you should first redirect it to stdout:
nohup 2>&1 ./example.sh &

can't see nohup command's output when used with ssh

I am trying to run a jar onto a different server. So, in my current script I do ssh on that server, and then run the jar using nohup. But, nohup.out is not getting created on the new server. So, I am not able to catch errors.
If, I log into that server manually and then fire the jar, nohup.out gets created. Can someone please help with this?
Below is the command that I've written in my script:
sshpass -p $node_pwd ssh -n root#$node "sh -c 'cd mydir;nohup java -jar NodeStarter.jar config.properties > /dev/null 2>&1 &'"
Here, node is the server I am logging into.
node_pwd is the variable containing the password for that server.
nohup java -jar blah.jar > /dev/null 2>&1
In this example, you are redirecting your output from stderr to stdout, but you have already redirected your output from stdout to /dev/null.
The result is that you are piping both stdout and stderr to /dev/null
Output only goes to nohup.out if it has not already been redirected.
It is likely you are not using the same redirection parameters when running the command from the shell.

How can I look into nohup file while the program is still running?

I was using
nohup ./program_name &
to run my program, program_name prints out some values and status of the running process including how much percentage the program has finished, but since I'm running it using nohup so I can't see how close my program to finish is, is there anyway I can still get that information?
We have to Just open nohup.out to see output. Probably you want
tail -f nohup.out
for streaming output
Perhaps adjust your nohup command line to capture all output to a file:
nohup ./program_name > /tmp/programName.log 2>&1 &
Then, you can monitor programName.log using tail:
tail -f /tmp/programName.log
Put the below command in current terminal where the program is running
jobs command used to lists the jobs that you are running in the background and in the foreground
jobs -l
[6]+ 6069 Running nohup perl test1.pl &
[6]+ 6069 Done nohup perl test1.pl

Resources