Jalankan Setiap File Eksekusi sebagai Layanan di Linux

Menjalankan eksekutable apa pun sebagai layanan linux

Konten Halaman

Berikut adalah langkah-langkah untuk Menyiapkan untuk menjalankan eksekutable apa pun sebagai layanan di Linux dengan Systemd.

linux cogs 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

Tautan berguna