2 votes

Exécuter la commande Shell en sous-shell ou en arrière-plan ?

En fait, je travaille principalement avec Ruby, mais maintenant j'ai créé un fichier bash script. A partir de ce fichier script j'affiche les messages à l'écran. Voici mon scénario.

J'ai utilisé aosd_cat pour afficher les messages à l'écran et je l'ai fait avec succès. Pour cela, j'ai utilisé leur documentation .

Voici mon message.sh Fichier script :

#!/bin/bash
function message_1(){
  if [ condition ]
    echo 'message -1' | DISPLAY=:0 aosd_cat -u 10000 -e 2 -t 2 -R 'Green' -n 'Arial Bold 20' -p 0 -x 10 -y 60
  else
    echo 'message -4' | DISPLAY=:0 aosd_cat -u 10000 -e 2 -t 2 -R 'Green' -n 'Arial Bold 20' -p 0 -x 10 -y 60
  fi
}

function message_2(){
  echo 'message -2' | DISPLAY=:0 aosd_cat -u 10000 -e 2 -t 2 -R 'Green' -n 'Arial Bold 20' -p 0 -x 10 -y 60
}

function message_3(){
  echo 'message -3' | DISPLAY=:0 aosd_cat -u 10000 -e 2 -t 2 -R 'Green' -n 'Arial Bold 20' -p 0 -x 10 -y 60
}

# As I have to display messages continuously
while true
do
  message_1
  message_2
  message_3
done

Après l'exécution, je constate que les messages s'affichent un par un (le message_1 s'affiche en premier, puis le message_2 et enfin le message_3).

Je dois afficher tous les messages en même temps. Pour y parvenir, je pense que je peux exécuter ces commandes dans un sous-shell/sous-processus/en arrière-plan (afin de ne pas affecter les autres processus).

En ruby, nous avons commande système qui exécute la commande donnée dans un sous-shell. Comment puis-je réaliser ce type de fonctionnalité dans le fichier bash script ?

3voto

MariusMatutiae Points 45233

Vous pouvez le faire comme ça :

  bash -c command

mais dans votre cas, envoyer la commande à l'arrière-plan est peut-être suffisant :

  command &

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X