Непосредственно от [1 120] руководство для systemd-suspend.service:
Immediately before entering system suspend and/or hibernation systemd-suspend.service (and the other mentioned units, respectively) will run all executables in /usr/lib/systemd/system-sleep/ and pass two arguments to them. The first argument will be "pre", the second either "suspend", "hibernate", or "hybrid-sleep" depending on the chosen action. Immediately after leaving system suspend and/or hibernation the same executables are run, but the first argument is now "post". All executables in this directory are executed in parallel, and execution of the action is not continued until all executables have finished.
я сделал некоторое тестирование и нашел, что при помещении сценария (отмеченный исполняемый файл всеми, которые можно быть достигнуто с chmod a+x
) в [1 122] /lib/systemd/system-sleep
, без/usr, оно будет выполняться, как упомянуто.
Однако , существует один недостаток, который является тем, что заставляет Вас думать, что он не работает: среда отличается. Графические команды не работают . Существует, вероятно, путь вокруг этого, но по умолчанию, unity --replace
перестанет работать , потому что он не может соединиться с X-сервером (и так никакие команды, которые не работают, если Вы нажмете CTRL-ALT-F1 и войдете в фактическую консоль без вмешательства, то будет функционировать).
Хорошо, я просто приостановил свой ввод для проведения некоторого исследования: после рассмотрения основной chroot wiki (потому что у меня была та же проблема в chroots), я нашел это, если Вы вручную звоните xhost +
прежде приостановка, графические команды (в моем случае zenity --info --text "1:$1 2:$1"
) функция правильно. Однако Вы не можете звонить xhost +
из сценария. Что Вы можете делать быть, добавляет программа к "приложениям запуска" для автоматического вызова xhost +
, когда Вы входите в систему (добавьте его там а не к .bashrc
, потому что, если добавлено к [1 110] это будет работать каждый раз, когда Вы открываете эмулятор терминала). Это могло бы отличаться на Единице, но на ПОМОЩНИКЕ Ubuntu я могу перейти в [1 111] и нажать Add, чтобы сделать это.
Затем создайте файл /lib/systemd/system-sleep/restart-unity
со следующим содержанием:
#!/bin/bash
export DISPLAY=:0
if [[ "$1" == "post" && "$2" == "suspend" ]]
then
sleep 5
unity --replace
fi
и выполненный sudo chmod a+x /lib/systemd/system-sleep/restart-unity
(удостоверяются, файл принадлежит корню и только перезаписываемый корнем).
Примечание, что это должно использование bash
. Это из-за "если" оператор. Когда я попробовал оператор вручную в [1 115], я получил различные ошибки от &&
часть.
Эти sleep
там, потому что без него, unity --replace
не соединится с X-сервером (или таким образом, это кажется).
На основе моих собственных тестов на Пикантном, это должно работать.
я просто провел 15 минут, пытаясь выяснить, почему это не работало только, чтобы понять, что я забыл export DISPLAY=:0
строка.
Взгляните на Это . Может быть, это поможет.
Вы применили @CollectionOfElements следующим образом?
@org.hibernate.annotations.CollectionOfElements(
targetElement = java.lang.String.class
)
Иметь посмотрите Документацию по аннотациям Hibernate о коллекциях в основном вы должны указать списку, в каком отношении он находится.
@OneToMany(mappedBy="blog")
public List<String> getList() { return list; }
Тогда он должен работать.
Использование объекта Serializable
, кажется, работает лучше. Изменение свойства list
на ArrayList
, похоже, решает проблему.