Saya mengembangkan perayap dalam PHP yang mem-parsing URL dengan tajuk spesifik dan meletakkan semua URL konten dalam antrian. Ini bekerja dengan baik.
Saya mengembangkan kode ini di ubuntu 14.04 dan saya meletakkan file .conf di folder / etc / init dengan konten ini:
# Info
description "Warm the varnish to get the list of products"
author "Juanjo Aguilella"
# Events
start on startup
stop on shutdown
# Automatically respawn
respawn
respawn limit 100 5
# Run the script
# Note, in this example, if your PHP script return
# the string "ERROR", the daemon will stop itself.
script
[ $(exec /usr/bin/php -f /var/www/crawler.php) = 'ERROR' ] && ( stop; exit 1; )
end script
Ini berfungsi dengan baik di Ubuntu 14.04 dan saya dapat memulai dan menghentikan daemon menggunakan "sudo service crawler start" dan "sudo service crawler stop"
Sekarang dalam lingkungan produksi saya memiliki server Ubuntu 16.04 dan saya meletakkan kode yang sama pada folder yang sama tetapi ketika saya mencoba memulai layanan saya menerima pesan "Gagal memulai crawler.service. Unit crawler.service tidak ditemukan"
Bisakah Anda memberi saya bantuan tentang hal itu?
Salam
ubuntu
daemon
ubuntu-16.04
Juanjo Aguilella Marés
sumber
sumber
Jawaban:
Menambahkan ke jawaban @Juanjo Aguilella Marés, dan setelah Anda menyalin / menautkan skrip
/etc/systemd/system
Anda, Anda mungkin ingin memulai secara otomatis ketika server mulai:Sumber Digital Ocean
Sebaiknya jangan jalankan sebagai root. Cukup ganti
user
baris pada skrip Anda:sumber
Saya memecahkan masalah:
a) Buat file crawler.service di / etc / systemd / system dengan kode ini:
file bash saya berisi eksekusi yang berbeda secara paralel dengan file php yang sama dengan kode ini:
tidur di antara eksekusi diperlukan untuk menyelamatkan masalah tentang eksekusi yang begitu cepat dari layanan.
Jika Anda memiliki saran tentang solusinya, silakan berkomentar, saya tidak punya banyak pengalaman dalam file bash dan file systemd, tetapi saat ini berfungsi dengan baik.
sumber
Sistem init untuk 14,04 adalah pemula. Sistem init untuk 16.04 adalah systemd. Anda harus mengonversi skrip pemula Anda menjadi file unit systemd . Ada banyak sumber daya lain yang tersedia juga.
sumber
1]. Untuk membuat layanan, buka / etc / systemd / system /
2]. Buat file serviceName misalnya chatSocket.service
3]. Masukkan konten ke file sebagaimana diberikan di bawah ini
4]. Muat ulang konfigurasi dengan menekan:
sudo systemctl daemon-reload
5]. Aktifkan layanan secara default sehingga ketika layanan sistem mulai secara otomatis akan mulai:
sudo systemctl enable my_service.service
6]. Mulai layanan Anda dengan menggunakan perintah di bawah ini:
sudo systemctl start my_service.service
sumber