Bagaimana menemukan pesan kesalahan dari skrip init.d / rc.d Linux?


28

Di Linux, saya telah menulis beberapa skrip untuk dieksekusi saat boot dan bermain-main dengan berbagai cara menginstalnya. Untuk skrip yang lebih besar saya akan memasukkan /etc/init.ddan menautkan /etc/rc.d/rc?.drunlevel yang sesuai . Untuk skrip yang lebih kecil, saya akan menambahkan /etc/rc.d/rc.local. Proses ini sepertinya berjalan dengan lancar.

Sekarang saya telah men-tweak salah satu skrip saya dan gagal. Saya bersenang-senang mendiagnosis karena sepertinya saya tidak dapat menangkap output kesalahan. Saya sudah memeriksa /var/log/messagesdan menyodok sisa /var/logtetapi tidak dapat menemukan sesuatu yang berguna.

Apakah ada yang tahu:

  1. apakah pesan kesalahan ini secara otomatis ditangkap di suatu tempat?
  2. jika tidak, bagaimana saya bisa menangkap stdout / stderr dari skrip init.d saya?

Terima kasih sebelumnya.



Jika Anda pergi ke distribusi yang lebih modern dengan systemd itu akan menangani itu untuk Anda dan memungkinkan untuk mencatat jurnal pesan dari setiap layanan.
eckes

Jawaban:


17
  1. Tidak - mereka pergi ke STDOUT (jika Anda menggunakan echo) atau STDERR (jika Anda menggunakan echo >&2).

  2. Script Anda harus menulis ke log dan / atau syslog sendiri (distribusi Anda mungkin berisi beberapa fungsi init.d yang mungkin membantu di sana - tambahkan distribusi Anda ke pertanyaan Anda).

Jika Anda mencari log, cari teeperintah. Jika Anda pergi untuk melihat syslog logger. Anda dapat menggabungkannya dengan cara apa pun yang Anda inginkan.



6

Anda bisa membuat fungsi untuk menggema pesan ke layar dan ke syslog, seperti ini:

LOGGER="/usr/bin/logger -t $myScript"    # check the location of logger for your system

myEcho () {
    echo "$1"
    $LOGGER "$1"
}

Anda juga bisa memasukkannya ke file terpisah dan memasukkannya ke dalam skrip Anda

#!/bin/bash
myScript=$(basename $0)
[ -r /myFunctions/myecho ] && . /myFunctions/myecho

Terima kasih, ini lebih dekat dengan apa yang saya cari. Saya tahu cara mengarahkan ulang I / O tapi saya tidak tahu cara memanggil ke logger.
McKAMEY

Apakah [ -r ... ]tes untuk memeriksa apakah ada?
McKAMEY

Ya, periksa apakah file dapat dibaca.
ott--

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.