Чи є якийсь спосіб додати додаток / скрипт до запуску Linux, щоб кожен раз, коли система завантажується, вона буде виконуватися?
Я шукаю якийсь автоматизований спосіб, тобто користувач не повинен додавати це за допомогою роботи cron чи щось подібне.
Чи є якийсь спосіб додати додаток / скрипт до запуску Linux, щоб кожен раз, коли система завантажується, вона буде виконуватися?
Я шукаю якийсь автоматизований спосіб, тобто користувач не повинен додавати це за допомогою роботи cron чи щось подібне.
Відповіді:
Крім сценаріїв запуску на системному рівні, у середовищі робочого столу може бути свій власний спосіб автоматичного запуску програм. Папка .config/autostartповинна бути нейтральним для настільних способів визначення записів автозапуску. /etc/xdg/autostartпризначений для загальної системи. Деталі про специфікацію можна знайти на веб- сайті http://developer.gnome.org/autostart-spec/ .
Для автозапуску LXDE також можна встановити записи ~/.config/lxsession/LXDE/autostart.
Трохи інакше, якщо вам потрібно запустити сценарії після запуску мережі. У цьому випадку слід перевірити спеціальні сценарії після підключення, які можна визначити для вашого менеджера мережі. І NetworkManager, і wicd мають свої способи введення записів автозапуску після підключення. Якщо мережа налаштована через ifupdown, то сценарії після публікації можна помістити в /etc/network/if-up.d/папку. Але кращий підхід до запуску сценаріїв після підключення може бути системним (для систем, які його підтримують, що є більшістю сучасних дистрибутивів).
Якщо ви хочете автозапустити, це не графічний додаток, для якого потрібен робочий стіл, то краще уникати використання будь-яких засобів автоматичного запуску, наданих xorg або вашим поточним середовищем робочого столу.
systemd стала всюдисущою у багатьох сучасних дистрибутивах, і вона пропонує багато контролю та гнучкості з точки зору того, як запускаються ваші послуги та як вони працюють.
Я підсумую деякі переваги ( systemd може зробити набагато більше ):
User=myuserRestart=on-failure|on-watchdog|on-abnormal|alwaysType=simple|forking|oneshot|notify|dbusWants=network-online.targetу [Unit]розділі).Приклад служби, яка запускає демон телеграми-кліпу. Помістіть його /etc/systemd/system/tg.service.
[Unit]
Description=MyDaemon
Wants=network-online.target
After=network-online.target
[Service]
ExecStart=/usr/local/bin/telegram-cli -k /etc/telegram-cli/tg-server.pub -W -P 1234 -d -vvvRC
ExecStop=/usr/bin/pkill -f telegram-cli
User=jicu
[Install]
WantedBy=multi-user.target
Тепер ви можете ввімкнути службу для автоматичного запуску:
sudo systemctl enable tg
Запуск послуги:
sudo systemctl start tg
Припинення послуги:
sudo systemctl stop tg
Перевірте статус:
systemctl status tg
Вимкнути послугу:
sudo systemctl disable tg
Щоб заощадити додатковий набір тексту ви можете додати в вашій ~/.bashrcлінії , alias sc='sudo systemctl $*'то ви зможете скоротити команди вище, наприклад sc start tg.
ПРИМІТКА. Якщо ви використовували,
cronтоді знаєте, що записи crontab виконуються в обмеженому середовищі - те ж саме стосуєтьсяsystemd: завжди використовуйте абсолютні шляхи і не допускайте жодних визначених змінних. Явно встановіть будь-які змінні, від яких залежать ваші сценарії.systemdне використовуватиме вашого користувача.bashrcта$PATH.
Більше інформації:
Так, можна запустити програми при запуску в Linux, визначивши шляхи до виконуваних файлів, rc.localякі перебувають у каталозі /etcабо в /etc/rc.dкаталозі, наприклад:
#!/bin/bash
# THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES
#
# It is highly advisable to create own systemd services or udev rules
# to run scripts during boot instead of using this file.
#
# In contrast to previous versions due to parallel execution during boot
# this script will NOT be run after all other services.
#
# Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure
# that this script will be executed during boot.
touch /var/lock/subsys/local
/path/to/executable
Примітка: не забудьте призначити виконавчі права, як описано в документації файлу, тобто Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure that this script will be executed during boot.
Startup applicationsдопомогою домашньої кнопкиAdd Startup command boxкоманді введітьOK(у списку повинна з’явитися нова команда)Close Перевірте, перезавантажившись або вийдіть із системи та поверніться до системи.
Джерело: https://help.ubuntu.com/community/AddingProgramToSessionStartup
Кожен дистрибутив використовує кожну власну техніку завантаження, тому потрібно переглянути документи для вашого дистрибутива. /etc/rc.local - це місце, куди можна розмістити деякі автоматизовані сценарії, але він справді застарів. Зараз більшість систем на базі Linux використовує рівні запуску або завантаження системи, тому більшість завдань з автоматичним запуском можна контролювати високоякісно.
Тут я знайшов свою відповідь: /programming/7221757/run-automatically-program-on-startup-under-linux-ubuntu Я зміг створити файл / сценарій, щоб вимкнути трекпад, коли я мій сеанс Linux Ubuntu 12.10.