Periksa status skrip shell

1

Saya menjalankan CentOS 5.5 dan telah membuat skrip init. Awal skrip berisi:

# Source function library.
if [ -f /etc/init.d/functions ]; then
        . /etc/init.d/functions
fi

Bit awal berfungsi dengan baik, tapi saya mengalami masalah dengan status dan menghentikan bagian:

status)
echo -n "Status of script: "
status "/bin/sh /path/to/script.sh"
RETVAL=$?
echo
;;

Di PS AUX perintah muncul sebagai "/ bin / sh /path/to/script.sh" dan saya bisa melihat PID. Tapi ketika saya lari:

./my_init_script status

Dikatakan skrip tidak berjalan. Haruskah saya menggunakan bit / bin / sh, atau hanya path script lengkap, atau hanya nama file script?

Bagian penghenti dari skrip init menggunakan "killproc". Sekali lagi perintah apa yang harus saya gunakan untuk berhasil membunuh semua kemunculan skrip?

Reado
sumber

Jawaban:

0

Jika itu seperti fungsi yang sesuai pada Ubuntu, Anda harus menghilangkan bagian "/ bin / sh".

status "$DAEMON"

Anda mungkin ingin menggunakan sesuatu seperti:

killproc -p "$PIDFILE" "$DAEMON"

Di dekat bagian atas skrip Anda, tentukan variabel-variabel itu:

DAEMON="/path/to/yourscriptname.sh"
PIDFILE="/var/run/yourscriptname/yourscriptname.pid"

Dan, tentu saja, Anda harus memastikan itu /var/run/yourscriptnameada.

Gunakan skrip yang ada /etc/init.dsebagai model skrip Anda.

Dennis Williamson
sumber
Baris status saya hanya membaca itu dan saya telah menetapkan $ DAEMON - itulah yang digunakan bagian awal (dan berfungsi), meskipun perintah mulai penuh adalah: "nohup $ DAEMON >> / path / to / logfile &" Dalam PS AUX I dapat melihat perintah berjalan. Ada ide?
Reado
@reado: Cobalah hanya dengan nama skrip tanpa direktori. Saya tidak memiliki sistem Centos / RH untuk memeriksanya saat ini. Apakah Anda memulai skrip Anda sh? Apa yang terjadi jika Anda memulainya tanpa itu (gunakan #!/bin/shdi bagian atas skrip, chmod +xdan mulai dengan /path/to/scriptname)? Apakah statusberhasil dalam kasus itu? Sudahkah Anda membandingkan skrip init Anda dengan yang ada?
Dennis Williamson
Saya sebenarnya tidak menggunakan file PID - ini pertama kalinya saya menulis hal-hal ini dan berpikir saya tidak akan membutuhkannya. Haruskah saya memilikinya? Jika demikian, bagaimana saya menambahkannya ke metode startup yang ada? Apakah ada perintah yang dapat saya jalankan untuk mengambil PID dari proses yang baru dibuat dan menulis output ke dalam file pilihan saya?
Reado
@reado: Seperti yang saya katakan saya tidak memiliki sistem Centos tersedia sekarang untuk memeriksa hal ini dan saya sarankan Anda mengikuti skrip yang ada sebagai model. Bisa jadi jika Anda mengatur PIDFILEvariabel yang initakan melakukan hal yang benar untuk Anda. Anda juga mungkin memerlukan blok komentar di awal file dalam format tertentu. Sekali lagi, skrip yang ada akan menunjukkan jalannya.
Dennis Williamson
Diurutkan !! Saya membuat fungsionalitas file PID dalam skrip saya, menyimpannya di / var / run dan memodifikasi stop dan status untuk menggunakan -p "$ PIDFILE" "$ DAEMON". Sekarang keduanya bekerja! Terima kasih banyak, sangat saya hargai! :-)
Reado