Các lệnh này là defined như một phần của Linux Standards Base (LSB), như được ghi chú bởi @AndreKR.
Tuy nhiên, trên một số hệ thống như Redhat (và có thể SUSE), tùy thuộc vào gói được cài đặt, các chức năng này có thể không được xác định tại vị trí được chỉ định bởi LSB, là /lib/lsb/init-functions
. Thay vào đó chúng được xác định trong phạm vi /etc/init.d/functions
. Ngoài ra, trong một số phiên bản, biến thể Redhat của /etc/init.d/functions
thiếu chức năng được xác định bởi LSB start_daemon
.Nếu bạn thêm đoạn mã sau vào đầu tập lệnh của mình, đoạn mã phải được di chuyển trên hầu hết các bản phân phối/lượt cài đặt:
if [[ -f /lib/lsb/init-functions ]]; then
. /lib/lsb/init-functions
elif [[ -f /etc/init.d/functions ]]; then
. /etc/init.d/functions
# Pretend to be LSB-compliant
function start_daemon() {
daemon $*
}
else
echo "Linux LSB init function script or Redhat /etc/init.d/functions is required for this script."
echo "See http://refspecs.linuxfoundation.org/LSB_4.1.0/LSB-Core-generic/LSB-Core-generic/iniscrptfunc.html"
exit 1
fi
Không, nhưng 'kill' và' pidof' cũng có thể di chuyển. –