<ก่อนหน้านี้ | เนื้อหา | ถัดไป>
ง.2. /lib/lsb/init-functions
# / bin / sh
#################################################### ############################
#
# เริ่มต้น /lib/lsb/init-funtions
#
# คำอธิบาย : เรียกใช้ฟังก์ชันการควบคุมระดับ
#
# / bin / sh
#################################################### ############################
#
# เริ่มต้น /lib/lsb/init-funtions
#
# คำอธิบาย : เรียกใช้ฟังก์ชันการควบคุมระดับ
#
#ผู้เขียน
#
# อัปเดต
#
# เวอร์ชั่น
#
# หมายเหตุ
#
#
#
#
#ผู้เขียน
#
# อัปเดต
#
# เวอร์ชั่น
#
# หมายเหตุ
#
#
#
#
#################################################### ############################
## การตั้งค่าสิ่งแวดล้อม
# ตั้งค่าเริ่มต้นสำหรับสภาพแวดล้อม umask 022
ส่งออก PATH="/bin:/usr/bin:/sbin:/usr/sbin"
## ตั้งค่าคำสั่งสี ใช้ผ่าน echo
# โปรดปรึกษา `man console_codes สำหรับข้อมูลเพิ่มเติม
# ใต้ส่วน "ECMA-48 Set Graphics Rendition"
#
# คำเตือน: เมื่อเปลี่ยนจากแบบอักษร 8 บิตเป็น 9 บิต
# คอนโซล linux จะตีความตัวหนา (1;) ใหม่เป็น
#################################################### ############################
## การตั้งค่าสิ่งแวดล้อม
# ตั้งค่าเริ่มต้นสำหรับสภาพแวดล้อม umask 022
ส่งออก PATH="/bin:/usr/bin:/sbin:/usr/sbin"
## ตั้งค่าคำสั่งสี ใช้ผ่าน echo
# โปรดปรึกษา `man console_codes สำหรับข้อมูลเพิ่มเติม
# ใต้ส่วน "ECMA-48 Set Graphics Rendition"
#
# คำเตือน: เมื่อเปลี่ยนจากแบบอักษร 8 บิตเป็น 9 บิต
# คอนโซล linux จะตีความตัวหนา (1;) ใหม่เป็น
# ร่ายมนตร์ 256 อันดับแรกของแบบอักษร 9 บิต นี้ไม่
#ไม่มีผลกับคอนโซลเฟรมบัฟเฟอร์
NORMAL="\\033[0;39m" # คอนโซลมาตรฐานสีเทา SUCCESS="\\033[1;32m" # Success is green WARNING="\\033[1;33m" # คำเตือนเป็นสีเหลือง FAILURE="\\ 033[1;31m" # ความล้มเหลวเป็นสีแดง INFO="\\033[1;36m" # ข้อมูลเป็น light cyan BRACKET="\\033[1;34m" # วงเล็บเป็นสีน้ำเงิน
# ใช้คำนำหน้าสี BMPREFIX=" "
SUCCESS_PREFIX="${SUCCESS} * ${NORMAL} " FAILURE_PREFIX="${FAILURE}*****${NORMAL} " WARNING_PREFIX="${WARNING} *** ${NORMAL} " SKIP_PREFIX="${ สำเร็จ INFO} ${ปกติ}"
SUCCESS_SUFFIX="${BRACKET}[${SUCCESS} OK ${BRACKET}]${NORMAL}" FAILURE_SUFFIX="${BRACKET}[${FAILURE} FAIL ${BRACKET}]${NORMAL}" WARNING_SUFFIX="$ สำเร็จ {BRACKET}[${WARNING} WARN ${BRACKET}]${NORMAL}" SKIP_SUFFIX="${BRACKET}[${INFO} ข้าม ${BRACKET}]${NORMAL}"
BOOTLOG=/run/bootlog KILLDELAY=3 SCRIPT_STAT="0"
# ตั้งค่าตัวแปรสภาพแวดล้อมที่ผู้ใช้ระบุ เช่น HEADLESS [ -r /etc/sysconfig/rc.site ] && /etc/sysconfig/rc.site
## ขนาดหน้าจอ
# ค้นหาขนาดหน้าจอปัจจุบันถ้า [ -z "${COLUMNS}" ]; แล้ว
COLUMNS=$(ขนาด stty) COLUMNS=${COLUMNS##* }
fi
# เมื่อใช้การเชื่อมต่อระยะไกล เช่นพอร์ตอนุกรม ขนาด stty จะคืนค่า 0 ถ้า [ "${COLUMNS}" = "0" ]; แล้ว
คอลัมน์=80
fi
## การวัดสำหรับข้อความผลลัพธ์การจัดตำแหน่ง COL=$((${COLUMNS} - 8))
WCOL=$((${COL} - 2))
## ตั้งค่าคำสั่งตำแหน่งเคอร์เซอร์ ใช้ผ่าน echo SET_COL="\\033[${COL}G" # ที่ $COL ถ่าน SET_WCOL="\\033[${WCOL}G" # ที่ $WCOL ถ่าน CURS_UP= "\\033[1A\\033[0G" # ขึ้นหนึ่งบรรทัด ที่อักขระที่ 0 CURS_ZERO="\\033[0G"
####################################################### #################################
# start_daemon () #
# การใช้งาน: start_daemon [-f] [-n nicelevel] [-p pidfile] ชื่อพาธ [args...] #
# #
# วัตถุประสงค์: สิ่งนี้รันโปรแกรมที่ระบุเป็น daemon #
# #
# อินพุต: -f: (บังคับ) เรียกใช้โปรแกรมแม้ว่าจะทำงานอยู่แล้วก็ตาม #
# -n nicelevel: ระบุระดับที่ดี ดู 'ผู้ชายที่ดี(1)' #
# -p pidfile: ใช้ไฟล์ที่ระบุเพื่อกำหนด PID #
# ชื่อพาธ: เส้นทางที่สมบูรณ์ไปยังโปรแกรมที่ระบุ #
# args: อาร์กิวเมนต์เพิ่มเติมที่ส่งผ่านไปยังโปรแกรม (ชื่อพาธ) #
# #
# ส่งกลับค่า (ตามที่กำหนดโดยรหัสทางออก LSB): #
# 0 - โปรแกรมกำลังทำงานหรือบริการใช้ได้ #
# 1 - ข้อผิดพลาดทั่วไปหรือไม่ระบุ #
# 2 - อาร์กิวเมนต์ที่ไม่ถูกต้องหรือมากเกินไป #
# 5 - ไม่ได้ติดตั้งโปรแกรม #
####################################################### #################################
start_daemon()
{
local force="" local nice="0" local pidfile="" local pidlist="" local retval=""
# ประมวลผลอาร์กิวเมนต์ในขณะที่ true
do
กรณี "${1}" ใน
-NS)
แรง = "1" กะ 1
;;
-NS)
nice="${2}" กะ 2
;;
-NS)
pidfile="${2}" shift 2
;;
-
ส่งคืน 2
;;
ทำ
*)
ว่า C
program="${1}" พัก
;;
# ตรวจสอบโปรแกรมที่ถูกต้อง
ถ้า [ ! -e "${โปรแกรม}" ]; แล้วกลับ 5; fi
#ดำเนินการ
ถ้า [ -z "${force}" ]; แล้ว
ถ้า [ -z "${pidfile}" ]; แล้ว
# กำหนด pid โดยการค้นพบ pidlist=`pidofproc "${1}"` retval="${?}"
อื่น
# ไฟล์ PID มี PID ที่จำเป็น
# โปรดทราบว่าตามข้อกำหนด LSB ต้องกำหนดเส้นทางให้กับ pidofproc
# อย่างไรก็ตาม มันไม่ได้ถูกใช้โดยการใช้งานหรือมาตรฐานในปัจจุบัน pidlist=`pidofproc -p "${pidfile}" "${1}"`
retval="${?}"
fi
# คืนค่าเท่านั้น
# มันเป็นความรับผิดชอบของสคริปต์เริ่มต้น (หรือหน้าที่ของการกระจาย)
# เพื่อบันทึกข้อความ! กรณี "${retval}" ใน
0)
# โปรแกรมทำงานอย่างถูกต้องแล้ว นี่คือ
#เริ่มต้นได้สำเร็จ ส่งคืน 0
;;
1)
# โปรแกรมไม่ทำงาน แต่มีไฟล์ pid ที่ไม่ถูกต้อง
# ลบไฟล์ pid และดำเนินการต่อ rm -f "${pidfile}"
;;
3)
# โปรแกรมไม่ทำงานและไม่มี pidfile อยู่
#ไม่ทำอะไรเลย ให้ start_deamon ไปต่อ
;;
*)
ว่า C
fi
# อื่น ๆ ที่ส่งคืนโดยค่าสถานะจะไม่ถูกตีความ
# และส่งคืนเป็นข้อผิดพลาดที่ไม่ระบุ กลับ 1
;;
#เริ่มเลย!
ดี -n "${nice}" "${@}"
}
####################################################### #################################
# killproc () #
# การใช้งาน: killproc [-p pidfile] ชื่อพาธ [สัญญาณ] #
# #
# วัตถุประสงค์: ส่งสัญญาณควบคุมไปยังกระบวนการที่ทำงานอยู่ #
# #
# อินพุต: -p pidfile ใช้ pidfile ที่ระบุ #
# ชื่อพา ธ ชื่อพา ธ ไปยังโปรแกรมที่ระบุ #
# สัญญาณส่งสัญญาณนี้ไปยังชื่อพา ธ #
# #
# ส่งกลับค่า (ตามที่กำหนดโดยรหัสทางออก LSB): #
# 0 - โปรแกรม (ชื่อพาธ) หยุดทำงาน/หยุดทำงานแล้วหรือ #
# | ระบุโปรแกรมที่กำลังทำงานอยู่ | สัญญาณและ | หยุด | # | |
# | ประสบความสำเร็จ | # | |||
# | 1 | - ข้อผิดพลาดทั่วไปหรือไม่ระบุ | # | ||
# | 2 | - อาร์กิวเมนต์ที่ไม่ถูกต้องหรือมากเกินไป | # | ||
# | 5 | - ไม่ได้ติดตั้งโปรแกรม | # | ||
# | 7 | - โปรแกรมไม่ทำงานและสัญญาณเป็น | ที่จัดมา | # |
####################################################### #################################
คิลโปรค()
{
pidfile ท้องถิ่น โปรแกรมท้องถิ่น คำนำหน้าท้องถิ่น โปรแกรมท้องถิ่น
local signal="-TERM" local fallback="-KILL" nosig ในพื้นที่
pidlist ท้องถิ่น retval ท้องถิ่น pid ท้องถิ่น
local delay="30" local piddead local dtime
# ประมวลผลอาร์กิวเมนต์ในขณะที่เป็นจริง ทำ
กรณี "${1}" ใน
-NS)
pidfile="${2}" shift 2
;;
*)
โปรแกรม="${1}"
ถ้า [-n "${2}" ]; แล้วสัญญาณ="${2}" fallback=""
อื่น
โนซิก=1
fi
# เกิดข้อผิดพลาดในอาร์กิวเมนต์เพิ่มเติม ถ้า [ -n "${3}" ]; แล้ว
ส่งคืน 2
อื่น
ทำลาย
ทำ
fi
;;
ว่า C
# ตรวจสอบโปรแกรมที่ถูกต้อง
ถ้า [ ! -e "${โปรแกรม}" ]; แล้วกลับ 5; fi
# ตรวจสอบสัญญาณที่ถูกต้อง check_signal "${signal}"
ถ้า [ "${?}" -ne "0" ]; แล้วกลับ 2; fi
# รับรายการ pids
ถ้า [ -z "${pidfile}" ]; แล้ว
# กำหนด pid โดยการค้นพบ pidlist=`pidofproc "${1}"` retval="${?}"
อื่น
# ไฟล์ PID มี PID ที่จำเป็น
# โปรดทราบว่าตามข้อกำหนด LSB ต้องกำหนดเส้นทางให้กับ pidofproc
# อย่างไรก็ตาม มันไม่ได้ถูกใช้โดยการใช้งานหรือมาตรฐานในปัจจุบัน pidlist=`pidofproc -p "${pidfile}" "${1}"`
retval="${?}"
fi
# คืนค่าเท่านั้น
# มันเป็นความรับผิดชอบของสคริปต์เริ่มต้น (หรือหน้าที่ของการกระจาย)
# เพื่อบันทึกข้อความ! กรณี "${retval}" ใน
0)
#โปรแกรมทำงานถูกต้อง
#อย่าทำอะไรที่นี่ ให้ killproc ดำเนินการต่อ
;;
1)
# โปรแกรมไม่ทำงาน แต่มีไฟล์ pid ที่ไม่ถูกต้อง
# ลบไฟล์ pid rm -f "${pidfile}"
# นี่เป็นความสำเร็จหากไม่มีสัญญาณผ่าน ถ้า [ -n "${nosig}" ]; แล้ว
ส่งคืน 0
อื่น
ส่งคืน 7
fi
;;
3)
# โปรแกรมไม่ทำงานและไม่มี pidfile อยู่
# นี่เป็นความสำเร็จหากไม่มีสัญญาณผ่าน ถ้า [ -n "${nosig}" ]; แล้ว
ส่งคืน 0
อื่น
ส่งคืน 7
fi
;;
*)
ว่า C
# อื่น ๆ ที่ส่งคืนโดยค่าสถานะจะไม่ถูกตีความ
# และส่งคืนเป็นข้อผิดพลาดที่ไม่ระบุ กลับ 1
;;
# ดำเนินการต่าง ๆ สำหรับสัญญาณออกและสัญญาณควบคุม check_sig_type "${signal}"
ถ้า [ "${?}" -eq "0" ]; จากนั้น # สัญญาณจะใช้เพื่อยุติโปรแกรม
# บัญชีสำหรับ pidlist ที่ว่างเปล่า (ไฟล์ pid ยังคงอยู่และไม่มี
#สัญญาณได้รับ)
ถ้า [ "${pidlist}" != "" ]; แล้ว
# ฆ่ารายการ pids สำหรับ pid ใน ${pidlist}; ทำ
kill -0 "${pid}" 2> /dev/null if [ "${?}" -ne "0" ]; แล้ว
# กระบวนการตายแล้ว ดำเนินการต่อและถือว่าทุกอย่างดำเนินไปได้ด้วยดี
อื่น
ฆ่า "${signal}" "${pid}" 2> /dev/null
# รอถึง ${delay}/10 วินาทีสำหรับ "${pid}" ถึง
# สิ้นสุดใน 10 วินาที
ในขณะที่ [ "${delay}" -ne "0" ]; ทำ
ฆ่า -0 "${pid}" 2> /dev/null || piddead="1" ถ้า [ "${piddead}" = "1" ]; แล้วแตก; fi สลีป 0.1
ล่าช้า="$(( ${ล่าช้า} - 1 ))"
ทำ
# หากตั้งค่าทางเลือกไว้ และโปรแกรมยังทำงานอยู่ แสดงว่า
#ใช้ทางเลือกสำรอง
ถ้า [-n "${fallback}" -a "${piddead}" != "1" ]; จากนั้นฆ่า "${fallback}" "${pid}" 2> /dev/null
นอนหลับ 1
# ตรวจสอบอีกครั้ง และล้มเหลวหากยังคงเรียกใช้ kill -0 "${pid}" 2> /dev/null && return 1
fi
fi
ทำ
fi
# ตรวจสอบและลบไฟล์ PID ที่เก่าแล้ว ถ้า [ -z "${pidfile}" ]; แล้ว
# ค้นหาชื่อฐานของ $program
prefix=`echo "${program}" | sed 's/[^/]*$//'` progname=`echo "${program}" | sed 's/[^/]*$//'' progname=`echo "${program}" | sed 's/[^/]*$//' sed "s@${prefix}@@"`
ถ้า [ -e "/var/run/${progname}.pid" ]; แล้ว
rm -f "/var/run/${progname}.pid" 2> /dev/null
fi
อื่น
ถ้า [ -e "${pidfile}" ]; จากนั้น rm -f "${pidfile}" 2> /dev/null; fi
fi
# สำหรับสัญญาณที่ไม่คาดหวังให้โปรแกรมออก ง่ายๆ
# ให้ kill ทำหน้าที่ของมัน และประเมินผลตอบแทนจากการฆ่าเพื่อมูลค่า
else# check_sig_type - สัญญาณไม่ได้ใช้เพื่อยุติโปรแกรมสำหรับ pid ใน ${pidlist}; ทำ
ฆ่า "${signal}" "${pid}"
ถ้า [ "${?}" -ne "0" ]; แล้วกลับ 1; fi
ทำ
fi
}
####################################################### #################################
# pidofproc() #
# การใช้งาน: pidofproc [-p pidfile] ชื่อพาธ #
# #
# วัตถุประสงค์: ฟังก์ชันนี้ส่งคืน pid หนึ่งรายการขึ้นไปสำหรับ daemon เฉพาะ #
# #
# อินพุต: -p pidfile ใช้ pidfile ที่ระบุแทน pidof #
# ชื่อพาธ, พาธไปยังโปรแกรมที่ระบุ #
# #
# ส่งกลับค่า (ตามที่กำหนดโดยรหัสสถานะ LSB): #
# 0 - ความสำเร็จ (PID ถึง stdout) #
# 1 - โปรแกรมตายแล้ว ไฟล์ PID ยังคงอยู่ (เอาต์พุต PID ที่เหลืออยู่) #
# 3 - โปรแกรมไม่ทำงาน (ไม่มีเอาต์พุต) #
####################################################### #################################
พิดอฟโปรค()
{
pidfile ท้องถิ่น โปรแกรมท้องถิ่น คำนำหน้าท้องถิ่น โปรแกรมท้องถิ่น pidlist ท้องถิ่น lpids
สถานะทางออกในท้องถิ่น="0"
# ประมวลผลอาร์กิวเมนต์ในขณะที่เป็นจริง ทำ
กรณี "${1}" ใน
-NS)
pidfile="${2}" shift 2
;;
*)
โปรแกรม="${1}"
ถ้า [ -n "${2}" ]; แล้ว
#มีข้อโต้แย้งมากเกินไป
# เนื่องจากนี่คือสถานะ ส่งคืนที่ไม่รู้จัก return 4
อื่น
ทำลาย
ทำ
fi
;;
ว่า C
# หากไม่ได้ระบุไฟล์ PID ให้ลองค้นหา ถ้า [ -z "${pidfile}" ]; แล้ว
# รับชื่อฐานของโปรแกรม
prefix=`echo "${program}" | sed 's/[^/]*$//'` if [ -z "${prefix}" ]; แล้ว
progname="${program}" else
progname=`echo "${program}" | sed "s@${prefix}@@"`
fi
# หากมีไฟล์ PID ที่ใช้ชื่อนั้นอยู่ ให้ถือว่านั่นคือชื่อนั้น ถ้า [ -e "/var/run/${progname}.pid" ]; แล้ว
pidfile="/var/run/${progname}.pid"
fi
fi
# หากไฟล์ PID ถูกตั้งค่าและมีอยู่แล้ว ให้ใช้ไฟล์นั้น
ถ้า [ -n "${pidfile}" -a -e "${pidfile}" ]; แล้ว
# ใช้ค่าในบรรทัดแรกของ pidfile pidlist=`/bin/head -n1 "${pidfile}"`
# สามารถเขียนเป็น 'sed 1q' เพื่อแทนที่ 'head -n1'
# LFS ควรย้าย /bin/head ไปที่ /usr/bin/head
อื่น
# ใช้ pidof
pidlist=`pidof "${program}"`
fi
# ดูว่า PID ที่ระบุไว้ทั้งหมดกำลังทำงานอยู่หรือไม่ สำหรับ pid ใน ${pidlist}; ทำ
ฆ่า -0 ${pid} 2> /dev/null
ถ้า ["${?}" -eq "0" ]; จากนั้น lpids="${lpids}${pid} "
อื่น
exitstatus="1"
fi
ทำ
ถ้า [-z "${lpids}" -a ! -f "${pidfile}" ]; แล้วกลับ 3
อื่น
เสียงสะท้อน "${lpids}"
ส่งคืน "${exitstatus}"
fi
}
####################################################### #################################
# สถานะโพรค () #
# การใช้งาน: statusproc [-p pidfile] ชื่อพาธ #
# #
# วัตถุประสงค์: ฟังก์ชันนี้พิมพ์สถานะของภูตเฉพาะไปยัง stdout #
# #
# อินพุต: -p pidfile ใช้ pidfile ที่ระบุแทน pidof #
# ชื่อพาธ, พาธไปยังโปรแกรมที่ระบุ #
# #
# ส่งกลับค่า: #
# 0 - พิมพ์สถานะ #
# 1 - ข้อผิดพลาดในการป้อนข้อมูล ไม่ได้ระบุภูตที่จะตรวจสอบ #
####################################################### #################################
สถานะโปรค()
{
pidfile ท้องถิ่น pidlist ท้องถิ่น
ถ้า [ "${#}" = "0" ]; แล้ว
echo "การใช้งาน: statusproc [-p pidfle] {program}" ออก 1
fi
# ประมวลผลอาร์กิวเมนต์ในขณะที่เป็นจริง ทำ
กรณี "${1}" ใน
-NS)
pidfile="${2}" shift 2
;;
*)
ถ้า [ -n "${2}" ]; แล้ว
echo "มีอาร์กิวเมนต์มากเกินไป" คืนค่า 1
อื่น
ทำลาย
ทำ
fi
;;
ว่า C
ถ้า [ -n "${pidfile}" ]; จากนั้น pidlist=`pidofproc -p "${pidfile}" $@`
อื่น
pidlist=`pidofproc $@`
fi
# ตัดช่องว่างต่อท้าย
pidlist=`echo "${pidlist}" | sed -r 's/ +$//'` base="${1##*/}"
ถ้า [ -n "${pidlist}" ]; แล้ว
/bin/echo -e "${INFO}${base} กำลังทำงานด้วย Process" \ "ID(s) ${pidlist}.${NORMAL}"
อื่น
ถ้า [ -n "${base}" -a -e "/var/run/${base}.pid" ]; แล้ว
/bin/echo -e "${WARNING}${1} ไม่ทำงาน แต่" \"/var/run/${base}.pid มีอยู่.${NORMAL}"
อื่น
ถ้า [ -n "${pidfile}" -a -e "${pidfile}" ]; แล้ว
/bin/echo -e "${WARNING}${1} ไม่ทำงาน" \ "แต่ ${pidfile} มีอยู่${NORMAL}"
อื่น
/bin/echo -e "${INFO}${1} ไม่ทำงาน${NORMAL}"
fi
fi
fi
}
####################################################### #################################
# ตารางเวลา () #
# #
# วัตถุประสงค์: ฟังก์ชันยูทิลิตี้ภายในเพื่อจัดรูปแบบการประทับเวลา #
# ไฟล์บันทึกการบูต ตั้งค่าตัวแปร STAMP #
# #
# ค่าส่งคืน: ไม่ได้ใช้ #
####################################################### #################################
ตารางเวลา ()
{
STAMP="$(echo `date +"%b %d %T %:z"` `hostname`) " return 0
}
####################################################### #################################
# log_success_msg() #
# การใช้งาน: log_success_msg ["ข้อความ"] #
# #
# วัตถุประสงค์: พิมพ์ข้อความสถานะสำเร็จไปที่หน้าจอและ #
# ไฟล์บันทึกการบูต #
# #
# อินพุต: $@ - ข้อความ #
# #
# ส่งกลับค่า: ไม่ได้ใช้ #
####################################################### #################################
log_success_msg()
{
/bin/echo -n -e "${BMPREFIX}${@}"
/bin/echo -e "${CURS_ZERO}${SUCCESS_PREFIX}${SET_COL}${SUCCESS_SUFFIX}"
# ตัดอักขระที่ไม่สามารถพิมพ์ได้จากล็อกไฟล์ logmessage=`echo "${@}" | sed 's/\\\033[^a-zA-Z]*.//g''
ตารางเวลา
/bin/echo -e "${STAMP} ${logmessage} ตกลง" >> ${BOOTLOG}
ส่งคืน 0
}
log_success_msg2()
{
/bin/echo -n -e "${BMPREFIX}${@}"
/bin/echo -e "${CURS_ZERO}${SUCCESS_PREFIX}${SET_COL}${SUCCESS_SUFFIX}" echo " ตกลง" >> ${BOOTLOG}
ส่งคืน 0
}
####################################################### #################################
# log_failure_msg() #
# การใช้งาน: log_failure_msg ["ข้อความ"] #
# #
# วัตถุประสงค์: พิมพ์ข้อความสถานะความล้มเหลวไปที่หน้าจอและ #
# ไฟล์บันทึกการบูต #
# #
# อินพุต: $@ - ข้อความ #
# #
# ส่งกลับค่า: ไม่ได้ใช้ #
####################################################### #################################
log_failure_msg()
{
/bin/echo -n -e "${BMPREFIX}${@}"
/bin/echo -e "${CURS_ZERO}${FAILURE_PREFIX}${SET_COL}${FAILURE_SUFFIX}"
# ถอดอักขระที่ไม่สามารถพิมพ์ได้ออกจากไฟล์บันทึก timespec
logmessage=`echo "${@}" | sed 's/\\\033[^a-zA-Z]*.//g''
/bin/echo -e "${STAMP} ${logmessage} ล้มเหลว" >> ${BOOTLOG}
ส่งคืน 0
}
log_failure_msg2()
{
/bin/echo -n -e "${BMPREFIX}${@}"
/bin/echo -e "${CURS_ZERO}${FAILURE_PREFIX}${SET_COL}${FAILURE_SUFFIX}" เสียงก้อง "FAIL" >> ${BOOTLOG}
ส่งคืน 0
}
####################################################### #################################
# log_warning_msg() #
# การใช้งาน: log_warning_msg ["ข้อความ"] #
# #
# วัตถุประสงค์: พิมพ์ข้อความสถานะคำเตือนไปที่หน้าจอและ #
# ไฟล์บันทึกการบูต #
# #
# ส่งกลับค่า: ไม่ได้ใช้ #
####################################################### #################################
log_warning_msg()
{
/bin/echo -n -e "${BMPREFIX}${@}"
/bin/echo -e "${CURS_ZERO}${WARNING_PREFIX}${SET_COL}${WARNING_SUFFIX}"
# ตัดอักขระที่ไม่สามารถพิมพ์ได้จากล็อกไฟล์ logmessage=`echo "${@}" | sed 's/\\\033[^a-zA-Z]*.//g'` timespec
/bin/echo -e "${STAMP} ${logmessage} WARN" >> ${BOOTLOG}
ส่งคืน 0
}
log_skip_msg()
{
/bin/echo -n -e "${BMPREFIX}${@}"
/bin/echo -e "${CURS_ZERO}${SKIP_PREFIX}${SET_COL}${SKIP_SUFFIX}"
# ตัดอักขระที่ไม่สามารถพิมพ์ได้จากล็อกไฟล์ logmessage=`echo "${@}" | sed 's/\\\033[^a-zA-Z]*.//g''
/bin/echo "ข้าม" >> ${BOOTLOG}
ส่งคืน 0
}
####################################################### #################################
# log_info_msg() #
# การใช้งาน: ข้อความ log_info_msg #
# #
# วัตถุประสงค์: พิมพ์ข้อความข้อมูลไปที่หน้าจอและ #
# ไฟล์บันทึกการบูต ไม่พิมพ์อักขระขึ้นบรรทัดใหม่ต่อท้าย #
# #
# ส่งกลับค่า: ไม่ได้ใช้ #
####################################################### #################################
log_info_msg()
{
/bin/echo -n -e "${BMPREFIX}${@}"
# ตัดอักขระที่ไม่สามารถพิมพ์ได้จากล็อกไฟล์ logmessage=`echo "${@}" | sed 's/\\\033[^a-zA-Z]*.//g'` timespec
/bin/echo -n -e "${STAMP} ${logmessage}" >> ${BOOTLOG}
ส่งคืน 0
}
log_info_msg2()
{
/bin/echo -n -e "${@}"
# ตัดอักขระที่ไม่สามารถพิมพ์ได้จากล็อกไฟล์ logmessage=`echo "${@}" | sed 's/\\\033[^a-zA-Z]*.//g''
/bin/echo -n -e "${logmessage}" >> ${BOOTLOG}
ส่งคืน 0
}
####################################################### #################################
# ประเมิน_retval() #
# การใช้งาน: ประเมินผลตอบแทนและพิมพ์สำเร็จหรือล้มเหลวตามความเหมาะสม #
# #
# วัตถุประสงค์: ฟังก์ชันอำนวยความสะดวกในการยุติข้อความข้อมูล #
# #
# ส่งกลับค่า: ไม่ได้ใช้ #
####################################################### #################################
ประเมิน_retval()
{
local error_value="${?}"
ถ้า [ ${error_value} = 0]; จากนั้น log_success_msg2
อื่น
log_failure_msg2
fi
}
####################################################### #################################
# ตรวจสอบสัญญาณ () #
# การใช้งาน: check_signal [ -{signal} | {สัญญาณ} ] #
# #
# วัตถุประสงค์: ตรวจสอบสัญญาณที่ถูกต้อง สิ่งนี้ไม่ได้กำหนดโดยร่าง LSB ใด ๆ #
# อย่างไรก็ตาม จำเป็นต้องตรวจสอบสัญญาณเพื่อดูว่า #
# สัญญาณที่เลือกเป็นอาร์กิวเมนต์ที่ไม่ถูกต้องสำหรับฟังก์ชันอื่นๆ #
# #
# อินพุต: ยอมรับค่าสตริงเดียวในรูปแบบหรือ -{สัญญาณ} หรือ {สัญญาณ} #
# #
# ส่งกลับค่า: #
# 0 - สำเร็จ (สัญญาณถูกต้อง #
# 1 - สัญญาณไม่ถูกต้อง #
####################################################### #################################
ตรวจสอบสัญญาณ ()
{
valsig ท้องถิ่น
# เพิ่มการจัดการข้อผิดพลาดสำหรับสัญญาณที่ไม่ถูกต้อง
valsig="-ALRM -HUP -INT -KILL -PIPE -POLL -PROF -TERM -USR1 -USR2" valsig="${valsig} -VTALRM -STKFLT -PWR -WINCH -CHLD -URG -TSTP -TTIN" valsig= "${valsig} -TTOU -STOP -CONT -ABRT -FPE -ILL -QUIT -SEGV -TRAP" valsig="${valsig} -SYS -EMT -BUS -XCPU -XFSZ -0 -1 -2 -3 - 4 -5 -6 -8 -9"
valsig="${valsig} -11 -13 -14 -15"
echo "${valsig}" | grep -- " ${1} " > /dev/null if [ "${?}" -eq "0" ]; แล้ว
ส่งคืน 0
อื่น
ส่งคืน 1
fi
}
####################################################### #################################
# check_sig_type() #
# การใช้งาน: check_signal [ -{signal} | {สัญญาณ} ] #
# #
# วัตถุประสงค์: ตรวจสอบว่าสัญญาณเป็นสัญญาณยุติโปรแกรมหรือสัญญาณควบคุม #
# สิ่งนี้ไม่ได้กำหนดโดยร่าง LSB ใด ๆ อย่างไรก็ตามจำเป็นต้อง #
# ตรวจสอบสัญญาณเพื่อดูว่ามีจุดมุ่งหมายเพื่อสิ้นสุด #
# โปรแกรมหรือเพียงแค่ควบคุมมัน #
# #
# อินพุต: ยอมรับค่าสตริงเดียวในรูปแบบหรือ -{สัญญาณ} หรือ {สัญญาณ} #
# #
# ส่งกลับค่า: #
# 0 - สัญญาณใช้สำหรับการยกเลิกโปรแกรม #
# 1 - สัญญาณใช้สำหรับควบคุมโปรแกรม #
####################################################### #################################
check_sig_type()
{
valsig ท้องถิ่น
# รายการสัญญาณบอกเลิก (จำกัดเฉพาะรายการที่ใช้โดยทั่วไป) valsig="-ALRM -INT -KILL -TERM -PWR -STOP -ABRT -QUIT -2 -3 -6 -9 -14 -15"
echo "${valsig}" | grep -- " ${1} " > /dev/null if [ "${?}" -eq "0" ]; แล้ว
ส่งคืน 0
อื่น
ส่งคืน 1
fi
}
####################################################### #################################
# wait_for_user() #
# #
# วัตถุประสงค์: รอให้ผู้ใช้ตอบสนองหากไม่ใช่ระบบหัวขาด #
# #
####################################################### #################################
wait_for_user()
{
# รอผู้ใช้โดยค่าเริ่มต้น
[ "${HEADLESS=0}" = "0" ] && อ่าน ENTER
ส่งคืน 0
}
####################################################### #################################
# เป็นความจริง() #
# #
# วัตถุประสงค์: ยูทิลิตี้เพื่อทดสอบว่าตัวแปรเป็นจริงหรือไม่ | ใช่ | 1 #
# #
####################################################### #################################
เป็นความจริง()
{
[ "$1" = "1" ] || [ "$1" = "ใช่" ] || [ "$1" = "จริง" ] || [ "$1" = "y" ] || [ "$1" = "ท" ]
}
# สิ้นสุด /lib/lsb/init-functions
ส่งคืน 0
อื่น
ส่งคืน 1
fi
}
####################################################### #################################
# wait_for_user() #
# #
# วัตถุประสงค์: รอให้ผู้ใช้ตอบสนองหากไม่ใช่ระบบหัวขาด #
# #
####################################################### #################################
wait_for_user()
{
# รอผู้ใช้โดยค่าเริ่มต้น
[ "${HEADLESS=0}" = "0" ] && อ่าน ENTER
ส่งคืน 0
}
####################################################### #################################
# เป็นความจริง() #
# #
# วัตถุประสงค์: ยูทิลิตี้เพื่อทดสอบว่าตัวแปรเป็นจริงหรือไม่ | ใช่ | 1 #
# #
####################################################### #################################
เป็นความจริง()
{
[ "$1" = "1" ] || [ "$1" = "ใช่" ] || [ "$1" = "จริง" ] || [ "$1" = "y" ] || [ "$1" = "ท" ]
}
# สิ้นสุด /lib/lsb/init-functions
: เจอราร์ด บีคแมนส์ - [ป้องกันอีเมล] ดีเจ ลูคัส - [ป้องกันอีเมล]
: บรูซ ดับบ์ส - [ป้องกันอีเมล]
: เจอราร์ด บีคแมนส์ - [ป้องกันอีเมล] ดีเจ ลูคัส - [ป้องกันอีเมล]
: บรูซ ดับบ์ส - [ป้องกันอีเมล]
: แอลเอฟเอส 7.0
: แอลเอฟเอส 7.0
เมานต์เวอร์ต
เมานต์เวอร์ต
S
S