Saya membuat layanan berikut, amos.service, dan perlu dijalankan sebagai amos (anggota grup amos)
[Unit]
Description=AMOS Service
After=network.target
[Service]
User=amos
Group=amos
Type=simple
WorkingDirectory=/usr/share/amos
ExecStart=/usr/share/amos/amos_service.sh start
ExecStop=/usr/share/amos/amos_service.sh stop
Restart=on-failure
[Install]
WantedBy=multi-user.target
semua izin telah diatur /usr/share/amos
keamos:amos
amos_service.sh adalah sebagai berikut:
#!/bin/bash
CUDIR=$(dirname "$0")
cd /usr/share/amos
start() {
exec /usr/share/amos/run_amos.sh >> /var/log/amos.log 2>&1
}
stop() {
exec pkill java
}
case $1 in
start|stop) "$1" ;;
esac
cd "$CURDIR"
Ketika saya menjalankan layanan pada awalnya tanpa ada modifikasi pada direktori, artinya, milik root, dan amos.service tidak memiliki parameter User not Group, semuanya berjalan dengan baik!
Setelah saya mengubah izin direktori menjadi amos: amos dan menambahkan Pengguna & Grup amos, serive tidak akan berfungsi dan saya mendapatkan yang berikut: Lihat gambar terlampir
/var/log
dimiliki oleh root. Saya pikir Anda ingin menggunakan direktori/var/log/amos/
yang Anda buat seperti yang dimiliki oleh AMOS.Jawaban:
Gunakan systemd:
Untuk menunjukkan masalah, gunakan
journalctl -xe
setelah Anda memulai layanan.Anda tidak memerlukan skrip bash, letakkan ini di file layanan Anda:
Tidak perlu
ExecStop
, systemd akan menghentikan semua proses anak. Anda dapat melihat hasilnya denganjournalctl -u amos.service
.sumber
Saya pikir Anda ingin bercabang bukan sederhana. Sederhana berasumsi proses Anda tidak keluar, jadi ketika itu terjadi, ia menyebut proses mati.
Anda mungkin ingin menghapus skrip amos_service.sh dan memasukkan fungsinya ke dalam amos.service.
sumber