Попробуйте это .. Я использую Fedora 25 в качестве виртуального гостя в VirtualBox v 5.1.16.
В терминале гостевой ОС ..
[root@localhost]# dnf install fedora-upgrade
[root@localhost]# dnf upgrade
[root@localhost]# dnf update kernel*
[root@localhost]# dnf install gcc kernel-devel kernel-headers dkms make bzip2 perl
[root@localhost]# reboot
Затем установите дополнения VirualBox Guest, выйдите из системы и войдите снова.
USB может обнаруживать меня после выполнения следующей команды в приглашении администратора:
[root@localhost]# usermod -a -G vboxsf <User Name>
[root@localhost]# dnf clean all
Затем выйдите из системы и войдите обратно, И перейдите в строку меню Устройства -> USB -> добавить USB, выбрав
Иногда может потребоваться перезагрузка гостевой ОС ..
Во многих текущих дистрибутивах сеансы входа в систему (графические и не -графические )управляются logind
. Вы можете просмотреть список сеансов, используя
loginctl list-sessions
, а затем отображать свойства каждого сеанса, используя
loginctl show-session ${SESSIONID}
или
loginctl session-status ${SESSIONID}
(замена ${SESSIONID}
соответствующим образом );разница между двумя вариантами заключается в том, что show-session
предназначен для простого анализа, session-status
предназначен для потребления человеком. Активные сеансы идентифицируются по их состоянию; вы можете запросить это напрямую, используя
loginctl show-session -p State ${SESSIONID}
, который будет выводить
State=active
для активного сеанса (с ). Полный вывод show-session
покажет вам, какой пользователь подключен, какой TTY используется, является ли это удаленным сеансом, графическим сеансом и т. д.
Обратите внимание, что logind
может иметь несколько активных сеансов, если система настроена на несколько рабочих мест или если есть удаленные сеансы.
Собрав все вместе,
for sessionid in $(loginctl list-sessions --no-legend | awk '{ print $1 }')
do loginctl show-session -p Id -p Name -p User -p State -p Type -p Remote $sessionid
done
предоставит всю необходимую информацию, чтобы определить, какие сеансы активны и кто их использует, а
for sessionid in $(loginctl list-sessions --no-legend | awk '{ print $1 }')
do loginctl show-session -p Id -p Name -p User -p State -p Type -p Remote $sessionid | sort
done |
awk -F= '/Name/ { name = $2 } /User/ { user = $2 } /State/ { state = $2 } /Type/ { type = $2 } /Remote/ { remote = $2 } /User/ && remote == "no" && state == "active" && (type == "x11" || type == "wayland") { print user, name }'
распечатает идентификаторы и логины всех активных пользователей с графическими сессиями.
Свойство LockedHint
теперь указывает, заблокирован ли данный сеанс, поэтому
for sessionid in $(loginctl list-sessions --no-legend | awk '{ print $1 }')
do loginctl show-session -p Id -p Name -p User -p State -p Type -p Remote -p LockedHint $sessionid | sort
done |
awk -F= '/Name/ { name = $2 } /User/ { user = $2 } /State/ { state = $2 } /Type/ { type = $2 } /Remote/ { remote = $2 } /LockedHint/ { locked = $2 } /User/ && remote == "no" && state == "active" && (type == "x11" || type == "wayland") { print user, name, locked == "yes" ? "locked" : "unlocked" }'
также указывает, заблокирован ли активный сеанс.
Я использую функцию bash, подобную следующей
function Xowner() {
for pid in $(ps -houid --ppid $(ps -hoppid $(pgrep X))) ; do
[ "$pid" = "0" ] && continue
id -n -u $pid
break
done
}
Назначение этой функции в основном состоит в том, чтобы выбрать «первый» не -корневой UID родственных процессов Xserver. Подробности см. в man ps
. Я полагаю, что если ваш вариант использования потенциально включает несколько X-серверов, вам нужно лучше сосредоточиться на том, с какого из них начать.