Saya telah membuat skrip untuk memulai server (pertanyaan pertama saya). Sekarang saya ingin menjalankannya pada boot sistem dan memulai server yang ditentukan. Apa yang harus saya lakukan untuk menyelesaikan ini?
Temuan saya memberitahu saya meletakkan file ini di /etc/init.d
lokasi, dan itu akan dieksekusi ketika sistem akan boot. Tapi saya tidak bisa mengerti bagaimana argumen pertama tentang startup itu start
? Adalah suatu tempat yang telah ditetapkan ini untuk digunakan start
sebagai $1
? Jika saya ingin memiliki kasing startall
yang akan memulai semua server dalam skrip, lalu opsi apa yang bisa saya kelola?
Script saya seperti ini:
#!/bin/bash
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
$0 stop
$0 start
;;
*)
echo "usage: $0 (start|stop|restart)"
;;
esac
linux
shell-script
centos-5
vijay.shad
sumber
sumber
Jawaban:
/etc/init.d
adalah direktori skrip, tempat skrip yang dapat dieksekusi muncul. Namun, untuk menjalankan skrip dalam urutan tertentu setelah sistem Anda mulai, Anda perlu menambahkan file ke/etc/rc#.d
direktori. Entri yang muncul di sini memberi tahu sistem Anda dalam urutan apa dan pada level apa skrip/etc/init.d
run harus dijalankan. Angka setelah rc mengindikasikan level run yang dijalankan mesin, sesuai dengan bagan ini:http://en.wikipedia.org/wiki/Runlevel
Jadi, jika Anda memiliki:
Maka Anda memerlukan file (kosong):
S berarti mulai, dan K berarti membunuh. Ketika mesin Anda mulai, sistem akan mengatakan "Ah, saya menjalankan di RunLevel 3, mari kita mampir ke rc3.d untuk melihat skrip apa dalam '/etc/init.d' yang perlu dijalankan dan dalam urutan apa." Dalam hal ini, sistem akan mengurutkan berdasarkan 'S' dan kemudian nomor setelah 'S' dan akan menjalankan '/etc/init.d/importantscript start'. 20 hanya untuk tujuan pemesanan ... skrip Anda akan berjalan di belakang 'S19' dan di depan 'S21'. Anda dapat membuat file-file ini hanya dengan melakukan:
sudo touch /etc/rc.d/rc3.d/S20importantscript
Berikut ini ringkasan yang bagus: http://www.linux.com/news/enterprise/systems-management/8116-an-introduction-to-services-runlevels-and-rcd-scripts
sumber
Anda tidak harus --- dan tidak seharusnya --- membuat file di
/etc/rc.d/rcN.d/
; apa yang harus Anda lakukan adalah meletakkan komentar di skrip init Andadi mana
NNN
adalah himpunan runlevel di mana Anda ingin script aktif (misalnya,345
jika itu aktif dalam runlevel3
,4
dan5
), danA
danB
adalah awal dan berhenti prioritas. Kemudianchkconfig --add foo
(dengan asumsi skrip Anda dinamaifoo
) akan membuat file/etc/rc.d/rcN.d/
dengan nama yang sesuai.Anda kemudian dapat menggunakan
service foo bar
untuk mengirimbar
pesan ke skrip Anda (misstart
.stop
,, Apa pun - dari sanalah Anda$1
berasal).sumber
$ 1 adalah argumen baris perintah yang diteruskan ke skrip Anda, itu adalah salah satu dari mulai, berhenti atau mulai ulang. Di openSUSE , saya tidak ingat memiliki opsi untuk meneruskan argumen lain ke dalam skrip ketika menggunakan editor runlevel, jadi saya pikir ini mungkin satu-satunya yang harus Anda gunakan.
Saya tidak menggunakan CentOS sendiri, tetapi tampaknya program untuk mengontrol apa yang dimulai di mana runlevel adalah ntsysv .
sumber