Sponsored Content
Full Discussion: Help in background process
Top Forums Shell Programming and Scripting Help in background process Post 302148874 by gus2000 on Tuesday 4th of December 2007 01:46:01 AM
Old 12-04-2007
Note that this will not work:

Code:
sub.ksh & >/tmp/logfile 2>&1

but this will:

Code:
sub.ksh >/tmp/logfile 2>&1 &

Redirection can get tricky, which is why I add this code to any of my scripts that run in the background or unattended:

Code:
exec >/tmp/${0##*/}.log 2>&1

After this line, all output (stdout and stderr) will go to a file in /tmp using the program basename with a ".log" extension. Don't try this from the command line!

UPDATE: I actually use a base set of code for background jobs:

Code:
# Send all output to a logfile and supress input
typeset LOG="/tmp/${0##*/}.out"
mv $LOG ${LOG}.old >/dev/null 2>&1
[[ -t 1 ]] && echo "Writing to logfile '$LOG'."
exec > $LOG 2>&1
exec < /dev/null 2<&1

Note that the shell expression "${0##*/}" is the same as "basename $0". Also, the "[[ -t ]]" should return TRUE when the process is attached to a terminal. In this case, it just prints a message about the logfile (instead of having the user wonder if the script is even running).

I also close stdin since an unattended script should never need input. For instance, if you have "grep $FILENAME" or "cat $FILENAME" and a bug has left $FILENAME unset, then the script would normally hang waiting for input from stdin. If that input is already /dev/null then the script can continue.

Last edited by gus2000; 12-05-2007 at 04:19 PM..
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

capture the process id when starting a background process

Hello all, How do I start a background process and save the process id to a file on my system. For example %wait 5 & will execute and print the process id. I can't figure out how to get it to a file. I've tried: > filename 0>filename 1>filename. Any assistance is most appreciated. Thanks, Jim... (10 Replies)
Discussion started by: jleavitt
10 Replies

2. Shell Programming and Scripting

process in background

Hi Guys, I am facing some weird problem with my shell script. The script shows up a menu and for every ontion internally calls a shell script which start/stop various servers. When I am using '&' while calling the internal shell script so that the server run in the background. For exiting... (1 Reply)
Discussion started by: agoyal
1 Replies

3. Shell Programming and Scripting

background process

Hi, In shell script when I use script1 >> filelog the echo statments of script1 gets printed in the filelog but when I try to run script in background i.e, script1 & >> filelog nothing gets printed in the filelog. Anybody knows whats going on here. thanks (3 Replies)
Discussion started by: k_oops9
3 Replies

4. UNIX for Dummies Questions & Answers

background process

How, can I hide background process's output? (5 Replies)
Discussion started by: zylwyz
5 Replies

5. Red Hat

Background process

If I run a process in the back ground like find . -name "abc" & after the process is complete we get a msg like + Done find . -name "abc" & Is it possible to redirect this msg to /dev/null Thanks for your help (1 Reply)
Discussion started by: Ujan
1 Replies

6. UNIX for Dummies Questions & Answers

Background Process

I need to submit a script that will continue to run after logging out and after a reboot or shutdown. I entered the following: nohup script & The script continues to run in the background after logging off the system but is killed after a reboot or shutdown. Any help would be greatly... (1 Reply)
Discussion started by: powwm
1 Replies

7. UNIX for Dummies Questions & Answers

Script to start background process and then kill process

What I need to learn is how to use a script that launches background processes, and then kills those processes as needed. The script successfully launches the script. But how do I check to see if the job exists before I kill it? I know my problem is mostly failure to understand parameter... (4 Replies)
Discussion started by: holocene
4 Replies

8. AIX

Background process

how to check the process running in background? how can i run a process in background? pls explain with commands (1 Reply)
Discussion started by: udtyuvaraj
1 Replies

9. Shell Programming and Scripting

How to put FTP process as a background process/job in perl?

Hi, I am using net::ftp for transferring files now i am trying in the same Linux server as a result ftp is very fast but if the server is other location (remote) then the file transferred will be time consuming. So i want try putting FTP part as a background process. I am unaware how to do... (5 Replies)
Discussion started by: vanitham
5 Replies

10. Shell Programming and Scripting

Make background process interact with fg process

Hi, I have written a menu driven shell script in which as per the choice, I run the another script on background. For eg: 1. get info 2)process info 3)modify info All the operations have different scripts which i schedule in background using &. However I wish to display the error... (0 Replies)
Discussion started by: ashima jain
0 Replies
cachefslog(1M)						  System Administration Commands					    cachefslog(1M)

NAME
cachefslog - Cache File System logging SYNOPSIS
cachefslog [-f logfile | -h] cachefs_mount_point DESCRIPTION
The cachefslog command displays where CacheFS statistics are being logged. Optionally, it sets where CacheFS statistics are being logged, or it halts logging for a cache specified by cachefs_mount_point. The cachefs_mount_point argument is a mount point of a cache file system. All file systems cached under the same cache as cachefs_mount_point will be logged. OPTIONS
The following options are supported. You must be super-user to use the -f and -h options. -f logfile Specify the log file to be used. -h Halt logging. OPERANDS
cachefs_mount_point A mount point of a cache file system. USAGE
See largefile(5) for the description of the behavior of cachefslog when encountering files greater than or equal to 2 Gbyte ( 2^31 bytes). EXAMPLES
Example 1 Checking the Logging of a directory. The example below checks if the directory /home/sam is being logged: example% cachefslog /home/sam not logged: /home/sam Example 2 Changing the logfile. The example below changes the logfile of /home/sam to /var/tmp/samlog: example# cachefslog -f /var/tmp/samlog /home/sam /var/tmp/samlog: /home/sam Example 3 Verifying the change of a logfile. The example below verifies the change of the previous example: example% cachefslog /home/sam /var/tmp/samlog: /home/sam Example 4 Halting the logging of a directory. The example below halts logging for the /home/sam directory: example# cachefslog -h /home/sam not logged: /home/sam EXIT STATUS
The following exit values are returned: 0 success non-zero an error has occurred. ATTRIBUTES
See attributes(5) for descriptions of the following attributes: +-----------------------------+-----------------------------+ | ATTRIBUTE TYPE | ATTRIBUTE VALUE | +-----------------------------+-----------------------------+ |Availability |SUNWcsu | +-----------------------------+-----------------------------+ SEE ALSO
cachefsstat(1M), cachefswssize(1M), cfsadmin(1M), attributes(5), largefile(5) DIAGNOSTICS
Invalid path It is illegal to specify a path within a cache file system. SunOS 5.11 7 Feb 1997 cachefslog(1M)
All times are GMT -4. The time now is 01:43 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy