Intereting Posts
В чем разница между ext3 и ext4 с точки зрения общего пользователя Владение www-данными Я не могу подключиться к Wi-Fi сети после подмены моего mac-адреса Ubuntu 14.04 адаптер Bluetooth не найден Как конвертировать устаревшие файлы в UTF8? Давление в сенсорной панели xps15 слишком чувствительно. Настройки не имеют эффектов Максимальное время, в течение которого ПК Linux может быть UP? Экран разрывается только при воспроизведении видео с использованием GeForce GT 750M Почему сочувствие демонстрирует прозрачный предварительный просмотр видео, а затем сбой? Есть ли способ в Ubuntu копировать CD в FLAC и автоматически добавлять теги ReplayGain? Как восстановить файлы конфигурации? Как настроить новое разрешение? Как включить значки в меню в Ubuntu 14.04 Какие пакеты рекомендовали «Отсутствующие рекомендации»? Сервер Rails возвращает «404 Not Found» после входа в систему

Как запустить скрипт для входа / выхода Unity?

У меня есть два сценария: один для монтирования некоторых папок через SSHFS – и один для размонтирования.

Я хотел бы запустить сценарий монтирования, когда мой рабочий стол по умолчанию Ubuntu запущен (после входа в систему на графической консоли) – и скрипт unmount, когда я «Log Out …» из шестнадцатеричного колеса в верхнем правом углу рабочий стол.

Пожалуйста, кто-нибудь скажет мне, как этого добиться? Каковы наиболее удобные / стандартные крючки для запуска команд на запуск / выключение на рабочем столе?

Учитывая ваше требование запуска задания при входе в систему Unity, а не для других логинов, работа с сеансом Upstart кажется идеальной.

Возможно, вы заметили это: процессы, которые вы запускаете после входа в графический интерфейс, находятся под вторым процессом init . Этот init является правильной инициализацией Upstart, и вы можете запускать и останавливать сеансовые задания на основе событий, испущенных им. Никаких прав root не требуется. Еще лучше (или хуже в зависимости от перспективы), это еще не полностью поддерживается для систем без головы. Логин 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 /etc/init.d или /etc/init ). Для управления заданиями сеанса необходимо использовать команду initctl , которая используется для взаимодействия с Upstart.

См. man upstart-events для большего количества событий, которые вы можете использовать.

Решение заключалось в использовании задач выскочки. Мне потребовались две задачи: один был запущен, когда рабочий стол инициализируется для пользователя; второй, когда истекает срок действия сеанса пользователя. Следующие два скрипта работают для меня под 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. Я думал, что стоит опубликовать мое решение здесь – в случае, если он будет полезен другим.

Вот несколько советов по запуску скрипта после входа в систему:

Сценарий StackOverflow Linux после загрузки : заметки Cliff должны помещать ваш * .sh-файл в файл /etc/profile.d.

Если вы хотите запускать скрипты при загрузке, вот несколько советов по этому поводу:

Сценарий StackOverflow Linux после загрузки : примечания Cliff должны использовать /etc/rc.local или crontab.