Как запустить приложение автоматически на начальной загрузке

Можно проверить, через какой тайм-аут ядро использует для очищения виртуальной консоли:

$ cat /sys/module/kernel/parameters/consoleblank
600

Этот файл только для чтения, и тайм-аут указан в секундах. Текущее значение по умолчанию, кажется, составляет 10 минут.

Можно изменить то значение с вводом следующей команды на виртуальной консоли (если Вы в xterm, необходимо измениться на виртуальную консоль через удар, например, Ctrl+Alt+F1).

$ setterm -blank VALUE

Где новое ЗНАЧЕНИЕ указано в минутах. Значение 0 отключает очищение:

$ cat /sys/module/kernel/parameters/consoleblank
600
$ setterm -blank 0
$ cat /sys/module/kernel/parameters/consoleblank
0

setterm имеет связанные опции другого powersaving, самая полезная комбинация, кажется:

$ setterm -blank 0 -powersave off

Таким образом, чтобы постоянно/автоматически отключить очищение виртуальной консоли на запуске Вы можете также:

  1. добавить consoleblank=0 к параметрам ядра (редактируют конфигурацию личинки),
  2. добавьте setterm -blank 0 управляйте к rc-local или эквивалентный сценарий запуска
  3. добавьте setterm вывод к /etc/issue с тех пор /etc/issue производится на каждой виртуальной консоли:

    # setterm -blank 0 >> /etc/issue

Выберите одну альтернативу из вышеупомянутого.

28
29.11.2012, 01:11
4 ответа

Вот выборка из http://www.debian-administration.org/articles/28, который, кажется, отвечает на Ваш вопрос.

Примечание: В сценарии в качестве примера ниже просто добавляют вызов к"start)"разделите для фактического запуска программы. Можно протестировать функциональность сценария, не перезагружая систему: назовите его с полным путем и предоставлением его параметр"start"или"stop"

Здесь идет:

Debian использует Sys-V как init система для выполнения команд когда система runlevel изменения - например, во времени завершения работы и начальной загрузке.

Если Вы хотите добавить новый сервис для запуска, когда начальные загрузки машины необходимо добавить необходимый сценарий к каталогу /etc/init.d/. Многие сценарии, уже существующие в том каталоге, дадут Вам пример вида вещей, которые можно сделать.

Вот очень простой сценарий, который разделен на две части, код, который всегда работает, и код, который работает при вызове с "запуском" или "остановкой".

#! /bin/sh
# /etc/init.d/blah
#

# Some things that run always
touch /var/lock/blah

# Carry out specific functions when asked to by the system
case "$1" in
  start)
    echo "Starting script blah "
    echo "Could do more here"
    ;;
  stop)
    echo "Stopping script blah"
    echo "Could do more here"
    ;;
  *)
    echo "Usage: /etc/init.d/blah {start|stop}"
    exit 1
    ;;
esac

exit 0

После того как Вы сохранили свой файл в корректное местоположение, удостоверяются, что это - исполняемый файл путем выполнения"chmod 755 /etc/init.d/blah".

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

Самый простой способ сделать это состоит в том, чтобы использовать Debian-определенную команду update-rc.d:

root@skx:~# update-rc.d blah defaults
 Adding system startup for /etc/init.d/blah ...
   /etc/rc0.d/K20blah -> ../init.d/blah
   /etc/rc1.d/K20blah -> ../init.d/blah
   /etc/rc6.d/K20blah -> ../init.d/blah
   /etc/rc2.d/S20blah -> ../init.d/blah
   /etc/rc3.d/S20blah -> ../init.d/blah
   /etc/rc4.d/S20blah -> ../init.d/blah
   /etc/rc5.d/S20blah -> ../init.d/blah
19
27.01.2020, 19:39
  • 1
    я должен на самом деле поместить этот сценарий в etc/init.d/, или строка наверху, #/etc/init.d/blah, указывают на местоположение к оболочке? –  user137717 29.06.2016, 17:54
  • 2
    я добираюсь "-sh: обновление-rc.d: команда, не найденная" –  m4l490n 22.06.2017, 22:57

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

4
27.01.2020, 19:39
  • 1
    Превосходный совет! Действительно мудрый и релевантный, и настроенный на всех Disto. (И случайно отвечает "в новинку для Linux" и, "как я делаю это" часть вопроса. Я буду использовать этот ответ для улучшения моих сценариев остановки запуска. –  Bruce0 09.04.2017, 18:48

Использование crontabнамного проще.

Используйте crontab -eдля редактирования пользовательского crontab.
Добавьте следующую строку в конце:

@reboot <command>

Примеры:

  • @reboot my_script.sh
  • @reboot python my_script.py arg1 arg2

Наконец, используйте crontab -l, чтобы убедиться, что ваш скрипт добавлен в список.


Обновление :

Например, этот лайнер добавит задание, которое запускает script.sh при каждой перезагрузке:

crontab -l > file; echo "@reboot /home/user/script.sh" >> file; crontab file; rm file;

кредит принадлежит :Gumby The Green 16 июль 2019, в 10 :20

https://stackoverflow.com/users/9364000/gumby-the-green

17
27.01.2020, 19:39

Новые версии Linux поддерживают systemd(, как сказал @AlexanderShcheblikin ). Он имеет больше возможностей и более переносим, ​​чем специальное решение для Debian -.

Пожалуйста, прочтитеэто замечательное руководство .

Вот краткий справочник необходимого минимума :

  1. Скрипт (например.myscript.sh)с разрешениями на выполнение.
  2. Файл модуля (, например.myservice.service)с расширением «.service» в /etc/systemd/systemс разрешениями 644, который содержит команду для выполнения скрипта. Например,

:

[Unit]
Description=Example systemd service.

[Service]
Type=simple
ExecStart=/bin/bash /path/to/myscript.sh

[Install]
WantedBy=multi-user.target
  1. Запустите команду sudo systemctl enable myservice, чтобы разрешить запуск при загрузке.
15
27.01.2020, 19:39

Теги

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