GNU/Linux >> Belajar Linux >  >> Debian

Debian – Systemd:Layanan Tidak Memiliki Pengaturan Execstart=Dan Execstop=. Penolakan?

Saya mencoba menjalankan aplikasi saya sebagai daemon/layanan pada distro Debian melalui systemd . Ini file layanan saya:

[Unit]
Description=MyApp Service
After=multi-user.target

[Service]
Type=simple
Restart=always
ExecStart=sudo /usr/bin/java -jar /home/pi/myapp.jar

[Install]
WantedBy=multi-user.target

Saya menyalinnya ke /lib/systemd/system/myapp.service . Saya kemudian menjalankan:

sudo systemctl enable myapp

Saya kemudian memeriksa statusnya:

sudo systemctl status myapp

Dan saya melihat kesalahan ini:

● myapp.service - MyApp Service
   Loaded: error (Reason: Invalid argument)
   Active: inactive (dead)

Sep 29 09:56:24 raspberrypi systemd[1]: [/lib/systemd/system/myapp.service:8] Executable path is not absolute, ignoring: sudo /usr/bin/java -jar /home/pi/myapp.jar
Sep 29 09:56:24 raspberrypi systemd[1]: myapp.service: Service lacks both ExecStart= and ExecStop= setting. Refusing.

Ketika saya melakukan which java Saya melihat:

[email protected]:/lib/systemd/system $ which java
/usr/bin/java

Jadi saya tidak mengerti mengapa systemd mengeluh tentang jalur yang dapat dieksekusi. Ada ide bagaimana saya bisa memecahkan masalah?

Jawaban yang Diterima:

sudo jalan tidak mutlak. Jika unit systemd Anda adalah unit sistem, sudo seharusnya tidak diperlukan, karena unit sistem dijalankan sebagai root secara default.

EDIT:daripada menjalankan JVM dan seluruh aplikasi Java sebagai root, mungkin akan lebih baik untuk menjalankan layanan sebagai pengguna yang tidak memiliki hak istimewa. Jika aplikasi membutuhkan beberapa kemampuan yang biasanya tidak diberikan kepada pengguna yang tidak memiliki hak istimewa, itu dapat ditambahkan dengan AmbientCapabilities pengaturan. Misalnya, dengan menambahkan baris berikut ke [Service] bagian:

AmbientCapabilities=CAP_SYS_RAWIO
User=nobody

layanan dijalankan sebagai pengguna nobody tetapi diberikan CAP_SYS_RAWIO kemampuan.


Debian
  1. Menyiapkan Server dan Klien NFS di Debian 9 (Peregangan)

  2. Cara mengeksekusi file .bin dan .run di Debian

  3. Debian – Cara Tepat Menggunakan Onfailure Di Systemd?

  1. Menyiapkan Server dan Klien NFS di Debian Wheezy

  2. Cara Menginstal dan Mengonfigurasi WildFly (JBoss) di Debian 10

  3. Mengaktifkan File Systemd Secara Kondisional Melalui Kemasan Debian?

  1. Debian – Bagaimana Layanan Di Debian Bekerja, Dan Bagaimana Saya Dapat Mengelolanya?

  2. Debian – Permintaan Mulai Layanan Diulang Terlalu Cepat, Menolak Untuk Memulai?

  3. Cara Menginstal Monit (Pemantauan Proses dan Layanan) di Ubuntu / Debian