Sponsored Content
Top Forums Shell Programming and Scripting Background process, return code and pid. Post 302546916 by purdym on Friday 12th of August 2011 01:10:15 PM
Old 08-12-2011
Q: ALSO: How do I get the PID of the running process, that is say I call my script safe_ssh, how do I get the PID of safe_ssh from within safe_ssh. I assume it must be straight forward but do not currently know.

A: $$

If I were writing this I wouldn't try to get the return code from ssh. It is quite hard. Why not redirect all the output from ssh to a log file. Then examine the log file for errors, if there are errors, set the return code to non-zero.

---------- Post updated at 12:10 PM ---------- Previous update was at 11:44 AM ----------

Consider these examples:

Code:
safe_ssh 5 wpgux001_sw sleep 20

job should not run for more than 5 seconds
command is: sleep 20

Code:
SSH appears to be hung.
kill -15 934072
Output is:
This is a private computer facility.  Access to the facility must be
specifically authorized.  If you are not authorized, your continued
access and further inquiry expose you to criminal and/or civil
proceedings.

RET_CODE: 255

Code:
safe_ssh 25 wpgux001_sw sleep 20

Output is:
This is a private computer facility.  Access to the facility must be
specifically authorized.  If you are not authorized, your continued
access and further inquiry expose you to criminal and/or civil
proceedings.

RET_CODE: 0

Code:
safe_ssh 25 wpgux00a_sw sleep 20

host wpgux00a_sw does not exist.

Code:
Output is:
ssh: Could not resolve hostname wpgux00a_sw: Hostname and service name not provided or found
RET_CODE: 1

Consider this code:

Code:
safe_ssh () {

  SLEEP_WAIT=$1
  shift

  #############################################################################
  # Check that the first parameter is an integer.                             #
  #############################################################################
  if [[ ! -z $(echo $SLEEP_WAIT | sed 's/[0-9]//g') ]]
  then
    echo "Usage error safe_ssh"
    echo "The first parameter must be an integer representing the timeout "
    echo "duration in seconds."
    exit 1
  fi

  #############################################################################
  # Set up the SSH thread to run the command. This will also run in the       #
  # background.                                                               #
  #############################################################################
  ssh $@ 1>/tmp/ssh.$$ 2>&1 &
  ssh_pid=$!

  # sleep
  sleep $SLEEP_WAIT

  #############################################################################
  # check if ssh is still running, if it is, kill it
  #############################################################################
  if (( $(ps -ef | egrep -v "ps|grep" | grep -cw $ssh_pid) > 0 ))
  then
     echo "SSH appears to be hung."
     echo "kill -15 $ssh_pid"
     RET_CODE=255

  else
     RET_CODE=$(egrep -ci "error|fail|ssh:" /tmp/ssh.$$)

  fi

  echo "Output is:"
  cat /tmp/ssh.$$

}

Notice the change in logic. Sleep is not in the background. I don't kill the sleep. Simply sleep and then check if ssh is still running.
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

PID of process started in background??

I am having a problem getting the PID of a process I start in the background is a csh. In tcsh and sh it's simple $! give it to you But in csh this just returns Variable syntax From the man page it should work but it doesn't???? Any help. (2 Replies)
Discussion started by: stilllooking
2 Replies

2. Shell Programming and Scripting

background process return code

Hi I have the following piece of code that is calling another child process archive.ksh in the background while read file; do file_name=`ls $file`; ksh archive.ksh $file_name &; done < $indirect_file The problem is, indirect_file may contain anwhere from 2 to 20 different... (5 Replies)
Discussion started by: Vikas Sood
5 Replies

3. 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

4. Shell Programming and Scripting

Return code of background process

Hi, I have a process that I run in the background that looks like this ${BASEDIR}/ksh/sqler.ksh ${compnames003} & and I would like to get the return code of the sqler.ksh script. so my code is like this ${BASEDIR}/ksh/sqler.ksh ${compnames003} & retcode=$? (3 Replies)
Discussion started by: c19h28O2
3 Replies

5. Shell Programming and Scripting

does the pid of background process show in /proc?

Hi all, I'm reading <advanced bash scripting> and there is a example to kill a background process in a limited time,as shown below: #! /bin/bash #set -n TIMEOUT=$1 count=0 hanging_jobs & { while ((count < TIMEOUT));do eval ' && ((count = TIMEOUT))' ((count++)) sleep 1... (6 Replies)
Discussion started by: homeboy
6 Replies

6. Shell Programming and Scripting

[SOLVED] Using "$!" to get the PID of the Last Ran Background Process

Hello All, I was looking into creating a script that would be used only to start a Daemon and create a lock file... F.Y.I. It's for Nagios' NRPE Daemon Plugin... Anyway when I run the command to start the Daemon (below): /usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d And... (14 Replies)
Discussion started by: mrm5102
14 Replies

7. Shell Programming and Scripting

Catch exit code of specific background process

Hi all, i hava a specific backgroud process. I have de PID of this process. At some time, the process finish his job, is there any way to catch the exit code? I use "echo $?" normally for commands. Thanks! (2 Replies)
Discussion started by: Xedrox
2 Replies

8. Shell Programming and Scripting

Capturing the return code from background process

Hi All, I was out not working on unix from quite sometime and came back recently. I would really appreciate a help on one of the issue I am facing.... I am trying to kick off the CodeNameProcess.sh in PARALLEL for all the available codes. The script runs fine in parallel. Let say there are... (1 Reply)
Discussion started by: rkumar28
1 Replies

9. Shell Programming and Scripting

Pass return value of a function in background process

Hi, I have created a function f1 defined in script A.sh .I have called this function in background . But I want to use its return value for another function f2 in script A.sh. I tried declaring it as a global variable, yet it always returns the status as 0. Is there any way with which I can get... (7 Replies)
Discussion started by: ashima jain
7 Replies

10. Shell Programming and Scripting

How to return from background process and check if it is running or not?

Hi Team, i am executing 3 scripts in background from 1 script and i want to send a message once the script gets completed.these scripts usually takes 1 hr to complete. My sample script is below, Vi abc.sh sh /opt/data/Split_1.sh & sh /opt/data/Split_2.sh & sh /opt/data/Split_3.sh & ... (3 Replies)
Discussion started by: raju2016
3 Replies
All times are GMT -4. The time now is 08:20 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy