Shell script process remains after "exit 1"


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Shell script process remains after "exit 1"
# 1  
Old 10-21-2008
Shell script process remains after "exit 1"

I have a script that performs an oracle export:

Code:
<snip>
if [ ${exp_type} = FULL ]
then
        exp / full=y file=${exp_file} log=${exp_log} direct=y feedback=1000000 STATISTICS=NONE buffer=20000000
else
        exp / full=n owner=${schema_name} file=${exp_file} log=${exp_log} direct=y feedback=1000000 STATISTICS=NONE buffer=20000000
fi

if [ $? -ne 0 ]
then
        echo "Export command failed"
        exit 1
fi
echo "Export command succeeded"
exit 0

If the export succeeds then I get the message and the script ends with no process in memory. However, if it fails, the script stops (ie. doesn't display "Export Succeeded") but the process remains:

Code:
> ps -ef|grep export
oracle   23241     1  0 10:04 pts/1    00:00:00 /bin/bash /u01/ct_scr/export.sh TAXTST FULL Y

Anyone know what's happening here?
# 2  
Old 10-21-2008
try
Code:
ps -ef |grep PID

to see if the process script has any kids, these maybe holding it open, while it waits for them to finish.
Oh, PID above is the result of the original ps -ef that you did.
# 3  
Old 10-21-2008
No, nothing:

Code:
> ps -ef|grep 23241
oracle   23241     1  0 10:04 pts/1    00:00:00 /bin/bash /u01/ct_scr/export.sh TAXTST FULL Y
oracle   24421  9040  0 10:22 pts/1    00:00:00 grep 23241

# 4  
Old 10-21-2008
ok, a little more diagnosis:

The Y flag on the script is to indicate whether the dump should be compressed via pipe. executing the script with: "/u01/ct_scr/export.sh TAXTST FULL N" exits just fine.

Here's the code for $3=Y:
Code:
if [ ${compress} = Y ]
then

        pipe_name=${exp_loc}/compress_${ORACLE_SID}_${schema_name:-FULL}_${today}_p

        # remove any existing pipe
        rm -f ${pipe_name}

        # Make a new pipe
        /bin/mknod ${pipe_name} p

        # initiate compression process on the new pipe to run in the background
        gzip -c < ${pipe_name} > ${exp_file}.gz &

        # Re-direct export output to the pipe
        exp_file=${pipe_name}

fi

I also included a cleanup function which is called before the exit 1:

Code:
cleanup()
{
if [ ${compress:-N} = Y ]
then
        rm -f ${pipe_name}
fi
}

The pipe and background gzip command are gone once the script ends but maybe the script doesn't know that and hangs around?

Let me know if I've confused the heck out of you. I'd post the whole script but it's kinda long...
# 5  
Old 10-21-2008
Confirmed. feeding the pipe some dummy text (with an implicit EOF) before removing it causes the script to exit correctly:

Code:
cleanup()
{
if [ ${compress:-N} = Y ]
then
        echo "fail" >> ${pipe_name}
        rm -f ${pipe_name}
fi
}

Presumably the issue is coming from the gzip command not returning an exit code to the script process before it disappears, keeping the script process open. Killing the pipe before it feeds the gzip process anything seems to leave the script process in limbo. Feeding the dummy text is an OK workaround but it leaves me with the .gz file after a failure.

Does anyone know how to send JUST the EOF to a pipe? I'm hoping that this will cause the background gzip process to exit cleanly without creating a .gz file.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Bash script - Print an ascii file using specific font "Latin Modern Mono 12" "regular" "9"

Hello. System : opensuse leap 42.3 I have a bash script that build a text file. I would like the last command doing : print_cmd -o page-left=43 -o page-right=22 -o page-top=28 -o page-bottom=43 -o font=LatinModernMono12:regular:9 some_file.txt where : print_cmd ::= some printing... (1 Reply)
Discussion started by: jcdole
1 Replies

2. Tips and Tutorials

My "Bread and Butter" Process Keep Alive Perl Script....

For the newbies, I should have posted this years ago.... Here is the standard (tiny) "bread and butter" perl script (on Linux) I use in my crontab files to insure key processes are alive ( just in case ! ) like httpd, named, sshd, etc. The example below if for named...... ... (1 Reply)
Discussion started by: Neo
1 Replies

3. UNIX for Dummies Questions & Answers

Problems with "exit" called from function in bourne script

Hi everyone. #!/sbin/sh EXITING() { umount /FOLDER rm -Rf /FOLDER echo "EXIT" exit 0 } EXITING echo "OK" (8 Replies)
Discussion started by: vacadepollo
8 Replies

4. Shell Programming and Scripting

awk command to replace ";" with "|" and ""|" at diferent places in line of file

Hi, I have line in input file as below: 3G_CENTRAL;INDONESIA_(M)_TELKOMSEL;SPECIAL_WORLD_GRP_7_FA_2_TELKOMSEL My expected output for line in the file must be : "1-Radon1-cMOC_deg"|"LDIndex"|"3G_CENTRAL|INDONESIA_(M)_TELKOMSEL"|LAST|"SPECIAL_WORLD_GRP_7_FA_2_TELKOMSEL" Can someone... (7 Replies)
Discussion started by: shis100
7 Replies

5. UNIX for Advanced & Expert Users

Command Character size limit in the "sh" and "bourne" shell

Hi!!.. I would like to know what is maximum character size for a command in the "sh" or "bourne" shell? Thanks in advance.. Roshan. (1 Reply)
Discussion started by: Roshan1286
1 Replies

6. Shell Programming and Scripting

Ksh script function, how to "EXIT 2" without killing the current process?

Hi, Using AIX 5.3 and Ksh. />ls -al /usr/bin/ksh -r-xr-xr-x 5 bin bin 237420 Apr 10 2007 /usr/bin/ksh /> I recently started working for a new employer. I have written UNIX K-Shell scripts for many years and have never had this particular issue before. Its perplexing me. I have... (2 Replies)
Discussion started by: troym72
2 Replies

7. Red Hat

"service" , "process" and " daemon" ?

Friends , Anybody plz tell me what is the basic difference between "service" , "process" and " daemon" ? Waiting for kind reply .. .. (1 Reply)
Discussion started by: shipon_97
1 Replies

8. AIX

"too big" and "not enough memory" errors in shell script

Hi, This is odd, however here goes. There are several shell scripts that run in our production environment AIX 595 LPAR m/c, which has sufficient memory 14GB (physical memory) and horsepower 5CPUs. However from time to time we get the following errors in these shell scripts. The time when these... (11 Replies)
Discussion started by: jerardfjay
11 Replies

9. Shell Programming and Scripting

How to include RETURN KEY with Background process "&" in Shell Script

Hello All, I am a newbie in Shell script programming, and maybe you can help me with my query. I need to write a shell script (mntServer.ksh) that will start a background process and also to be able to run another script. The mntServer.ksh script contains: #!/bin/ksh... (1 Reply)
Discussion started by: racbern
1 Replies

10. UNIX for Dummies Questions & Answers

No utpmx entry: you must exec "login" from lowest level "shell"

Hi I have installed solaris 10 on an intel machine. Logged in as root. In CDE, i open terminal session, type login alex (normal user account) and password and i get this message No utpmx entry: you must exec "login" from lowest level "shell" :confused: What i want is: open various... (0 Replies)
Discussion started by: peterpan
0 Replies
Login or Register to Ask a Question