Враховуючи Ваші вимоги до виконання роботи під час входу в Unity, а не для інших входів, завдання Upstart сесії здається ідеальним.
Можливо, ви це помітили: процеси, які запускаються після входу в графічний інтерфейс, перебувають під другим 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
більше подій, які ви можете використовувати.