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

Для разветвленного процесса нужно действие, как будто это было точное изображение родителя, таким образом, без COW это будет действительно владеть 10 кадрами первоначально.

Но это не может первоначально владеть никакой собственной памятью вообще - по крайней мере один необщий кадр необходим: fork не возвращает то же значение в родителе и ребенке, таким образом, страницей, где то возвращаемое значение хранится, нельзя поделиться.

На практике вероятно, будет несколько страниц, которыми не поделятся, точное число будет, вероятно, зависеть от операционной системы. Единственная определенная вещь состоит в том, что это не может быть нуль.

23
31.03.2014, 23:12
3 ответа

Нет гарантии, что графический Диспетчер дисплея будет читать классические файлы запуска. Это меняется между дистрибутивами и между диспетчерами отображения. Однако одно из следующих должно работать.

  1. Используйте собственный метод среды рабочего стола для настройки запускаемых приложений. Детали будут зависеть от используемого вами DE, но вы можете создать сценарий, который запускает вашу команду, и добавить его в список запускаемых приложений. Например, в моей системе (Cinnamon) вы можете сделать это через «Системные настройки» => «Автозагрузка приложений».

  2. Используйте ~ / .xprofile , это источник по крайней мере GDM, LDM, LightDM и LXDM менеджеров входа в систему.

  3. Если ничего из вышеперечисленного не работает, попробуйте добавить команду в ~ / .profile : это основной файл инициализации для оболочек входа в систему, который также читается некоторыми графическими оболочками при входе в систему.

  4. Как отметил @derobert в комментариях, вы также можете использовать бесплатные стандарты рабочего стола :

    Каталоги автозапуска - это $ XDG_CONFIG_DIRS / autostart, как определено в соответствии с разделом «Ссылка на эту спецификацию» в «спецификации базового каталога рабочего стола».

    Если одно и то же имя файла находится в нескольких каталогах автозапуска, следует использовать только файл в самом важном каталоге.

    Пример: Если $ XDG_CONFIG_HOME не задан, каталог автозапуска в домашнем каталоге пользователя - ~ / .config / autostart /

    Пример: Если $ XDG_CONFIG_DIRS не задан, каталог автозапуска для всей системы - / etc / xdg / autostart /

    Пример: Если $ XDG_CONFIG_HOME и $ XDG_CONFIG_DIRS не установлены, а два файла /etc/xdg/autostart/foo.desktop и ~ / .config / autostart / foo.desktop существуют, тогда существует только файл ~ / .config / autostart / foo.desktop будет использоваться, потому что ~ / .config / autostart / более важен, чем / etc / xdg / autostart /

~ / .bashrc здесь совершенно неуместен, он только читается интерактивными оболочками без входа в систему, поэтому игнорируется в оболочках входа, графических или нет.

21
27.01.2020, 19:42

Другой вариант - использовать pam - это даст вам точный способ определения действий при входе в систему.

Для общего действия вы можете полагаться на pam_exec ( http://manpages.ubuntu.com/manpages/hardy/man8/pam_exec.8.html ). Однако, если вам нужно выполнить более конкретное действие безопасным способом, могут существовать более специализированные модули pam, которые лучше подходят, такие как обычно используемые pam_mount (для монтирования при входе в систему - http: // manpages .ubuntu.com / manpages / hardy / man8 / pam_mount.8.html ) или pam_echo (для произвольных сообщений пользователям - http://manpages.ubuntu.com/manpages/hardy/man8/pam_echo. 8.html ).

В общем, pam - это очень удобная система для настройки логинов, поэтому вы можете захотеть немного изучить ее, вместо того, чтобы полагаться на потенциально небезопасные сценарии, как предлагали другие.

Пример

Учитывая довольно типичный /etc/pam.d/system-auth, мы можем использовать pam_exec после входа в систему следующим образом:

session         optional        pam_ssh.so
session         required        pam_limits.so
session         required        pam_env.so
session         optional        pam_mktemp.so
session         required        pam_unix.so
session         optional        pam_exec.so /usr/local/bin/my_prog
session         optional        pam_permit.so

где / usr / local / bin / my_prog произвольно программа запускается после успешного входа пользователя в систему.

6
27.01.2020, 19:42

Согласно этому тема: Запускать команду автоматически после входа в систему?

У вас есть решение .bashrc (не то, что вам нужно) и решение для запуска приложений. Я цитирую Дэниела С.: [

gnome-session-properties] можно использовать для настройки запускаемых приложений.

Кроме того, если вы хотите, чтобы приложение запускалось при загрузке системы, вы можете добавить в crontab правило , подобное приведенному ниже (отредактируйте crontab с помощью crontab -e ):

 @reboot / run / this / program / at / boot> / dev / null 2> & 1 
 
2
27.01.2020, 19:42

Теги

Похожие вопросы