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 –

  • Come faccio a dividere facilmente i file di backup grandi su più dischi?
  • Linux: scopri quale process utilizza tutta la RAM?
  • Come utilizzare la sicurezza ATA su un disco rigido in pratica?
  • Cifs rimovibili automatici / SMB dopo una breve interruzione della networking
  • FFMPEG: come aggiungere la filigrana al video?
  • Directory - / sys in linux
  •  ./server & ./client 

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

    Cosa posso fare?

  • Aggiungere directory a $ PATH se non è già presente
  • Linux - Protezione da noi stessi (radice)
  • Gestione password password centralizzata cross-platform
  • MySQL Workbench non è presente in MySQL Community RPM per Fedora 21
  • Come leggere una row da "tail -f" attraverso una pipeline e poi terminare?
  • Quali sono i problemi di creare un'unità USB Windows 7 bootibile da Linux con ms-sys o dd?
  • 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.