Saya menggunakan definisi ini untuk suatu systemd
pekerjaan:
[Unit]
Description=Some job
[Service]
ExecStart=/usr/local/sbin/somejob
User=dlt
Type=forking
[Install]
WantedBy=multi-user.target
Script yang dipanggil adalah sebagai berikut (memanggil rutin sederhana yang mendengarkan soket tcpip dan menambahkan input ke file):
#!/bin/sh
cd /home/user/tmp/testout
nohup java -jar /home/user/programming/tests/java/core/SocketTest/SocketTest.jar </dev/null >/dev/null &
Setelah systemctl start somejob
proses terlihat berjalan, dengan init
sebagai induknya:
user@CANTANDO ~$ ps -u dlt eo pid,ppid,command
PID PPID COMMAND
8718 1 java -jar /home/user/programming/tests/java/core/SocketTest/SocketTest.jar
Setelah melakukan systemctl stop somejob
proses tidak muncul lagi (dan port ditutup).
Jadi semuanya tampak baik dan keren
Pertanyaan saya adalah: Apakah ini solusi yang dapat diterima untuk menjalankan daemon java dengan systemd
, atau ada peringatan, dan dengan demikian cara lain yang lebih stabil atau aman untuk mencapai ini?