Почему мы используем команду sleep перед xset dpms?

У меня есть следующая строка для выключения дисплея моего ноутбука:

sleep 1 && xset dpms force standby

sleep 1: переводит нить в спящий режим на 1 секунду.

xset dpms force standby: С man переводит флаг dpms в режим ожидания.

Когда я опускаю команду sleep 1, команда xset переводит компьютер в режим ожидания на 1 секунду, а затем автоматически возобновляет нормальную работу. Но в сочетании с командой sleep 1 он переводит компьютер в режим ожидания на неопределенный срок, пока не будет обнаружен ввод пользователя.

Можете ли вы объяснить взаимосвязь между этими двумя командами и почему она работает таким образом?

1
задан 1 September 2018 в 19:41

2 ответа

Когда вы запускаете команду, происходит два события: «KeyPress» и «KeyRelease».

Поэтому, когда вы запускаете эту команду нажатием кнопки Enter .

xset dpms force standby

Сначала происходит «KeyPress», он немедленно запускает команду и переводит монитор в спящий режим, когда вы отпускаете клавишу Enter , затем происходит «KeyRelease», и это активность пользователя, поэтому монитор возвращается к работе.

Если вы делаете работу очень быстро (нажимая Enter и проверяя ее перед выполнением команды), ваш монитор остается в «спящем» состоянии.


Чтобы проверить это, установите пакет x11-xserver-utils.

sudo apt install x11-xserver-utils

, затем запустите xev.

Теперь нажмите Enter , чтобы увидеть, что происходит; вы должны увидеть что-то более или менее похожее на:

KeyPress event, serial 48, synthetic NO, window 0x2600001,
...

KeyRelease event, serial 48, synthetic NO, window 0x2600001,
...

Таким образом, мы используем sleep, чтобы убедиться, что оба этих события происходят перед выполнением команды.

0
ответ дан 1 September 2018 в 19:41

Я думаю, что это, вероятно, связано с тем, что система считает «пользовательской активностью».

Если система обнаруживает активность клавиатуры, она возвращается из спящего режима. Тот факт, что вы нажимаете , вводите , чтобы отправить команду принудительного ожидания, считается как некоторая «текущая» активность, и поэтому она немедленно отключается.

режим сна 1 гарантирует, что клавиатура не записала активность в течение 1 секунды перед отправкой команды режима сна, поэтому режим ожидания продолжается.

0
ответ дан 1 September 2018 в 19:41

Другие вопросы по тегам:

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