Виконайте команду під час входу в систему


23

У настільній системі Linux я хочу виконати команду, коли користувач увійде в систему.

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

Я також намагався додати команду до одного зі скриптів, що містяться в, /etc/profile.dбез результатів.

Чи є інший спосіб зробити це? Будь-який файл, який система читає після входу?


Відповіді:


21

Немає гарантії, що диспетчер графічного дисплея прочитає класичні файли запуску. Це змінюється між дистрибутивами та між менеджерами дисплеїв. Одне з наступних має працювати, хоча.

  1. Використовуйте рідний метод робочого середовища для встановлення програм запуску. Деталі залежать від DE, який ви використовуєте, але ви можете створити скрипт, який виконує вашу команду, і додати його до списку програм запуску. Наприклад, у моїй системі (Cinnamon) ви можете це зробити через "Налаштування системи" => "Запуск програм".

  2. Використання ~/.xprofile, це здобутий по крайней мере, GDM, МЖК, LightDM і LXDM менеджерів входу в систему .

  3. Якщо жодне з вищезазначених не працює, спробуйте додати команду до ~/.profile: Це основний файл ініціалізації для оболонок входу, а також читається деякими графічними оболонками при вході.

  4. Як @derobert в коментарях зазначив, ви також можете використовувати безкоштовні стандарти на робочому столі :

    Каталоги автозапуску - це $ XDG_CONFIG_DIRS / автозапуск, як визначено відповідно до розділу "Посилання на цю специфікацію" в "специфікації базового каталогу робочого столу".

    Якщо одне і те ж ім’я файлу розміщено в декількох каталогах автозапуску, слід використовувати лише файл під найважливішим каталогом.

    Приклад: Якщо $ 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. робочий стіл буде використовуватися, тому що ~ / .config / autostart / важливіше, ніж / etc / xdg / autostart /

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


5
Можливо, хотілося б згадати ~/.config/autostartі /etc/xdg/autostart/які є стандартні місця відповідно до специфікації автоматичного запуску настільних програм . А також /etc/X11/Xsession.dі ~/.xsession.
дероберт

6

Ще один варіант - використовувати пам - це дасть точний спосіб визначення дій при вході.

Для загальної дії ви можете покластися на pam_exec ( http://manpages.ubuntu.com/manpages/hardy/man8/pam_exec.8.html ). Однак, якщо вам потрібно виконати більш конкретну дію безпечним способом, можуть існувати більш спеціалізовані модулі пам’яті, які краще підходять, наприклад, широко використовуваний 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запускається довільна програма після успішного входу користувача.


2
Це хороша відповідь, хоча ви повинні включити приклад рядка, який ви додали б pamконфігурацію, оскільки це нетривіально.
Graeme

2

Відповідно до цієї теми: Запустити команду автоматично після входу?

У вас є рішення .bashrc(не те, що вам потрібно) і рішення запуску програм. Я цитую Даніеля С .:

gnome-session-properties можна використовувати для налаштування програм запуску.

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

@reboot /run/this/program/at/boot >/dev/null 2>&1
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.