Как мне безопасно убить xscreensaver из скрипта / командной строки?

Я использую рабочую станцию ​​Linux (RHEL6). У меня есть небольшой сценарий, который я написал, который блокирует и разблокирует экран с помощью xscreensaver при подключении или отключении флэш-накопителя USB, что фактически превращает его в физический ключ к моей рабочей станции. Проблема в том, что нет хорошего способа разблокировать xscreensaver из командной строки. xscreensaver-command -deactivateнелогично, только "имитирует активность пользователя" и все еще требует пароль для разблокировки экрана. xscreensaver-command -exit убивает только родительский демон xscreensaver если не работает заставка. Как справочная страница для xscreensaver-command -exit предупреждает,

Warning: never use kill -9 with xscreensaver while the screensaver is active.  If you are using a virtual root window  manager,
that can leave things in an inconsistent state, and you may need to restart your window manager to repair the damage.

Действительно, я в настоящее время использую pkill xscreensaver как мой метод, чтобы избавиться от заставки из сценария, который часто приводит к зомби-процессам и другим беспорядкам. Как можно безопасно разблокировать заставку из скрипта / командной строки?

2 ответа

Решение

Учитывая почти мономантическую направленность xscreensaver на безопасность, на что намекают ответы в jwz's xscreensaver FAQ и более подробно разъясняется в On Toolkits, я сильно сомневаюсь, что стоковая xscreensaver будет разблокирована без пароля любым способом, кроме принудительного уничтожения, которое вы в настоящее время используете, Лучшим вариантом будет, вероятно, изменить исходный код, включив в него что-то вроде параметра "-forceunlock", и создать из него свой собственный двоичный файл.

sudo killall -9 xscreensaver это ответ. Если убить его, экран разблокируется, просто и понятно. Затем вы можете перезапустить его с DISPLAY=:0 xscreensaver -no-splash а затем заблокировать его DISPLAY=:0 xscreensaver-command -lock, Конечно, при разблокировке экрана есть и последствия для безопасности, но мне это нужно, и я знаю, что делаю. Делайте это на свой страх и риск, конец отказа от ответственности.

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