Script Shell che inizia un process, inizia un altro process, quindi uccide il primo process

Immagina di avere un client e un server sulla stessa macchina, e vorrei scrivere un po 'di interazione tra di loro.

Mi piacerebbe davvero uno script di shell –

  1. Avviare il server
  2. Metti il server in background
  3. Avviare il client
  4. (aspetta che il client faccia quello che fa)
  5. Arresto del server

Posso fare di più già, come questo –

 ./server & ./client 

Ma questo lascia il server esecuzione dopo che finisce lo script che, oltre a tutto il resto, è molto disordinato.

Cosa posso fare?

  • Come correggere MBR del disco rigido esterno?
  • C'è un modo per mostrare la notifica da script bash in Ubuntu?
  • Dove contiene Okular le annotazioni PDF?
  • Come montare il partito di Windows criptato Safeboot in Ubuntu
  • Scaricare Layout di tastiera aggiuntivi in ​​Ubuntu
  • Trovare i file di documento e copiarli in un'altra directory
  • Imansible disporre di un'email di livello di sistema
  • Come posso determinare il numero di versione corrente di un'applicazione con apt-get
  • 2 Solutions collect form web for “Script Shell che inizia un process, inizia un altro process, quindi uccide il primo process”

    È ansible utilizzare il controllo di lavoro bash:

     #!/bin/bash ./server & ./client kill %1 

    Assicurati di mettere #!/bin/bash all'inizio dello script in modo che bash sia utilizzato per eseguire lo script (non so se il controllo del process è supportto in sh, per favore corregga se lo fa).

    È ansible get lo stesso risultato con POSIX standard sh. In sh, quando si spawn un process in background utilizzando '&', il PID del process viene memorizzato nella variabile speciale $ !. Così:

     #!/bin/sh ./server & ./client kill $! 

    Per situazioni più complesse è ansible salvare il pid:

     #!/bin/sh ./server & serverpid=$! # ... lots of other stuff kill $serverpid 
    Siamo il genio del computer e della rete.