Мне было интересно, как я могу запустить команду javac и java для файла .java, который находится в /usr/lib/java/jdk1.8.0_121/Testapp.java при загрузке. Поэтому каждый раз, когда компьютер включается, мне нужно, чтобы файл Java был скомпилирован и затем запущен. любая помощь приветствуется.
1 ответ
Кажется, вы используете Debian или Ubuntu.
Если вы используете новейшую систему с systemd, просто создайте файл systemd.unit, который в этом примере называется /etc/systemd/system/java-test-app.unit
.
[Unit]
Description = Java test app
After = network.target
Wants = network.target
[Service]
Type = oneshot
User = myuser
Workdir = /home/myuser
ExecStartPre = javac Testapp.java
ExecStart = java Testapp
[Install]
WantedBy = multi-user.target
Я рекомендую создать отдельного пользователя для приложения (в этом примере он называется myuser
), потому что запускать приложения с правами root обычно не очень хорошая идея.
Я также предложил бы вывести приложение из дистрибутива Java, поскольку каталог /usr/lib
обычно поддерживается системой упаковки, а не обычным пользователем.
После создания файла модуля, попробуйте, чтобы убедиться, что он работает.
systemctl daemon-reload
systemctl start java-test-app
Чтобы приложение запускалось после загрузки системы.
systemctl enable java-test-app
Вы можете проверить выполнение приложения с помощью
systemctl status java-test-app
Если вы хотите запустить приложение от имени пользователя root, просто обновите соответствующий linec в файле модуля.