• # [Memo ] les jobs

    Posté par . En réponse au journal Ligne de commande : les 20 mémos d'un « autodidacte ». Évalué à 7.

    AMA, Il manque un bout sur les processus, notamment les travaux: la mise en veille, l'exécution en tâche de fond.

    Mettre le travail en attente:

    david:~> sleep 500

    Appuyez sur [ctrl-z]

    david:~> sleep 500
    [1] + Interrompu sleep 50

    pour obtenir la liste des travaux qui s'exécutent sous votre session:

    david:~>jobs
    [1] Interrompu sleep 500

    Continuer l’exécution:

    fg

    ou, continuer en tâche de fond:

    david:~> bg
    [1] sleep 500 &
    david:~>jobs
    [1] Tourne sleep 500

    Notez le & qui indique que le processus s'exécute en fond, démarrer le directement en fond de la même manière:

    david:~> sleep 500&
    [3] 3687
    david:~> jobs -l
    [1] + 3641 Tourne sleep 500
    [2] 3674 Tourne sleep 500
    [3] - 3687 Tourne sleep 500

    le numéro indique le numéro qui identifie le processus. Vous pouvez aussi utiliser directement le numéro des travaux (celui entre crochets) précédé de %
    avec kill par exemple

    david:~>kill -STOP %2
    [2] + Interrompu (Signal) sleep 500
    david:~>kill -TERM %2
    david:~>jobs -l
    [2] 3674 Terminé sleep 500
    [3] + 3687 Tourne sleep 500

    Car en fait, tout ça n'est en fait que de l'envoi de signal aux processus.

    Laisser ces travaux se terminer même après la fermeture de session ?

    Utilisez disown:

    [david@llanura ~]$ sleep 1001 &
    [1] 3919
    [david@llanura ~]$ disown

    Vous pouvez fermer votre session.

    Ou nohup, pour:

    1. le faire directement ;
    2. rediriger la sortie vers le fichier nohup.out .
    nohup sleep 500&

    les raccourcis

    pgrep et pkill pour éviter les tubes entre ps et grep. Avec notamment l'affichage par ordre de lancement de pgrep -o dont je causais sur Mastodon il y a peu de temps.

    biblio

    voir aussi la série des