Есть ли способ добавить приложение / скрипт в автозагрузку 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=myuser
Restart=on-failure|on-watchdog|on-abnormal|always
Type=simple|forking|oneshot|notify|dbus
Wants=network-online.target
в [Unit]
разделе).Пример службы, которая запускает демон telegram-cli. Поместите это в /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 используют уровни запуска или начальную загрузку systemd, так что большинство автоматически запускаемых заданий может контролироваться на должном уровне.
Я нашел свой ответ здесь: /programming/7221757/run-automatics-program-on-startup-under-linux-ubuntu. Мне удалось создать файл / скрипт для отключения моего трекпада, пока я в моя сессия Linux Ubuntu 12.10.