Папки/методы запуска системы на платформах UNIX?

У меня есть приложение Java, которому необходимо реализовать функции установки для запуска JAR при запуске.

Я могу сделать это в Windows, введя REG-файл в реестр, но как это сделать на платформах UNIX? Linux и Mac, если методы разные.

Есть ли в Linux и Mac системные папки автозагрузки?

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


person bgroenks    schedule 21.02.2012    source источник
comment
Что, по вашему мнению, должна делать ваша программа при запуске?   -  person Gabe    schedule 21.02.2012
comment
@Gabe регистрирует значок SystemTray и проверяет, когда будет запущена следующая задача. Затем он будет спать в течение определенного периода времени, а позже снова проверит наличие обновлений. Я очень стараюсь спроектировать его так, чтобы он был малозатратным с точки зрения ресурсов. Это сложно с Java. Я люблю Java, но длительные фоновые задачи — не самое лучшее место. Я хотел сделать приложение C, чтобы сделать эту часть... но это будет работать только в Windows, и я не могу понять, как сделать значок в трее.   -  person bgroenks    schedule 22.02.2012


Ответы (3)


В Linux классическим способом было бы добавление скрипта в соответствующий каталог /etc/rcN.d/ (где N — это число 0-6, представляющее «уровень выполнения»). Я не уверен, что это все еще рекомендуемый способ, но обычно он все еще поддерживается. Это также будет работать с небольшими вариациями для других основных вариантов Unix (Solaris, HP-UX, AIX).

На Mac вам придется работать усерднее. Файлы /etc/rc.common, /etc/rc.imaging и /etc/rc.netboot связаны, но каталогов /etc/rcN.d нет. Также есть скрипт rc и еще rc.local. Ввод man rc показывает:

ОПИСАНИЕ

rc.local теперь не поддерживается и был заменен на launchd(8), который загружается с помощью подкоманды начальной загрузки launchctl(1) для чтения заданий launchd(8) из стандартных местоположений.

СМОТРИТЕ ТАКЖЕ

launchd(8), launchctl(1)

Итак, вы должны исследовать launchctl и launchd, особенно launchctl.

person Jonathan Leffler    schedule 21.02.2012
comment
Это (launchctl, launchd, rc.common, ...) файлы или каталоги? - person bgroenks; 22.02.2012
comment
launchctl и launchd — это программы (см. man launchctl и man launchd) — Launch Daemon и его управляющая программа. rc.common и т. д. — это файлы или сценарии в /etc/ на моем Mac, который был обновлен с более ранних версий Mac OS X, поэтому он может быть переносом, но, вероятно, это файл, который присутствует в чистой новой установке Lion. - person Jonathan Leffler; 22.02.2012

Вот как бы я сделал это на ubuntu.

Сначала создайте bash-скрипт для запуска java-приложения, как показано ниже.

#!/bin/bash
java -jar "helloworld.jar"

и сохраните его, в данном случае под названием «HELLOWORLD» в /etc/init.d.

Нужно сделать скрипт исполняемым, поэтому нужно запустить

chmod +x HELLOWORLD

Наконец, чтобы заставить его работать при запуске

update-rc.d HELLOWORLD defaults
person Dan675    schedule 21.02.2012

На Mac я думаю, что это launchd, а на Linux это init.d. Это файлы конфигурации.

person tik27    schedule 21.02.2012