Учитывая ваше требование запуска задания при входе в Unity, а не для других входов в систему, задание сеанса Upstart кажется идеальным.
Вы, возможно, заметили это: процессы, которые вы запускаете после входа в GUI, находятся под вторым init
процессом. Это init
правильная инициализация Upstart, и вы можете запускать и останавливать сеансовые задания на основе событий, которые она генерирует. Никаких корневых привилегий не требуется вообще. Еще лучше (или хуже в зависимости от перспективы), это еще не полностью поддерживается для безголовых систем. Вход в SSH не запустил пользователя init из быстрого теста, который я только что сделал.
Чтобы создать сессионное задание, создайте новый .conf
файл в ~/.config/upstart
. Это основной каталог по умолчанию для заданий сеанса Upstart ( $XDG_CONFIG_HOME/upstart
), создайте его, если он не существует. Вот пример работы:
tee ~/.config/upstart/myjob.conf <<EOF
description "My job"
start on desktop-start
stop on desktop-end
script
firefox 'http://upstart.ubuntu.com/cookbook/#session-job'
end script
EOF
Вы можете вручную контролировать это:
start myjob
# or
initctl start myjob
Команда service
используется для управления системными заданиями (теми, что в /etc/init.d
или /etc/init
). Для управления сессионными заданиями необходимо использовать initctl
команду, которая используется для взаимодействия с Upstart.
Смотрите man upstart-events
больше событий, которые вы можете использовать.