[linux] Re: Hey you script, be quiet when all is well!

Paul Slootman paul+nospam op wurtel.net
Di Jan 30 12:45:34 CET 2007


On Mon 29 Jan 2007, Remko Bolt wrote:
> 
> Nu ben ik wat aan het uitproberen geslagen en heb gemerkt dat je of een
> Hangup of een Done krijgt. Hoe kom ik daar vanaf?
> 
> sheba:~$ sleep 60 &
> [3] 22463
> sheba:~$ kill -HUP 22463
> sheba:~$
> [3]+  Hangup                  sleep 60

Hier krijg je een hangup melding omdat je een -HUP (wat hangup
betekent!) stuurt aan het process.

> sheba:~$ sleep 1 &
> [3] 22464
> sheba:~$
> [3]+  Done                    sleep 1

Hier een "done" melding omdat het process normaal beeindigd is.


Dit is het normale gedrag van een interactieve bash op een systeem dat
job control ondersteunt. Een shell script die dingen in het achtergrond
doet enzo is dus _niet_ interactief! En zal dus dergelijke meldingen
niet geven.

> ----------------------
> #!/bin/bash
> # getsomething: (description here :-)
> 
> TMP_DIR=/home/remko/tmp
> cd $TMP_DIR
> 
> host="www.somewhere.org"
> tag=$RANDOM
> persno=${1%%:*}
> credentials=`echo -n $1 | uuencode -m - | sed -n '2 p' -`
> 
> line1="POST /members/assignments/bin/roster.cmd HTTP/1.1\n"
> line2="Host: $host\n"
> line3="Authorization: Basic "$credentials"\n"
> line4="Content-Type: application/x-www-form-urlencoded\n"
> line6="persno="$persno"&version=current"
> line5="Content-Length: "${#line6}"\n"
> 
> echo -e "\r" >result-$tag
> {
> echo -e $line1$line2$line3$line4$line5$line6"\n\n"
> } | openssl s_client -quiet -bugs -connect $host:443 \
>  >>result-$tag
> PROC=$!

$! is voor het PID van het laatste in het achtergrond gestartte process.
Echter, ik zie hierboven niks wat in het achtergrond gezet wordt...
(geen & teken)

> sleep 2
> kill -HUP $PROC
> # This could be a bit more sofisticated. Maybe check the
> # last line of result-$tag and match it or time out.
> 
> if [ `cat result-$tag | wc -c` == "2" ]; then
>     echo "`basename $0`: connection failed." > /dev/stderr

Traditioneel zou dit moeten zijn:

    echo "`basename $0`: connection failed." >&2

Dat werkt op elk unix systeem...


Paul Slootman



More information about the Linux mailing list