Jalankan Setiap File Eksekusi sebagai Layanan di Linux
Menjalankan eksekutable apa pun sebagai layanan linux
Berikut adalah langkah-langkah untuk Menyiapkan untuk menjalankan eksekutable apa pun sebagai layanan di Linux dengan Systemd.
Di atas adalah gambar yang dihasilkan oleh AI (dengan model Flux 1 dev) dari roda gigi yang mewakili pendekatan DIY Linux.
Systemd
Systemd adalah manajer sistem dan layanan serta alat inisialisasi di beberapa distro Linux.
Beberapa distro populer dengan systemd:
- Ubuntu 16.04 atau yang lebih baru
- Debian Jesse atau yang lebih baru
- Arch Linux
- CentOS 7 / RHEL 7 atau yang lebih baru
- Fedora 15 atau yang lebih baru
systemctl
systemctl adalah alat baris perintah untuk mengontrol systemd.
Daftar semua layanan
Untuk melihat daftar semua layanan, jalankan perintah berikut:
systemctl list-units --type=service
Membuat file layanan
Navigasi ke direktori layanan systemd dan buat file baru dengan ekstensi .service:
sudo nano /etc/systemd/system/your_service_name.service
Konfigurasi file layanan:
Tambahkan konten berikut ke file, sesuaikan nilai-nilai yang diperlukan:
[Unit]
Description=Deskripsi Layanan Anda
After=network.target
[Service]
Type=simple
User=root
WorkingDirectory=/path/to/your/executable/directory
ExecStart=/path/to/your/executable
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
Simpan dan tutup file.
Penundaan mulai layanan
Jika Anda mencurigai masalah penjadwalan saat layanan mulai, pertimbangkan untuk menambahkan penundaan ke konfigurasi layanan Anda:
[Service]
ExecStartPre=/bin/sleep 10
Ketergantungan layanan
Untuk mengatur ketergantungan layanan: dalam bagian [Unit] dari file konfigurasi layanan,
tambahkan direktif berikut:
Gunakan After= untuk menentukan layanan yang harus dimulai sebelum layanan Anda:
After=network.target other_service.service
Gunakan Requires= untuk mendefinisikan ketergantungan keras:
Requires=required_service.service
Gunakan Wants= untuk ketergantungan lunak:
Wants=optional_service.service
Muat ulang systemd untuk mengenali layanan baru
sudo systemctl daemon-reload
Periksa ketergantungan layanan
sudo systemctl list-dependencies your_service_name.service
Aktifkan layanan untuk dimulai saat boot
sudo systemctl enable your_service_name.service
Untuk memverifikasi bahwa layanan Anda diatur untuk dimulai saat boot:
sudo systemctl is-enabled your_service_name.service
Mulai layanan
sudo systemctl start your_service_name.service
# atau
sudo systemctl restart your_service_name.service
Periksa status layanan
Jika terjadi kesalahan - periksa log dan status layanan Linux:
sudo systemctl status your_service_name.service
atau
sudo journalctl -u your_service_name.service
Untuk Skrip Python
ExecStart=/path/to/conda/envs/my_env_name/bin/python /path/to/executable.py
Komentar
Sekarang Anda dapat mengelola layanan Anda menggunakan perintah systemctl, seperti start, stop, restart, dan status.
Untuk eksekutable yang memerlukan parameter, sesuaikan baris ExecStart di file layanan sesuai kebutuhan.
Sebagai contoh, jika Anda perlu menjalankan aplikasi Java, gunakan perintah Java lengkap di baris ExecStart.
Ingatlah untuk menyesuaikan izin file dan kepemilikan sesuai kebutuhan, dan pastikan bahwa eksekutable memiliki izin eksekusi yang benar.
Kontrol layanan systemd dengan chkservice
Alih-alih menjalankan
sudo systemctl start some-serviceservice
# atau
sudo systemctl restart some-serviceservice
Anda dapat menggunakan alat UI konsol. Mudah dan ringan
sudo apt-get install chkservice
sudo chkservice