Как запустить скрипт при входе / выходе из Unity?
У меня есть два сценария - один для монтирования некоторых папок через SSHFS - и один для размонтирования.
Я хотел бы запустить сценарий монтирования при запуске моего рабочего стола Ubuntu по умолчанию (после того, как я войду в систему с графической консоли) - и сценарий размонтирования, когда я "Выйду из системы..." с колесика шестерни в правом верхнем углу рабочий стол.
Пожалуйста, может кто-нибудь сказать мне, как этого добиться? Каковы наиболее удобные / стандартные зацепки для запуска команд при запуске / выходе с рабочего стола?
3 ответа
Решением было использование выскочки задач. Мне потребовалось две задачи - одна запускалась при инициализации рабочего стола для пользователя; второй, когда истекает сеанс пользователей. Следующие два скрипта работают для меня под Ubuntu 14.04.
В ~/.config/upstart/desktopOpen.conf
description "Desktop Open Task"
start on desktop-start
task
script
# Commands to mount sshfs go here as shell-script.
end script
В ~/.config/upstart/desktopClose.conf
description "Desktop Close Task"
start on session-end
task
script
# Commands to unmount sshfs go here as shell-script.
end script
Мои пальцы скрещены, что эти события будут продолжать соответствовать требованиям в будущих выпусках Ubuntu. Я думал, что стоит опубликовать свое решение здесь - на случай, если оно пригодится другим.
Учитывая ваше требование запуска задания при входе в 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
для большего количества событий вы можете использовать.
Вот несколько советов по запуску скрипта после входа в систему:
Сценарий StackOverflow для Linux после загрузки: Cliff notes должен поместить ваш *.sh файл в /etc/profile.d.
Если вы хотите запускать скрипты при загрузке, вот несколько советов для этого:
Сценарий StackOverflow для Linux после загрузки: Примечания к скале должны использовать /etc/rc.local или crontab.