วิธีค้นหาข้อความแสดงข้อผิดพลาดจากสคริปต์ Linux init.d / rc.d


28

ใน Linux ฉันได้เขียนสคริปต์บางอย่างเพื่อให้ทำงานในระหว่างการบู๊ตและเล่นด้วยวิธีต่างๆในการติดตั้งสคริปต์ สำหรับสคริปต์ขนาดใหญ่ผมจะใส่ใน/etc/init.dและเชื่อมโยงที่เหมาะสม/etc/rc.d/rc?.drunlevels /etc/rc.d/rc.localสำหรับสคริปต์ที่มีขนาดเล็กผมจะผนวกกับ กระบวนการนี้ดูเหมือนว่าจะทำงานได้อย่างราบรื่น

ตอนนี้ฉัน tweaked หนึ่งในสคริปต์ของฉันและมันล้มเหลว ฉันมีเวลาสักครู่วินิจฉัยมันเพราะฉันดูเหมือนจะไม่สามารถจับเอาท์พุทข้อผิดพลาดได้ ฉันได้ตรวจสอบ/var/log/messagesและแหย่ไปรอบ ๆ ส่วนที่เหลือ/var/logแต่ไม่พบสิ่งที่ใช้

ไม่มีใครรู้:

  1. ข้อความผิดพลาดเหล่านี้จึงถูกจับโดยอัตโนมัติที่ไหนสักแห่ง?
  2. ถ้าไม่ฉันจะจับ stdout / stderr จากสคริปต์ init.d ของฉันได้อย่างไร

ขอบคุณล่วงหน้า.



หากคุณไปที่การกระจายที่ทันสมัยกว่าด้วย systemd มันจะจัดการกับคุณและอนุญาตให้บันทึกข้อความบันทึกการใช้งานของแต่ละบริการ
eckes

คำตอบ:


17
  1. ไม่ - พวกเขาไปที่STDOUT (ถ้าคุณใช้echo) หรือSTDERR (ถ้าคุณใช้echo >&2)

  2. สคริปต์ของคุณต้องเขียนลงในบันทึกและ / หรือ syslog ด้วยตนเอง (การแจกจ่ายของคุณอาจมีบางฟังก์ชันinit.dที่อาจช่วยได้ - เพิ่มการกระจายของคุณในคำถามของคุณ)

ถ้าคุณไปหาบันทึกหาteeคำสั่ง loggerหากคุณไปสำหรับรูปลักษณ์ที่ syslog คุณสามารถรวมพวกเขาในแบบที่คุณต้องการ



6

คุณสามารถสร้างฟังก์ชั่นเพื่อสะท้อนข้อความทั้งที่หน้าจอและ syslog ได้ดังนี้:

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

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

คุณสามารถใส่ลงในไฟล์แยกและรวมไว้ในสคริปต์ของคุณด้วย

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

ขอบคุณนี่ใกล้กับสิ่งที่ฉันกำลังมองหา ฉันรู้วิธีเปลี่ยนเส้นทาง I / O แต่ไม่รู้วิธีโทรเข้าสู่ตัวบันทึก
McKAMEY

คือ[ -r ... ]การทดสอบเพื่อตรวจสอบว่ามันมีอยู่?
McKAMEY

ใช่ตรวจสอบว่าไฟล์อ่านได้หรือไม่
ott--

5

โดยทั่วไปข้อความจากสคริปต์ init จะไม่ถูกบันทึกที่ใดก็ได้ ดังนั้นคุณต้องใช้วิธีในการทำด้วยตัวเอง ความคิดที่ดีคือใช้loggerเพื่อส่งเอาต์พุตทั้งหมดไปยัง syslog ตัวอย่างนี้จะส่ง stdout และ stderr ไปยัง syslog:

exec 1> >(logger -s -t $(basename $0)) 2>&1

ฉันพบในบทความดีดีนี้: http://urbanautomaton.com/blog/2014/09/09/redirecting-bash-script-output-to-syslog/

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.