Bagaimana cara menentukan perintah shutdown daemon dengan pemula?

9

Dalam konfigurasi pemula bagaimana cara menetapkan perintah apa yang harus digunakan untuk mematikan server. Katakanlah saya punya daemon yang memiliki dua proses terpisah.

  • startup.sh - untuk memulai server
  • shutdown.sh - untuk mematikan server

Misalkan saya memiliki file pemula yang terlihat seperti ini.

description "Some Example Service"
author "Me"

start on runlevel [2345]
stop on runlevel [016]
respawn

exec startup.sh 

Bagaimana cara memberi tahu pemula bahwa ia harus menelepon shutdown.shketika mematikan server? Bagaimana yang biasanya diharapkan pemula untuk menutup daemon?

am
sumber

Jawaban:

10

Menggunakan execuntuk memulai proses itu baik-baik saja, tetapi ketika menghentikannya, jika Anda benar-benar perlu menjalankan skrip atau serangkaian perintah tertentu, Anda dapat menggunakan pre-stopbait.

pre-stop exec shutdown.sh

Saya berasumsi Anda telah mencoba menggunakan bait eksekutif dan itu tidak berhasil, mungkin karena dasmon Anda memerlukan pembersihan khusus. Perhatikan bahwa daemon berperilaku baik harus menerima sinyal dari pemula ketika pekerjaan dihentikan, dan jika mereka menangani sinyal dengan tepat, tidak diperlukan pembersihan tambahan.

Menghentikan pekerjaan melibatkan pengiriman SIGTERM ke sana. Jika ada sesuatu yang perlu dilakukan sebelum SIGTERM, lakukan di sini. Bisa dibilang, layanan harus menangani SIGTERM dengan sangat anggun, jadi ini seharusnya tidak perlu.

jika ada sesuatu yang kritis, seperti flush ke disk, dan menaikkan waktu habis kill bukanlah suatu pilihan, pre-stop bukanlah tempat yang buruk untuk melakukannya

Baca juga bagian ini untuk seluruh alur kerja tentang apa yang terjadi ketika Anda menghentikan pekerjaan. Perhatikan kapan pre-stop dijalankan, dan bagaimana sinyal dikirim ke proses sesudahnya, yang merupakan cara pemula menangani pekerjaan berhenti secara normal.

Sumber saya adalah buku resep pemula resmi di: http://upstart.ubuntu.com/cookbook/

roadmr
sumber
1
"Perhatikan bahwa daemon berperilaku baik harus menerima sinyal dari pemula ketika pekerjaan dihentikan, dan jika mereka menangani sinyal dengan tepat, tidak diperlukan pembersihan tambahan." - perhatikan bahwa kami menggunakan skrip di dunia Unix untuk memiliki kendali atas hal-hal di samping pekerjaan programmer. Dan ini adalah pernyataan yang menggelikan, karena kita memerlukan tempat untuk memasukkan misalnya mengirim email, menghapus kunci dari dis dll. Dan tugas ini tidak harus menjadi bagian dari daemon itu sendiri. Jadi pemula belum siap untuk digunakan ke lingkungan server.
kakaz
Dari jawaban ini (Yang Satu!) Saya melihat bahwa tidak ada cara yang baik untuk melakukan apa yang kita butuhkan?
kakaz