Langsung ke konten
ToolMug

Pembuat File Layanan systemd

Jaga program Node.js, Python, atau Go tetap berjalan di server Linux, mulai saat boot, dan restart saat crash — tanpa perlu mengingat setiap opsi systemd. Isi perintah dan pengguna, pilih kebijakan restart dan variabel lingkungan, lalu salin file .service beserta perintah untuk menginstal dan memulainya. Centang Jalankan sesuai jadwal untuk mendapatkan .timer sebagai alternatif modern pengganti cron.

Berjalan di browser Anda — tidak ada yang Anda masukkan yang diunggah

Menjadi nama file, mis. myapp → myapp.service

Gunakan path lengkap ke program, mis. /usr/bin/python3 app.py

Perintah terus berjalan di latar depan (sebagian besar aplikasi web dan skrip).

Satu KEY=value per baris; nilai yang mengandung spasi akan diberi tanda kutip otomatis.

0 mempertahankan bawaan sistem.

myapp.service

Instal dan mulai

Tempel perintah di server sebagai root. Setelah mengedit file unit, jalankan lagi systemctl daemon-reload. Log: journalctl -u <nama>.

Cara menggunakan

  1. Masukkan nama layanan, perintah dengan path lengkap, dan direktori kerja.
  2. Atur pengguna, kebijakan restart, dan variabel lingkungan bila ada.
  3. Jika perlu, tambahkan pengamanan dasar atau jadwal (OnCalendar) untuk membuat timer.
  4. Salin file yang dihasilkan, atau tempel perintah instalasi ke shell root di server.

Penjelasan opsi

Type
simple cocok untuk program yang tetap berjalan di latar depan; oneshot cocok untuk skrip yang berjalan sekali, seperti tugas terjadwal.
Restart
Saat gagal me-restart layanan ketika keluar dengan error atau crash; Selalu juga me-restart-nya setelah keluar normal.
OnCalendar
Kapan timer berjalan, mis. daily atau *-*-* 03:00:00 untuk pukul 03.00 setiap hari. Uji ekspresi dengan systemd-analyze calendar.

Contoh: tugas malam sebagai timer

Untuk menjalankan skrip setiap malam pukul 3 pagi, atur Perintah (ExecStart) ke /usr/local/bin/backup.sh, nama layanan ke backup, Type ke oneshot, dan Restart ke Tidak pernah, lalu centang “Jalankan sesuai jadwal (buat .timer)” dan “Pengamanan dasar”. Dengan pengguna dan direktori kerja default, generator menghasilkan dua file. backup.service:

[Unit]
Description=Nightly backup

[Service]
Type=oneshot
User=www-data
WorkingDirectory=/srv/myapp
ExecStart=/usr/local/bin/backup.sh
NoNewPrivileges=true
PrivateTmp=true
ProtectSystem=full
ProtectHome=read-only

dan backup.timer:

[Unit]
Description=Run backup on a schedule

[Timer]
OnCalendar=*-*-* 03:00:00
Persistent=true
Unit=backup.service

[Install]
WantedBy=timers.target

Dua hal berubah saat timer aktif. File layanan kehilangan bagian [Install], karena timer yang memulainya, dan perintah instalasi mengaktifkan timer, bukan layanan:

sudo systemctl daemon-reload
sudo systemctl enable --now backup.timer
systemctl list-timers backup.timer
journalctl -u backup.service -f

Type tidak diubah untuk Anda saat opsi timer dicentang, jadi pilih oneshot sendiri untuk tugas yang selesai. Layanan oneshot yang dikombinasikan dengan Restart Selalu tidak valid, sehingga generator menghilangkan Restart dan menampilkan peringatan.

Pertanyaan yang sering diajukan

Di mana saya menaruh file-nya?

Di /etc/systemd/system/. Lalu jalankan systemctl daemon-reload dan systemctl enable --now <nama>.service — perintah yang dihasilkan melakukan semuanya.

Mengapa layanan saya gagal dengan “Executable path is not absolute”?

systemd versi lama membutuhkan path lengkap ke program di ExecStart. Cari dengan which, mis. which node.

Timer atau cron?

Timer mencatat log ke journal, dapat mengejar eksekusi yang terlewat saat server mati, dan tidak pernah berjalan dua kali sekaligus. cron lebih sederhana untuk perintah satu baris dan masih berfungsi dengan baik.

Privasi

Alat ini berjalan sepenuhnya di browser Anda. File dan teks Anda diproses di perangkat Anda dan tidak pernah diunggah ke server kami.

Alat terkait