На основе моего опыта я попробовал бы это:
Alt+F1
затем вход в систему, sudo telinit 3
(если это не попытка работы /sbin/telinit 3
), и проверка, с которой это изменяется на уровень 3 runlevel
это должно произвести что-то как 5 3
что означает, что текущий уровень выполнения 3
и прежде чем это было 5
. В случае, если это не работает, сделайте:
ps ax | grep X
, и в выводе Вы видели бы PID
количество процесса X
, таким образом, необходимо уничтожить его с sudo kill -9 number
где number
PID
количество процесса.Когда новое устройство появляется, udev уведомляется. Это обычно создает файл устройств под /dev
на основе встроенных правил ¹. Можно переопределить эти правила изменить местоположение файла устройств или запустить произвольную программу. Вот является образец таким правилом udev:
KERNEL=="sd*", ATTRS{vendor}=="Yoyodine", ATTRS{serial}=="123456789", NAME="keepass/s%n", RUN+="/usr/local/sbin/keepass-drive-inserted /dev/%k%n"
NAME=
директива изменяет местоположение файла устройств, я включал его в целях иллюстрации, но это, вероятно, не полезно для Вашего варианта использования. ATTRS
правила определяют устройство; выполненный udevinfo -a -n /dev/sdz
когда диск доступен как /dev/sdz
видеть, что приписывает его, имеет. Остерегайтесь этого, можно только использовать ATTRS
правила от единственного раздела udevinfo
вход (кроме того, можно использовать ATTR
правила от начального раздела). Посмотрите Понимают вывод 'udevadm информация-a-n/dev/sdb' для большего количества фона. Это правило входит в файл, названный чем-то как /etc/udev/rules.d/local-storage-keypass.rules
.
Поместите команды, которые Вы хотите выполнить в сценарии, сданном RUN
директива. Что-то как:
#!/bin/sh
set -e
if [ -d /media/keypass-drive ]; then
[ "$(df -P /media/keypass-drive | awk 'NR==2 {print $1}')" = "$(df -P /media | awk 'NR==2 {print $1}')" ]
else
mkdir /media/keypass-drive
fi
mount "$1" /media/keypass-drive
su ereon -c 'keypass2' &
При наличии затруднений при запущении программы GUI из сценария, инициированного от udev посмотрите, что я могу запустить графическую программу на рабочем столе другого пользователя как корень?
¹ Не в современных системах, где /dev
находится на udevtmpfs.
Лучший способ сделать это записал бы Ваше собственное udev правило (правила) для этого устройства. К сожалению, я не могу дать подсказки относительно того, как сделать это, поскольку я никогда не делал так. Таким образом, если у кого-то еще нет более подробного ответа, Google для 'udev правила' и взгляд в/lib/udev для примеров. Ваши пользовательские правила udev должны войти в/etc/udev/rules.d
udevadm info -a -n /dev/sdX
, Вы не можете соответствовать на основе нескольких предков. Можно только соответствовать на основе данных из самого устройства и холостого предка. Это покрыто вman 7 udev
, но маленький комментарий, легко пропущенный. – Patrick 06.11.2013, 06:09