Processus shell
Fermé
julie
-
17 févr. 2010 à 14:08
mamiemando Messages postés 33654 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 4 mai 2025 - 18 févr. 2010 à 01:51
mamiemando Messages postés 33654 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 4 mai 2025 - 18 févr. 2010 à 01:51
Bonjour, si j'écris un petit script et que je l'éxécute dans mon shell, par exemple: ./script.sh.
A cet instant, le processus script est actif, mais le processus shell il est dans quel état?
merci
A cet instant, le processus script est actif, mais le processus shell il est dans quel état?
merci
A voir également:
- Processus shell
- Classic shell - Télécharger - Personnalisation
- Processus inactif du systeme - Forum Matériel & Système
- Shell startup windows 10 - Guide
- Processus hote windows rundll32 - Forum Virus
- C'est quoi le processus inactif du system ? ✓ - Forum Windows
2 réponses
mamiemando
Messages postés
33654
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
4 mai 2025
7 846
17 févr. 2010 à 17:39
17 févr. 2010 à 17:39
Ben il tourne aussi :-) Ton script est juste un processus fils du processus associé à ton shell. Pour t'en convaincre écrit le script plop;sh suivant :
... et exécute-le. Tu verras un truc dans ce goût :
Note : ça aurait donné le même résultat si tu avais mis des droits en exécution à plop.sh et que tu l'avais lancé en tapant :
Ici on voit que le processus konsole a un processus fils, bash, qui est le shell utilisé dans ma konsole. Ce processus a lui-même un processus fils "plop.sh", que j'ai lancé dans le bash de cette console. Le processus plop.sh a lancé à son tour un processus fils, "ps faux" qui permet d'afficher la table des processus et leurs dépendances. On retrouve bien ces relations entre processus parents et processus enfants.
Bonne chance
#!/bin/sh ps faux
... et exécute-le. Tu verras un truc dans ce goût :
(mando@aldur) (~) $ sh plop.sh ... ... ? Sl 17:15 0:10 kdeinit4: konsole [kdeinit] ... pts/1 Ss 17:15 0:00 \_ /bin/bash ... pts/1 S+ 17:39 0:00 | \_ sh plop.sh ... pts/1 R+ 17:39 0:00 | \_ ps faux ...
Note : ça aurait donné le même résultat si tu avais mis des droits en exécution à plop.sh et que tu l'avais lancé en tapant :
./plop.sh
Ici on voit que le processus konsole a un processus fils, bash, qui est le shell utilisé dans ma konsole. Ce processus a lui-même un processus fils "plop.sh", que j'ai lancé dans le bash de cette console. Le processus plop.sh a lancé à son tour un processus fils, "ps faux" qui permet d'afficher la table des processus et leurs dépendances. On retrouve bien ces relations entre processus parents et processus enfants.
Bonne chance
mamiemando
Messages postés
33654
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
4 mai 2025
7 846
18 févr. 2010 à 01:51
18 févr. 2010 à 01:51
Ah je vois ce que tu veux dire. En fait je pense qu'il faudrait lire le man de ps pour voir la signification de chaque colonne.
Ceci dit c'est un peu une question existentielle que je ne me suis jamais vraiment posée. En fait il faut bien voir que le rôle de l'OS (linux) est de répartir entre les différents processus l'accès au CPU et à la RAM.
En fait il y a de bonne chances pour que l'appel à sh via la fonction C popen en shell quand la commande shell n'est pas suivi d'un & (appel système bloquant). En ce sens les deux processus sont donc bien en cours d'exécution, mais le fil du processus père est stoppé tandis que celui du processus fils (pouet.sh par exemple) est exécuté.
En tout cas le programme n'est pas "endormi" au sens de la fonction C sleep, en ce sens que le shell va reprendre la main une fois que le processus fils ce sera achevé (et non au bout d'une durée donnée).
Il faut bien voir que de toute façon, il y a bien plusieurs fils d'exécution. L'OS se charge d'avancer le fil d'exécution de chaque processus en fonction notamment de son niveau de priorité (voir commande nice), et tous ces processus sont donc bien en cours d'exécution.
Par contre effectivement, à un instant donné, je pense qu'effectivement seul un fil d'exécution avance si c'est une machine non multithreadée et avec un processeur muni de plusieurs cœurs. Il faudrait prendre le temps de vérifier tout ça sur wikipédia...
Bonne chance
man ps
Ceci dit c'est un peu une question existentielle que je ne me suis jamais vraiment posée. En fait il faut bien voir que le rôle de l'OS (linux) est de répartir entre les différents processus l'accès au CPU et à la RAM.
En fait il y a de bonne chances pour que l'appel à sh via la fonction C popen en shell quand la commande shell n'est pas suivi d'un & (appel système bloquant). En ce sens les deux processus sont donc bien en cours d'exécution, mais le fil du processus père est stoppé tandis que celui du processus fils (pouet.sh par exemple) est exécuté.
man popen
En tout cas le programme n'est pas "endormi" au sens de la fonction C sleep, en ce sens que le shell va reprendre la main une fois que le processus fils ce sera achevé (et non au bout d'une durée donnée).
Il faut bien voir que de toute façon, il y a bien plusieurs fils d'exécution. L'OS se charge d'avancer le fil d'exécution de chaque processus en fonction notamment de son niveau de priorité (voir commande nice), et tous ces processus sont donc bien en cours d'exécution.
Par contre effectivement, à un instant donné, je pense qu'effectivement seul un fil d'exécution avance si c'est une machine non multithreadée et avec un processeur muni de plusieurs cœurs. Il faudrait prendre le temps de vérifier tout ça sur wikipédia...
Bonne chance
17 févr. 2010 à 21:03