Comment calculer la sortie de screen -ls?


0

tout. Comment puis-je écrire toutes les sessions dans un tableau? (screen -ls) c'est-à-dire:

23257.name_session1 (06/06/2017 22:41:18) (Détaché)

22011.name_session2 (06/06/2017 19:50:33) (Détaché)

arr [0] = 23257.name_session1;

arr [1] = 22011.name_session2;

Exemple de commandes: screen -ls | grep -oP '\ d +. \ S +' | grep -oP '(? <= \ d.) \ S +'

Réponses:


0
arr=($(screen -ls | egrep -o '\t.+\t' | sort -n))

Panne:

arr=($(...)): Affecte une série de valeurs séparées par des espaces à un tableau indexé, par exemple , arr=($(1 2 three 4))définit $arr[0]=1, $arr[1]=2, $arr[2]=three, et $arr[3]=4.

screen -ls: Fonction de base dont la sortie doit être filtrée. Cela génère les lignes suivantes (exemple):

There are screens on:
    79481.ttys000.macbook   (Detached)
    80513.ttys004.macbook   (Attached)
    79513.ttys002.macbook   (Detached)
3 Sockets in /var/folders/ht/0ty_c8mx16v69csh949g3rvr0000gn/T/.screen.

Notez que les espaces sur les lignes contenant les détails de la session sont des colonnes délimitées par des tabulations.

egrep -o '\t.+\t': Sélectionne uniquement la sortie sur chaque ligne comprise entre deux caractères de tabulation (inclut les tabulations). Cela isole les pid.tty.hostchaînes.

sort -n: Triez chaque ligne par ordre numérique, du plus petit pid au plus grand pid.

Le tableau résultant contient les pid.tty.hostidentifiants de chaque session d'écran (à la fois attachés et déconnectés), avec $arr[0]la session qui a commencé en premier, jusqu'à $arr[n-1]la n- session, qui a commencé le plus récemment.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.