[RISOLTO] ionice e pipe

Bash, Perl, Python, Ruby, ...

[RISOLTO] ionice e pipe

Messaggioda sirio81 » 15/12/2017, 8:33

Prendo questo come esempio:
Codice: Seleziona tutto
gunzip -c file.gz | dd of=/dev/vg00/vm bs=1M

Vorrei par partire i processi gzip e sopratutto dd con una bassa priorità di accesso al disco.
Codice: Seleziona tutto
ionice -c 2 -n 7 \
gunzip -c file.gz | dd of=/dev/vg00/vm bs=1M


Così facendo solo gzip viene affetto da ionice.
Ho provato a precedere il comando con le parentesi tonde in modo da eseguirlo in una subshell ma ha resituito errore:

Codice: Seleziona tutto
ionice -c 2 -n 7 \
(gunzip -c file.gz | dd of=/dev/vg00/vm bs=1M)

-bash: syntax error near unexpected token `('


Suggerimenti?
Ultima modifica di sirio81 il 01/01/2018, 22:08, modificato 1 volta in totale.
sirio81
Hero Member
Hero Member
 
Messaggi: 1054
Iscritto il: 13/02/2006, 5:04

Re: ionice e pipe

Messaggioda maxt » 15/12/2017, 19:14

una volta risolsi una cosa del genere, ma non ricordo piu' come
per fare veloce, magari potresti creare uno script con all'interno i comandi e poi lanci ionice e come argomento il file script
maxt
Hero Member
Hero Member
 
Messaggi: 562
Iscritto il: 27/12/2011, 10:00

Re: ionice e pipe

Messaggioda Aki » 16/12/2017, 13:18

Avendo il file test.sh:
Codice: Seleziona tutto
#! /bin/bash
gzip -c /dev/urandom | gzip -d | dd of=/dev/null bs=1M

puoi impartire il seguente comando:
Codice: Seleziona tutto
$ ionice -c 2 -n 7 ./test.sh &
[1] 4178

Per verificare:
Codice: Seleziona tutto
$ ps l
F   UID   PID  PPID PRI  NI    VSZ   RSS WCHAN  STAT TTY        TIME COMMAND
0  1000  4141  4139  20   0  25020  6852 -      Ss   pts/2      0:00 /bin/bash
0  1000  4178  4141  20   0  13248  2964 -      S    pts/2      0:00 /bin/bash ./test.sh
0  1000  4179  4178  20   0   4492  1444 -      R    pts/2      0:02 gzip -c /dev/urandom
0  1000  4180  4178  20   0   4492   716 -      S    pts/2      0:00 gzip -d
0  1000  4181  4178  20   0   7108  1744 -      S    pts/2      0:00 dd of=/dev/null bs=1M
0  1000  4183  4141  20   0  10688  2100 -      R+   pts/2      0:00 ps l

$ ionice -p 4179
best-effort: prio 7

In alternativa, puoi impartire il seguente comando:
Codice: Seleziona tutto
$ ionice -c 2 -n 7 /bin/bash -c "gzip -c /dev/urandom | gzip -d | dd of=/dev/null bs=1M" &
[1] 4301

$ ps l
F   UID   PID  PPID PRI  NI    VSZ   RSS WCHAN  STAT TTY        TIME COMMAND
0  1000  4141  4139  20   0  25036  7092 -      Ss   pts/2      0:00 /bin/bash
0  1000  4301  4141  20   0  13244  2932 -      S    pts/2      0:00 /bin/bash -c gzip -c /dev/urandom | gzip -d | dd of=/dev/null bs=1M
0  1000  4302  4301  20   0   4492  1408 -      R    pts/2      0:02 gzip -c /dev/urandom
0  1000  4303  4301  20   0   4492   724 -      S    pts/2      0:00 gzip -d
0  1000  4304  4301  20   0   7108  1792 -      S    pts/2      0:00 dd of=/dev/null bs=1M
0  1000  4305  4141  20   0  10688  2152 -      R+   pts/2      0:00 ps l

$ ionice -p 4302
best-effort: prio 7
Aki
Global Moderator
Global Moderator
 
Messaggi: 7806
Iscritto il: 27/12/2007, 16:59

Re: ionice e pipe

Messaggioda Aki » 18/12/2017, 17:58

@sirio81: hai risolto ?
Aki
Global Moderator
Global Moderator
 
Messaggi: 7806
Iscritto il: 27/12/2007, 16:59

Re: [RISOLTO] ionice e pipe

Messaggioda sirio81 » 01/01/2018, 22:08

Si, ottima risposta!
Grazie.
sirio81
Hero Member
Hero Member
 
Messaggi: 1054
Iscritto il: 13/02/2006, 5:04


Torna a Scripting

Chi c’è in linea

Visitano il forum: Nessuno e 2 ospiti