-3
すべてのオペレーティングシステムにはライブラリがあります。それらのほとんどは、より少ないコードを書くためにより多くの鉱石を処理する機会を与えます。 inti-functionsはこれらのライブラリの1つですが、...init-functionsの使い方は?
init-functionsとは何ですか?
すべてのオペレーティングシステムにはライブラリがあります。それらのほとんどは、より少ないコードを書くためにより多くの鉱石を処理する機会を与えます。 inti-functionsはこれらのライブラリの1つですが、...init-functionsの使い方は?
init-functionsとは何ですか?
Linuxでは、init-functionsを使用して、デーモンとプロトコルを均一な方法で管理することができます(&)。これは、すべての答えを書き換えるよりも扱いが簡単です。
init-functions
という名前で/lib/lsb/
に格納されています。
ここでは、例を持っている:
#!/bin/bash
# Script by Amir Boudani ©Amir Boudani
source /lib/lsb/init-functions # Importing init-functions - log messages
# Use for importing other scripts ore else: "source"/"."
# Use at the beginning of the path "/" to say that the path has to start from the root directory
log_success_msg "Starting test.sh" || true
echo
log_action_msg "Info message" || true # Info message
log_success_msg "Checking Files" || true # Success message
log_warning_msg "Free storage is under 10%" || true # Warning message
log_failure_msg "Starting unknown script files" || false # Failure message
echo
log_end_msg 0 || true # End message - success - resetting the line above -> log_daemon_msg
log_end_msg 1 || true # End message - failure - resetting the line above -> log_daemon_msg
log_end_msg 255 || true # End message - warning - resetting the line above -> log_daemon_msg
echo
log_progress_msg "copying file 2123" # One of the line resetting comands - progress
echo
echo
log_daemon_msg "Integrate files" || true
sleep 2
log_end_msg 0 || true
log_daemon_msg "Checkt if the directory 4234 exist" || true
sleep 2
log_end_msg 1 || true
log_daemon_msg "Storage space checking " || true
sleep 2
log_end_msg 255 || true
echo
echo
log_daemon_msg "Checking Filestorage" || true
sleep 1
log_progress_msg "Checking File 1" || true
sleep 1
log_progress_msg "Checking File 2" || true
sleep 1
log_progress_msg "Checking File 3" || true
sleep 1
log_progress_msg "Checking File 4" || true
sleep 1
log_end_msg 0 || true
echo
#---------------------------------------------------------------# Method 1 - not working for commands that are self responding
$checker # A variable that doesn't exist. To trigger an error code
log_daemon_msg "Check if the last command was an Error" || true
if [ "$?" -eq "0" ] # "$?" is the errorcode number of the last command. | 0 = There was no Errors | 1 = Error code 1
then
log_end_msg 0 || true
else
log_end_msg 1 || true
echo " There went something wrong. see log"
fi
#---------------------------------------------------------------# A way to check if a directory exist
#if [ -d "/opt/scripts" ] # Check if directory exist - example at this line: if directory /opt/scripts exist
# -d = check if the following directory exitst
# -a = check if the following file exsist
#if [ ! -d "/opt/scripts" ] # ! is a negativ operator - example at this line: if directory /opt/scripts NOT exist
# You can actually use the ! operator anywhere
#---------------------------------------------------------------# Method 2 - working for self responding commands. but the log_daemon_msg ist not working so we take log_succes/warning/failure_msg
echo
echo "type in: false/true/(nothing)"
read var1
case $var1 in # Check if variable var1 is true
true)
log_success_msg "Check if var1 is true" || true
;;
false)
log_warning_msg "Check if var1 is true" || true
echo -e " \e[33mvar1 is false.\e[0m"
;;
*)
log_failure_msg "Check if var1 is true" || true
echo -e " \e[31mthere was no input in the read statment.\e[0m"
;;
esac
'のinit-functions'一般的に新開発のために使用すべきではありませんコードの時代遅れのチャンクを話しているのSysV initをのアーティファクト、です。最新のベストプラクティスは、適切なプロセス監視システム(systemd、upstart、runit、launchdなど)を使用することです - 従来の "initスクリプト"ではありません。 –
サンプル実行スクリプトhttp://smarden.org/runit/runscripts.htmlを参照してください - あなたは5つの行* total *の下にかなり普遍的であることに気付くでしょう。したがって、ライブラリの種類は必要ありませんまったくサポート。他のプロセス監視システムの設定は、それほど簡潔ではないかもしれませんが、init-functionを古いものと無関係にすることは普遍的です。 –