Я новичок в Linux и с нетерпением жду, чтобы запустить приложение (которое переключает светодиод каждые 10 секунд). Я написал прикладную программу, и она работает нормально, но теперь я хочу запустить ее автоматически при загрузке.
Документация здесь говорит, чтобы скопировать сценарий запуска в /etc/init.d
каталог и сделать символическую ссылку на скопированный сценарий в rc.d
каталоге.
Каким должно быть расширение и имя этих файлов скриптов? Можем ли мы добавить символическую ссылку вручную rc.d
или есть какая-то особая процедура для этого?
Любое предложение, как этого добиться?
start-stop-daemon
справляется с этим лучше (хотя это предпочтительнее, программа сама демонизирует). Какой дистрибутив вы используете? Вне настольных MIME-типов расширения файлов не имеют смысла в * nix, и предпочтительно, чтобы в исполняемых файлах их не было.cron
вместо этого.Ответы:
Вот выдержка из http://www.debian-administration.org/articles/28, которая, кажется, отвечает на ваш вопрос.
Примечание. В приведенном ниже примере сценария просто добавьте вызов в
start)
раздел « », чтобы фактически запустить вашу программу. Вы можете проверить работоспособность скрипта, не перезагружая систему: вызвать его с полным путем и присвоить ему параметр "start
" или "stop
"Вот оно:
Debian использует систему инициализации, подобную Sys-V, для выполнения команд при изменении уровня выполнения системы - например, во время загрузки и завершения работы.
Если вы хотите добавить новый сервис для запуска при загрузке машины, вы должны добавить в каталог необходимый скрипт
/etc/init.d/
. Многие из сценариев, уже присутствующих в этом каталоге, дадут вам пример того, что вы можете сделать.Вот очень простой скрипт, который разделен на две части: код, который всегда выполняется, и код, который запускается при вызове с помощью «start» или «stop».
После того, как вы сохранили файл в правильном месте, убедитесь, что он исполняется, запустив "
chmod 755 /etc/init.d/blah
".Затем вам нужно добавить соответствующие символические ссылки, чтобы скрипт выполнялся, когда система выключается или запускается.
Самый простой способ сделать это - использовать команду, специфичную для Debian
update-rc.d
:источник
systemd
для многих вещей, в том числе для конфигурации загрузки. Используйтеsystemctl
для управления и настройкиsystemd
.Лучший способ - проверить источник пакета вашего дистрибутива на наличие регулярной системной службы, например, для OpenSSH - вы увидите, каковы хорошие практики. В конце концов, одной из причин открытого исходного кода является возможность учиться у источников.
источник
Используйте Supervisor, эффективную программу, которая управляет и регистрирует приложения запуска с аргументами. Узнайте больше на http://supervisord.org/running.html и (следуйте инструкциям по установке.
Создайте файл conf в
/etc/supervisor/conf.d/{PROGRAM_NAME}.conf
и вот код,Затем выполните из строки cmd:
supervisorctl reload
источник
Пользоваться
crontab
намного проще.Используйте
crontab -e
для редактирования пользовательского crontab.Добавьте следующую строку в конце:
Примеры:
@reboot my_script.sh
@reboot python my_script.py arg1 arg2
Наконец, используйте,
crontab -l
чтобы убедиться, что ваш скрипт был добавлен в список.источник
Поддержка более новых версий linux
systemd
(как сказал @AlexanderShcheblikin). Он имеет больше функций и более переносим, чем специфичное для Debian решение.Пожалуйста, прочитайте это действительно отличное руководство .
Вот краткий справочник о необходимом минимуме :
myscript.sh
) с исполняемыми разрешениями.myservice.service
) с расширением .service/etc/systemd/system
с 644 разрешениями, который содержит команду для выполнения сценария. Например,:
sudo systemctl enable myservice
чтобы включить ее при загрузке.источник