Используйте информацию о процессах для увеличения скорости компьютера.

Рассмотрим этот пример на основе примера из справочной страницы flock:

#!/bin/bash

func() {
    echo "$$ trying to acquire lock"
    (
        flock -e 42
        echo "lock acquired by $$"
        sleep 10
    ) 42> /tmp/mylock
    echo "lock released by $$"
}

func

Теперь, если я запущу этот скрипт один раз:

$ bash ex.sh
22241 trying to acquire lock
lock acquired by 22241
lock released by 22241

Если я запускаю два экземпляра в течение этого 10 -секундного окна сна этого скрипта, первый в фоновом режиме, возможная последовательность событий:

$ bash ex.sh& bash ex.sh
[1] 24518
24519 trying to acquire lock
24518 trying to acquire lock
lock acquired by 24519
lock released by 24519
lock acquired by 24518
$
lock released by 24518

В этом примере второй процесс выиграл гонку и первым получил блокировку. Затем он снял блокировку и позволил первому (фоновому )процессу получить доступ, после чего снял блокировку.

Я могу повысить шансы на то, что первый процесс выиграет гонку, введя задержку между их запуском:

$ bash ex.sh& sleep 1; bash ex.sh
[1] 30158
30158 trying to acquire lock
lock acquired by 30158
30179 trying to acquire lock
lock released by 30158
lock acquired by 30179
lock released by 30179
0
10.12.2019, 22:13
1 ответ

Если вы новичок, вам не о чем беспокоиться (какое-то время ). Я считаю полезным просмотреть (извлечение конкретной информации из /proc ), но на данный момент вы, вероятно, можете использовать такие инструменты, как top, netstat, iostat. Все они обрабатывают для вас информацию из /proc и дают вам то, что полезно...

Я не пытаюсь показаться покровительственным, просто в данный момент это может быть слишком подавляющим

1
28.01.2020, 02:38

Теги

Похожие вопросы