Блокировка экрана через CLI?

Мой самый короткий метод использует zsh:

print -rl -- **/*(.Om)

(добавьте D спецификаторы шарика, если Вы также хотите перечислить скрытые файлы или файлы в скрытых каталогах).

Если у Вас есть GNU, находят, заставляют его распечатать время изменения файла и вид этим. Я предполагаю, что в именах файлов нет никаких новых строк.

find . -type f -printf '%T@ %p\n' | sort -k 1 -n | sed 's/^[^ ]* //'

Если у Вас есть Perl (снова, не принимая новых строк в именах файлов):

find . -type f -print |
perl -l -ne '
    $_{$_} = -M;  # store file age (mtime - now)
    END {
        $,="\n";
        print sort {$_{$b} <=> $_{$a}} keys %_;  # print by decreasing age
    }'

Если у Вас есть Python (снова, не принимая новых строк в именах файлов):

find . -type f -print |
python -c 'import os, sys; times = {}
for f in sys.stdin.readlines(): f = f[0:-1]; times[f] = os.stat(f).st_mtime
for f in sorted(times.iterkeys(), key=lambda f:times[f]): print f'

Если Вы имеете доступ SSH к тому серверу, монтируете каталог по sshfs на лучше оборудованной машине:

mkdir mnt
sshfs server:/path/to/directory mnt
zsh -c 'cd mnt && print -rl **/*(.Om)'
fusermount -u mnt

Только с инструментами POSIX это намного более сложно, потому что нет никакого хорошего способа найти время изменения файла. Единственный стандартный способ получить времена файла ls, и выходной формат зависим от локали и труден проанализировать.

Если можно записать в файлы, и Вы только заботитесь о регулярных файлах, и в именах файлов нет никаких новых строк, вот ужасный клудж: создайте жесткие ссылки на все файлы в единственном каталоге и отсортируйте их ко времени изменения.

set -ef                       # disable globbing
IFS='
'                             # split $(foo) only at newlines
set -- $(find . -type f)      # set positional arguments to the file names
mkdir links.tmp
cd links.tmp
i=0 list=
for f; do                     # hard link the files to links.tmp/0, links.tmp/1, …
  ln "../$f" $i
  i=$(($i+1))
done
set +f
for f in $(ls -t [0-9]*); do  # for each file, in reverse mtime order:
  eval 'list="${'$i'}         # prepend the file name to $list
$list"'
done
printf %s "$list"             # print the output
rm -f [0-9]*                  # clean up
cd ..
rmdir links.tmp

8
30.09.2011, 06:45
6 ответов

Я Гуглил/посылал по электронной почте вокруг немного и получил эти две команды.

Заблокировать экран:

xflock4

Активировать пользователя, переключающегося:

gdmflexiserver

Для Lightdm этот файл находится в странном месте (по крайней мере, на Дуге Linux):

/usr/lib/lightdm/lightdm/gdmflexiserver

Я объединил эти два в диалоговое окно кнопки выхода из системы XFCE, в случае, если любой заинтересовал, таким образом, патч доступен здесь: https://aur.archlinux.org/packages.php? ID=52816

9
27.01.2020, 20:10
  • 1
    Xflock4, должен иметь экранную заставку гнома –  Prvt_Yadav 28.04.2018, 22:29

Существует несколько независимых от DM, простых решений как alock, slock или xtrlock (страница справочника). Обратите внимание, что они даже не могли бы отобразить входной запрос окна пароля - Вы просто вводите пароль, в то время как экран является пробелом, и нажмите Enter (это имеет место slock по крайней мере).

Если Вы хотите, чтобы блокировщик смог отобразить экранную заставку и показать пользовательскую подсказку на разблокировании, попробовать xlock предоставленный xlockmore пакет (см. эту информацию и страницу справочника).

1
27.01.2020, 20:10
  • 1
    я не ищу экран блокировки (у меня есть свое собственное, plock, для этого :P). Я ищу способ инициировать Lockscreen (независимо от того, что это). –  Blender 30.09.2011, 18:47
  • 2
    Затем xautolock (который является частью xlockmore), обеспечивает, эта функциональность - взглянули на последние две ссылки, которые я отправил и xautolock страница справочника. –  rozcietrzewiacz 02.10.2011, 21:07

Это не симпатичное, но рабочее решение для, разблокировали kde или lightdm сессию от экранной заставки через cli (командная строка):

qdbus | grep kscreenlocker_greet | xargs -I {} qdbus {} /MainApplication quit
0
27.01.2020, 20:10

Вы можете заблокировать все экранные заставки на X с помощьюxdg-screensaver

xdg-screensaver lock

Это позаботится о кровавых подробностях.

6
27.01.2020, 20:10

Для приложения блокировки, не зависящего от среды, есть i3lock, которое также позволяет установить фон экрана блокировки.

Для LightDM вы можете запустить light-lockerкак фоновый процесс в вашем сеансе. Он заблокирует ваш сеанс, как только запустится скринсейвер/система выйдет из режима ожидания.

1
27.01.2020, 20:10

Если система использует systemd, вы можете использоватьloginctl:

$ loginctl lock-session

Подробнее см. справочная страница .

0
23.08.2021, 10:16

Теги

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