[gull] Truc et astuces: bash connector

felix felix at f-hauri.ch
Fri Feb 9 10:02:05 CET 2018


On Tue, Feb 06, 2018 at 05:42:44PM +0100, felix wrote:
> ... à "sourcer" ou à lancer pour la démo:
>   https://f-hauri.ch/vrac/shell_connector.sh
Exemple:

  $ wget https://f-hauri.ch/vrac/shell_connector.sh
  ...
  $ . shell_connector.sh 
  $ tty
  /dev/pts/20
  $ ps --tty pts/20 fw
  PID TTY      STAT   TIME COMMAND
  29019 pts/20   Ss     0:00 bash
  30745 pts/20   R+     0:00  \_ ps --tty pts/20 fw

  $ newConnector /usr/bin/bc "-l" '3*4' 12
  $ ps --tty pts/20 fw
    PID TTY      STAT   TIME COMMAND
  29019 pts/20   Ss     0:00 bash
  30944 pts/20   S      0:00  \_ bash
  30945 pts/20   S      0:00  |   \_ /usr/bin/bc -l
  30952 pts/20   R+     0:00  \_ ps --tty pts/20 fw

  $ declare -p PI
  bash: declare: PI: not found

  $ myBc '4*a(1)' PI
  $ declare -p PI
  declare -- PI="3.14159265358979323844"

  $ newConnector /bin/date '-f - +%s' @0 0
  $ myDate '2000-01-01'
  946681200
  $ myDate "$(ps ho lstart 1)" boottime
  $ myDate now now;myBc "$now-$boottime" uptime;\
        read utm idl </proc/uptime;printf "%s\n" ${utm%%.*} $uptime
  42134906
  42134906

  $ ps --tty pts/20 fw
    PID TTY      STAT   TIME COMMAND
  29019 pts/20   Ss     0:00 bash
  30944 pts/20   S      0:00  \_ bash
  30945 pts/20   S      0:00  |   \_ /usr/bin/bc -l
  32615 pts/20   S      0:00  \_ bash
  32616 pts/20   S      0:00  |   \_ /bin/date -f - +%s
   3162 pts/20   R+     0:00  \_ ps --tty pts/20 fw

J'ai donc un process `bc` (30945), qui tourne en arrière tâche et
qui effectue tous les calculs que je lui demande, ainsi qu'un
process `date` (32616), qui converti en *unix time stamp*, les
dates que je lui soumet...

Pour terminer un process, il faut fermer ses descripteur, dans l'ordre
(du dernier au premier:)

  $ eval "exec $DATEOUT>&-"
  $ eval "exec $DATEIN>&-"
  $ ps --tty pts/20 fw
    PID TTY      STAT   TIME COMMAND
   4936 pts/20   Ss     0:00 bash
   5256 pts/20   S      0:00  \_ bash
   5257 pts/20   S      0:00  |   \_ /usr/bin/bc -l
   6358 pts/20   R+     0:00  \_ ps --tty pts/20 fw

Ce qui n'est pas nécessaire, puisque les sous-tâches se terminent
lorsque le process courrant termine.

> Question et commentaires bienvenus...

-- 
 Félix Hauri  -  <felix at f-hauri.ch>  -  http://www.f-hauri.ch


More information about the gull mailing list