I processi costituiscono il nucleo di un sistema Linux in esecuzione. Quando un programma si converte in un processo (che è quando viene eseguito), vengono impostati molti attributi. A volte, potresti voler modificare questi attributi in fase di esecuzione. Esiste uno strumento da riga di comando chrt che ti consente di farlo.
In questo tutorial, discuteremo di questa utilità con alcuni esempi di facile comprensione. Ma prima di farlo, vale la pena ricordare che tutti gli esempi in questo articolo sono stati testati su una macchina Ubuntu 18.04 LTS.
Comando Linux chrt
Come già accennato nella sezione introduttiva precedente, il comando chrt consente di manipolare gli attributi in tempo reale di un processo. Di seguito è riportata la sua sintassi:
chrt [options] -p [prio] pid
Ed ecco come lo spiega la pagina man dello strumento:
chrt sets or retrieves the real-time scheduling attributes of an exist?
ing pid, or runs command with the given attributes. Both policy (one
of SCHED_OTHER, SCHED_FIFO, SCHED_RR, SCHED_BATCH, or SCHED_IDLE) and
priority can be set and retrieved.
The SCHED_BATCH policy is supported since Linux 2.6.16. The SCHED_IDLE
policy is supported since Linux 2.6.23.
The SCHED_RESET_ON_FORK flag for policies SCHED_RR and SCHED_FIFO is
supported since Linux 2.6.31.
Di seguito sono riportati alcuni esempi in stile domande e risposte che dovrebbero darti una buona idea su come funziona il comando chrt.
Q1. Come utilizzare il comando chrt?
Supponiamo che tu sia interessato a manipolare la politica di pianificazione o la priorità del processo gedit. Quindi la prima cosa che devi fare è ottenere l'ID del processo per questo processo, cosa che puoi fare usando il comando pidof.
pidof gedit
Sul mio sistema, ad esempio, il comando precedente ha fornito il pid '6063' come output. Ora, per recuperare la politica di pianificazione corrente e la priorità per il processo gedit, usa chrt nel modo seguente:
chrt -p 6063
Ed ecco l'output che questo comando ha prodotto sul mio sistema:
pid 6063's current scheduling policy: SCHED_OTHER
pid 6063's current scheduling priority: 0
Q2. Come fare in modo che chrt mostri priorità valide minime/massime?
Questo può essere fatto usando l'opzione della riga di comando -m.
chrt -m
Ad esempio, sul nostro sistema il comando sopra ha prodotto il seguente output:
SCHED_OTHER min/max priority : 0/0
SCHED_FIFO min/max priority : 1/99
SCHED_RR min/max priority : 1/99
SCHED_BATCH min/max priority : 0/0
SCHED_IDLE min/max priority : 0/0
Dovrai fare riferimento a questi valori per l'impostazione della priorità durante l'impostazione dei criteri di pianificazione.
T3. Come impostare un criterio di pianificazione su SCHED_BATCH?
Questo può essere fatto usando l'opzione della riga di comando -b.
Ad esempio:
chrt -b -p 0 6063
Ora, se controlli di nuovo la politica di pianificazione per gedit usando il seguente comando:
chrt -p 6063
Dovresti ottenere un output simile al seguente, a significare che la modifica che hai fatto è stata applicata:
pid 6063's current scheduling policy: SCHED_BATCH
pid 6063's current scheduling priority: 0
Q4. Come impostare un criterio di pianificazione su SCHED_FIFO?
Questo può essere fatto usando l'opzione della riga di comando -f.
chrt -f -p 20 6063
Come fatto nelle precedenti domande e risposte, puoi eseguire la verifica incrociata delle modifiche utilizzando chrt -p comando. Tieni presente che potresti richiedere i privilegi di root per utilizzare l'opzione della riga di comando -f.
Q5. Come impostare un criterio di pianificazione su SCHED_OTHER?
Questo può essere fatto usando l'opzione della riga di comando -o.
chrt -o -p 0 6063
Per verificare, usa il comando chrt -p.
chrt -p 6063
Di seguito è riportato l'output nel mio caso:
pid 6063's current scheduling policy: SCHED_OTHER
pid 6063's current scheduling priority: 0
Conclusione
D'accordo, il comando chrt non è il tipo di strumento che potresti usare ogni giorno. Diamine, potresti non averne nemmeno bisogno finché non ti occupi della gestione del sistema o lavori su alcuni lavori relativi alla pianificazione del kernel. Tuttavia, vale la pena sapere almeno che uno strumento del genere esiste. Per ulteriori informazioni su chrt, vai alla sua pagina man.