Cara menggunakan
- Masukkan nama layanan, perintah dengan path lengkap, dan direktori kerja.
- Atur pengguna, kebijakan restart, dan variabel lingkungan bila ada.
- Jika perlu, tambahkan pengamanan dasar atau jadwal (OnCalendar) untuk membuat timer.
- 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.