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