Skrip saya tidak berjalan saat boot di kotak gelandangan di bawah Ubuntu.
Skrip saya terlihat seperti ini –
#!/bin/bash
# /etc/init.d/mailcatcher
### BEGIN INIT INFO
# Provides: scriptname
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start daemon at boot time
# Description: Enable service provided by daemon.
### END INIT INFO
mailcatcher --http-ip 192.168.50.10
Izin saya pada file terlihat seperti ini –
-rwxr-xr-x 1 root root 352 Apr 30 09:59 mailcatcher.sh
Saya menjalankan perintah –
sudo update-rc.d "mailcatcher.sh" defaults
Jika saya menjalankan skrip secara manual, itu berfungsi dan memulai mailcatcher. Jika saya me-reboot komputer, daemon mailcatcher tidak dimulai. Apakah saya melewatkan sesuatu?
Jawaban yang Diterima:
Dan sekarang untuk jawaban Ubuntu.
Ini adalah pertanyaan Ubuntu Linux, dan versi 15 sekarang telah dirilis. Dunia Ubuntu sekarang memiliki systemd. Tetapi bahkan sebelum versi 15, dunia Ubuntu telah dimulai. Sebenarnya tidak ada alasan untuk menulis Sistem 5 rc
skrip; dan tentu saja tidak ada alasan bagus untuk memulai dari sana.
Baik pemula dan systemd melakukan semua "kontrol layanan". Yang perlu Anda lakukan hanyalah mendeskripsikan layanan .
systemd
Unit layanan systemd, untuk ditempatkan di /etc/systemd/system/mailcatcher.service
, adalah
[Unit] Description=Ruby MailCatcher Documentation=http://mailcatcher.me/ [Service] # Ubuntu/Debian convention: EnvironmentFile=-/etc/default/mailcatcher Type=simple ExecStart=/usr/bin/mailcatcher --foreground --http-ip 192.168.50.10 [Install] WantedBy=multi-user.target
Ini secara otomatis mendapatkan satu semua kontrol systemd, seperti:
systemctl enable mailcatcher.service
untuk mengatur layanan agar dimulai secara otomatis saat boot.systemctl preset mailcatcher.service
untuk menyetel layanan agar dimulai secara otomatis saat boot, jika kebijakan lokal mengizinkannya.systemctl start mailcatcher.service
untuk memulai layanan secara manual.systemctl status mailcatcher.service
untuk melihat status layanan.
pemula
Pemula serupa, dan memodifikasi file pekerjaan pemula Fideloper LLC ke pertanyaan ini memberikan ini untuk /etc/init/mailcatcher.conf
:
description "Mailcatcher" start on runlevel [2345] stop on runlevel [!2345] respawn exec /usr/bin/mailcatcher --foreground --http-ip=192.168.50.10
Ini secara otomatis mendapatkan satu semua kontrol pemula, seperti:
initctl start mailcatcher
untuk memulai layanan secara manual.initctl status mailcatcher
untuk melihat status layanan.
Bagian bonus daemontools
Sebagai permulaan, untuk hiburan setiap orang yang menggunakan daemontools-keluarga yang mencapai ini melalui pencarian WWW, dan untuk menunjukkan alasan lain mengapa tidak memulai di Sistem 5 rc
skrip, saya menjalankan unit layanan systemd itu melalui convert-systemd-units
dari toolset nosh perintah untuk menghasilkan skrip run daemontools-family berikut:
#!/bin/nosh #Run file generated from ./mailcatcher.service #Ruby MailCatcher chdir / read-conf --oknofile /etc/default/mailcatcher /usr/bin/mailcatcher --foreground --http-ip 192.168.50.10
Sebenarnya, convert-systemd-units
perintah menghasilkan keseluruhan paket layanan no direktori. Dengan direktori itu, yang menentukan informasi ketergantungan dan pemesanan, diinstal sebagai /var/sv/mailcatcher
dalam sistem dengan service-manager
no seseorang mendapatkan semua kontrol nosh, seperti:
system-control enable mailcatcher.service
untuk mengatur layanan agar dimulai secara otomatis saat boot.system-control start mailcatcher.service
untuk memulai layanan secara manual.system-control status mailcatcher.service
untuk melihat status layanan.system-control preset mailcatcher.service
untuk mengatur layanan agar dimulai secara otomatis saat boot, jika konfigurasi lokal (preset gaya systemd atau/etc/rc.conf{,.local}
) mengizinkannya.
Jangan mulai dengan Sistem 5 rc
file.
Lihat template ini yang digunakan oleh SaltStack untuk Sistem 5 rc
skrip. Bahkan dengan penghapusan parameter SaltStack yaitu 59 baris kode skrip shell, yang sebagian besar adalah boilerplate generik yang harus Anda temukan kembali dan tulis ulang. Lagi. Dan Celada telah menunjukkan di mana Anda telah menciptakannya kembali dengan buruk.
File unit systemd memiliki panjang 11 baris. File pekerjaan pemula adalah 8 baris. run
no script adalah 6. Dan mereka melakukan semua mekanisme start/stop/status untuk Anda. Jangan mulai dengan Sistem V rc
, terutama tidak di Ubuntu Linux.
Bacaan lebih lanjut
- Menyiapkan Penangkap Surat . 2014-10-21. Server untuk Hacker. Fideloper LLC.
- James Hunt dan Clint Byrum (2014). "Keperluan". Buku Masak Pemula .
- Jonathan de Boyne Pollard (2014). Tampilan berdampingan pada skrip yang dijalankan dan unit layanan. . Jawaban yang Sering Diberikan.