Problem with nohup use in scripting


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Problem with nohup use in scripting
# 1  
Old 07-13-2011
Problem with nohup use in scripting

I am trying to execute following code:
Code:
alarm_file_array="test1.alarms test2.alarms test3.alarms test4.alarms"
for file in ${alarm_file_array[@]}
do
	nohup tail -f $file |awk 'NR>10' >> output.alarms 2>/dev/null &
done

Whenever it tries to execute nohup command it hangs because of the following prompt in output.
Code:
linus> Sending output to nohup.out

I tried to suppress nohup output using 2>/dev/null but still its not working.

Any ideas/suggestions are appreciated.
# 2  
Old 07-13-2011
I see a few things problematic with this:

Code:
alarm_file_array="test1.alarms test2.alarms test3.alarms test4.alarms"
for file in ${alarm_file_array[@]}
do
	nohup tail -f $file |awk 'NR>10' >> output.alarms 2>/dev/null &
done

First and foremost, if you did get all three of these pipe chains writing to output.alarms independently, they wouldn't know or care about each other -- they'd just write whatever they want, wherever they want, whenever they want, potentially overwriting each others' contents. You should have a separate logfile for each tail.

Second of all, 'tail' and 'awk' are separate processes. The warning message is coming from the standard error of tail, and you're only redirecting awk.

Third of all, you're only putting awk in the background, not tail, which is why tail hangs -- not because of nohup.

Fourth, it makes no sense to use nohup at the start of a pipe chain, because it does what it says it's doing -- sends its stdout into nohup.out and not into the pipe feeding into awk.

You can achieve a similar effect to nohup by redirecting all streams to /dev/null, which will work for the entire pipe chain. You can also put an entire subshell in the background with ( ) .

Code:
alarm_file_array="test1.alarms test2.alarms test3.alarms test4.alarms"
for file in ${alarm_file_array[@]}
do
        (   exec 0</dev/null # stdin
            exec 1>/dev/null # stdout
            exec 2>/dev/null # stderr
            tail -f $file |awk 'NR>10' >> ${file}.out ) &
      disown
done

The 'disown' is so the script won't wait for the background jobs to finish before it quits. Some shells don't have disown, but those wouldn't wait for background jobs anyway.
# 3  
Old 07-14-2011
Thanks for your valuable inputs.

The above solution works fine but not for my SUN platforms. If I execute the above commands and close the putty session then the tail command is also stopped.

I want a solution which should keep executing as a background process even if the putty session from which this is invoked is closed.
# 4  
Old 07-14-2011
Hmm, try this:
Code:
alarm_file_array="test1.alarms test2.alarms test3.alarms test4.alarms"
for file in ${alarm_file_array[@]}
do
        (   exec 0</dev/null # stdin
            exec 1>/dev/null # stdout
            exec 2>/dev/null # stderr
            trap "" HUP
            tail -f $file |awk 'NR>10' >> ${file}.out ) &
      disown
done

trap "" HUP works to prevent child processes dying with SIGHUP in my shell. Any more complex trap won't work, since child processes can't inherit actual shell code from the shell, just SIG_IGN.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. AIX

Nohup problem

Hi I need to execute about 1000 scp commands sequential , so I made "scp.sh" - like this scp - rp ... scp - rp ... ............ scp - rp ... then I run nohup sh scp.sh &The problem is: nohup process stopped when I closed session, or when the session expired,... Something wrong :(:(:( ... (4 Replies)
Discussion started by: bobochacha29
4 Replies

2. Ubuntu

nohup problem

Hi All I am struggling to get a process to run in the background on a Ubuntu Linux machine. I run: - /home/brad > /usr/bin/nohup sudo /home/brad/spideroak/jsystem/runner/runAgent < /dev/null & 5611 /home/brad > /usr/bin/nohup: appending output to `nohup.out' + Stopped (SIGTTOU) ... (9 Replies)
Discussion started by: steadyonabix
9 Replies

3. UNIX for Advanced & Expert Users

Problem on throwing sftp in nohup

Hi, but it is possible to effect a sftp in??? thanks thousand Germanico ---------- Post updated at 07:01 AM ---------- Previous update was at 05:51 AM ---------- Hi, but it is possible to effect a sftp in nohup mode??? (2 Replies)
Discussion started by: GERMANICO
2 Replies

4. Shell Programming and Scripting

Problem regarding nohup.out

There is a daemon which is constantly writing to this particular nohup.out file.This daemon can't be stopped. But the large size of this file is hampering the directory space.I want to write a script which will wait for 48 hours and then delete the contents of the file ( nohup.out ), but not the... (1 Reply)
Discussion started by: Gourav
1 Replies

5. Shell Programming and Scripting

Problem with nohup

Hello I am running this script inst.sh #!/bin/ksh sqlplus -s username/password @temp.sql ----Here is my temp.sql set serveroutput on select instance_name from V$instance; exit When i run the script inst.sh on the command prompt...it runs fine...but when i run it using... (5 Replies)
Discussion started by: njafri
5 Replies

6. Shell Programming and Scripting

problem with exit while using nohup

Hi, I am kinda confused with this, am not sure what is happening i have a script say test.sh ---------- cat myfile | while read line do exit 2 done echo "out of loop" ----------- as it is evident, the exit should cause the script to terminate ,hence producing no output for the... (1 Reply)
Discussion started by: sumirmehta
1 Replies

7. Shell Programming and Scripting

Scripting on AIX and using nohup

ok... want to start off by saying i am sorry for the ignorance... still trying to figure out the diffs between solaris and aix... and i think that is where i am running into problems... :o SITTIATION: we are doing an implementation for Oracle's CC&B... we recently switched from... (1 Reply)
Discussion started by: Dagaswolf
1 Replies

8. UNIX for Dummies Questions & Answers

Problem with nohup command

Hello folks, I have got a script which telnets to different boxes and runs a certain script with 3 run time args. The line from the script which does it is: (sleep 1; echo $USERID ; sleep 1; echo $PASSWD ; sleep 1 ; echo y ; sleep 1 ; echo "\r" ; sleep 1 ; echo "cd $FILEPATH" ; sleep 1 ; sleep 1... (1 Reply)
Discussion started by: Rajat
1 Replies

9. Solaris

problem with nohup

While executing a ksh file with a input parameter in background like the following bash-2.03$nohup fil.ksh 4 & the nohup session is stopped. The same ksh file while executed like bash-2.03$fil.ksh 4 works fine. I am trying the above in Solaris 5.8 in bash shell. Please let me... (2 Replies)
Discussion started by: kkna
2 Replies

10. Shell Programming and Scripting

Problem executing nohup

I am trying to submit background jobs using the nohup command on a client system where my session is running under a "master shell" (BASH). If I try to nohup the actual job (ie: nohup MYJOB.BAT > MYJOB.LOG 2>&1 &) the command will fail with a return code of 126 and a "permission denied" message.... (0 Replies)
Discussion started by: christyw
0 Replies
Login or Register to Ask a Question