Sponsored Content
Top Forums Shell Programming and Scripting Redirecting command output as well as commands Post 302441004 by AncientCoder on Thursday 29th of July 2010 06:04:01 AM
Old 07-29-2010
Question Redirecting command output as well as commands

I have a Bourne Shell script that is normally run as a background job and redirects it's output to a file internally (using exec >>); I use "set -x" to capture each command which provides me with a nice shell execution log if it all goes to pieces.

I now also need to be able to also run this as an interactive script whilst still keeping the "execution log" concept but have the output from certain commands also printed on the user terminal so they know what's going on during the long sections whilst keeping them in the log as well.

The following Sample Script shows on screen the output from msg() and the output from awk;
'user.log' is fine as a printable logfile;
'exec.log' shows everything BUT the output from awk

QUESTION (finally) - how can I get the output from awk to show on the original script stdout (ie user screen) AND also into exec.log

Sample Script:

Code:
msg() {
    echo `date "+%a %b %d %T"` "$*"  | tee -a user.log 1>&3
}
LOG=exec.log
exec 3>&1                    # remember original stdout (ie user screen)
exec >> $LOG 2>&1        # send stdout/stderr to execution log $LOG
msg "Commenced"          # shows on screen & into 'user.log'
set -x                         # show commands as they run
# use awk to print delayed messages to screen - also want o/p in $LOG
awk 'BEGIN {for(i=0;i<5;i++){printf "\rHelloooo" i;system("sleep 1")};print "";exit }' 1>&3
msg Ended                  # appears on screen, in user.log & $LOG
exit

Any advice/script fragments would be appreciated

Last edited by Scott; 07-29-2010 at 07:34 AM.. Reason: Please use code tags
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Redirecting OUTPUT

Hi, I want to move the output of a command/script to a file as well as to to be displayed on stdout. Can anybody help me in this. Thanks in advace .. -Chanakya M (1 Reply)
Discussion started by: Chanakya.m
1 Replies

2. Shell Programming and Scripting

problem redirecting output of command to variable

Hi. I'm a newbie in scripting and i have this problem: i want to use the 'fuser' command on a file to tell if it's being accessed (for my purposes: still being written). I want to save the output of the command and later compare with the 'not being used' result. the script: #!/bin/bash... (2 Replies)
Discussion started by: nunovc
2 Replies

3. UNIX for Dummies Questions & Answers

redirecting commands to new xterm

hi, I need help in redirecting the commands to a new xterm. I have a executable, say my_script and another file called command.list that has several commands. my_script contents pwd xterm -e command.list I am expecting, all the commands in command.list needs to be executed in the new... (3 Replies)
Discussion started by: sujith
3 Replies

4. Shell Programming and Scripting

Redirecting output of a command to a file

Hi We are having a requirement where one shell script, say a.sh (which uses Java and connects to Oracle database using JDBC) keeps on running everytime. I created a wrapper (to check whether a.sh is running and if not then to start it) and scheduled it in the crontab. Now all the output from... (3 Replies)
Discussion started by: ankitgoel
3 Replies

5. Shell Programming and Scripting

Merging output of two commands for a third command

I'm not sure if this is even possible but I'm hoping to avoid generating a temporary file. What I'm trying to do is append a perl command to the start of a list created by grep, then send the entire thing to mail. This is mainly to ensure that something isn't wrong when the list is blank, but it... (2 Replies)
Discussion started by: Chthonic
2 Replies

6. Shell Programming and Scripting

Reading UNIX commands from file and redirecting output to a file

Hi All I have written the following script: #!/bin/ksh while read cmdline do echo `$cmdline` pid="$cmdline" done<commands.txt =========== commands.txt contains: ps -ef | grep abc | grep xyz |awk '{print $2}; My objective is to store the o/p of the command in a variable and do... (8 Replies)
Discussion started by: rahulparo
8 Replies

7. UNIX for Dummies Questions & Answers

Redirecting the multiple commands output to single file

Hi, I am new to shell scripting and have a question. I would like to redirect the output of multple commands to single file, From what I read from the bash manpage and from some searching it seems it cannot be done within the shell except setting up a loop. Is it? I am running all clearcase... (1 Reply)
Discussion started by: saku
1 Replies

8. Shell Programming and Scripting

Redirecting command output to a file in a shell script

Hello All, I have some unique requirement. I have written a very lengthy script which calls number of resource script to execute a particular task. What I want is output of each command(called from main script and resource scripts) should go to a... (3 Replies)
Discussion started by: anand.shah
3 Replies

9. Linux

RHEL 6.3 - chage command not redirecting the output to console.

When i am issuing chage command, it reporting the output properly. But when i redirect the output, i am not getting the output in the mentioned path. chage -l root >> /tmp/chage.txt. I need to use this into the script to capture the data. I think its seems to be bug with RHEL 6.3. Same... (3 Replies)
Discussion started by: Srini.rk1983
3 Replies

10. Programming

Redirecting output to new file for command "perldoc perllocal"

Hi, I have to redirect output of the command "perldoc perllocal" to new file which contains all the perl module installed. Currently using perldoc perllocal >> mod_data This does not contain all perl modules installed locally on machine, and each character is doubled. Please... (3 Replies)
Discussion started by: asak
3 Replies
PENLOGD(1)						      General Commands Manual							PENLOGD(1)

NAME
penlogd - consolidate web server logs SYNOPSIS
penlogd [-fd] [-j dir] [-l logfile] [-n N] [-p pidfile] [-u user] port EXAMPLE
penlogd -l /var/log/access_log -p /var/run/penlogd.pid 10000 DESCRIPTION
Penlogd receives log entries from Pen and from each of the web servers. It consolidates the entries by replacing the source addresses in each entry with the "real" client address and writes the result to stdout or to the file given on the command line. This completely removes the need for postprocessing with mergelogs, since the logs are already merged. Pen must be instructed to send its log to penlogd. See HOWTO and pen man page for details. Sending penlogd a HUP signal will make it close and reopen the logfile, unless it is logging to stdout. Rotate the log like this: mv access_log access_log.1 kill -HUP `cat <pidfile>` where <pidfile> is the file containing pen's process id. Sending penlogd a TERM signal will make it close the log file and exit cleanly. OPTIONS
-d Turn on debugging. The output goes to stderr if we are running in the foreground (see -f) and to syslog (facility user, priority debug) otherwise. -f Stay in foreground. -j dir Run in a chroot environment. -l logfile Write output into logfile. -n N Number of pen log entries to cache (default 1000). -p pidfile Write process id into pidfile. -u user Run as a different user. port The UDP port where penlogd receives log entries. SEE ALSO
pen(1), penlog(1), webresolve(1) AUTHOR
Copyright (C) 2002-2003 Ulric Eriksson, <ulric@siag.nu>. LOCAL PENLOGD(1)
All times are GMT -4. The time now is 03:01 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy