Nginx # Nginx compilar instalación e interrupción

Compile e instale el control de señal de trampa de nginx && shell

Scripts y requisitos de scripts nginx de instalación de origen

# 安装路径和配置文件路径
#!/bin/bash
# Author:kakaops
# Email:[email protected]

#shell: 写一个脚本编译安装nginx
#1、脚本只能在/opt下执行
#2、脚本只能有root用户执行
#3、可以由用户输入版本
#4、用户执行安装路径和配置文件路径
#5、安装完成做好环境变量,方便用户可以直接操作
#6、扩展:如果用户不想安装了(ctrl+c) 那么清理环境

source /etc/init.d/functions

trap "rm_rvf" 2
rm_rvf(){
    
    
    rm -rvf /opt/nginx/*
    rm -rvf "$install_path"
    rm -rvf "$conf_path"
    mv "$install_path"{
    
    .bak,}
    mv "$conf_path"{
    
    .bak,}
    rm -rvf /usr/local/nginx/
    rm -rvf /var/log/nginx/
    rm -rvf /var/lock/nginx
    exit
}

# 判断当前路径是不是/opt
curl_path=`pwd`
[ "$curl_path" != "/opt" ] && echo "请在/opt目录下执行" && exit

# 判断当前是否root账户(也可以判断$UID是不是0来进行判断是不是root用户)
[[ ! $(id |awk -F'[()]' '{
    
    print $2}') =~ root ]] && failure && echo "请用root账户执行" && exit

# 判断yum源是否可用
yum repolist &>/dev/null
[ $? -ne 0 ] && echo "yum源不可以用于安装依赖环境"  && exit || echo "yum 可以使用"


# 选择安装的版本
while true
do
    echo "请选择要安装版本号(16、17、18、19)"
    read -p ">>:" num
    if [ "$num" ] && [[ "$num" =~ ^[0-9]+$ ]];then
        install_url=http://nginx.org/download/nginx-1."$num".0.tar.gz
        break
    else
        failure ; echo -e "\e[5;31m输入有误,请重新输入\e[0m"
        continue
    fi
done

#http://nginx.org/download/nginx-1.16.0.tar.gz
#http://nginx.org/download/nginx-1.17.0.tar.gz
#http://nginx.org/download/nginx-1.18.0.tar.gz
#http://nginx.org/download/nginx-1.19.0.tar.gz

# 安装路径和配置文件路径
while true
do
    read -p "输入nginx安装路径>>:" install_path
    read -p "输入nginx配置文件路径>>:" conf_path
    cd "$install_path" &>/dev/null && cd "$conf_path" &>/dev/null
    if [ $? -eq 0 ] && [ "$install_path" ] && [ "$conf_path" ];then
        break
    else
        n=${install_path:0:1}
        m=${conf_path:0:1}
        if [[ "$n" =~ "/"  ]] && [[ "$m" =~ "/"  ]];then
            mkdir "$install_path" &>/dev/null
            mkdir "$conf_path" &>/dev/null
            break
        else
            echo "输入错误,请重新输入"
            continue
        fi
    fi
done

# 安装nginx
yum -y install gcc gcc-c++
yum install -y pcre pcre-devel
yum install -y openssl openssl-devel
yum install -y zlib zlib-devel
useradd nginx
yum -y install wget
wget "${install_url}"
tar xzf nginx-1."$num".0.tar.gz -C /usr/local/
cd /usr/local/nginx-1."$num".0
wget https://github.com/openresty/echo-nginx-module/archive/v0.61.tar.gz
tar xf v0.61.tar.gz
./configure --prefix="${install_path}" --group=nginx --user=nginx --sbin-path=/usr/local/nginx/sbin/nginx --conf-path="${conf_path}"/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --http-client-body-temp-path=/tmp/nginx/client_body --http-proxy-temp-path=/tmp/nginx/proxy --http-fastcgi-temp-path=/tmp/nginx/fastcgi --pid-path=/var/run/nginx.pid --lock-path=/var/lock/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --with-pcre --with-http_realip_module --with-stream # --add-module=./echo-nginx-module-0.61 --add-module=./ngx_req_status-master
make && make install
export PATH=$PATH:/usr/local/nginx/sbin/

# 配置环境变量方便用户使用 
cat >/etc/profile/nginx.conf<<EOF
export NGINX_HOME=${install_path}
export PATH=${install_path}/sbin:$PATH
EOF

Análisis de comandos utilizado en el script

Uso del comando cat

覆盖原有文本:
cat >test.txt<<EOF
the 1 line
the 2 line
the 3 line
EOF
追加的原有文本尾部:
cat >>test.txt<<EOF
the 4 line
the 5 lien
EOF

">" sobrescribir símbolo, ">>" agregar símbolo

Para múltiples variables y múltiples líneas de salida a un archivo, hay una sustitución automática de variables. Cuando se utiliza cat << EOF, no desea realizar sustitución de variables, sustitución de comandos, expansión de parámetros, etc. en el contenido para
evitar la sustitución de variables

一、对 $·\ 进行转义

cat >> a.sh << EOF
echo \`hostname\`
echo $HOME
EOF

 二、在分界符EOF前添加反斜杠\,或者用单引号、双引号括起来

cat >> a.sh << \EOF
echo `hostname`
echo $HOME
EOF

cat >> a.sh << "EOF"
echo `hostname`
echo $HOME
EOF


cat >> a.sh << 'EOF'
echo `hostname`
echo $HOME
EOF

EOF se puede reemplazar a voluntad, pero el último EOF debe escribirse en el cuadro superior

comando cat para fusionar archivos

3.将几个文件合并为一个文件: $cat file1 file2 > file
参数:
-n 或 --number 由 1 开始对所有输出的行数编号
-b 或 --number-nonblank 和 -n 相似,只不过对于空白行不编号
-s 或 --squeeze-blank 当遇到有连续两行以上的空白行,就代换为一行的空白行
-v 或 --show-nonprinting
例:
把 textfile1 的档案内容加上行号后输入 textfile2 这个档案里
cat -n textfile1 > textfile2

el número después de salir

Cuando sale de 0, echo $? Devuelve 0 en el entorno de llamada. Es decir, el entorno de llamada cree que su programa se ejecuta correctamente.
Cuando sale de 1, suele ser un error definir este 1, pero también pueden ser otros números. En muchos programas del sistema, este número de error tiene un significado acordado. Pero si no es 0, significa que el programa está funcionando mal. El entorno de llamada puede juzgar si su programa está bien según el valor de retorno.
Si usa el script a para llamar al script b, para juzgar si b regresa normalmente en a, es para identificar de acuerdo con la salida 0 o 1.
Después de ejecutar b, se considera que $? Es el
número de salida del valor de retorno
. El rango del número es 0 ~
255 y
256 significa 0, que es más de 255 , lo que significa otro ciclo de 0 ~ 255, y así sucesivamente

comando trampa

Tres, el comando trap para el procesamiento de señales del script de shell
   trap es un comando de shell incorporado, el comando trap está dedicado a capturar señales. Por ejemplo, la señal de interrupción enviada por ctrl + c al terminal y así sucesivamente. Una vez capturada la señal, se pueden realizar una serie de operaciones, la señal se puede enviar a través del teclado o se puede utilizar el pid de señal de apagado para enviar la señal.

Trampa de señales de "comandos" (comillas dobles)

Las señales trap "" ignoran las señales de señal, trap "" 1 2 3 24 o trap "" HUP INT QUIT TSTP
  puede ser múltiple, como trap "" INT indica que la señal SIGINT se ignora, y presionar Ctrl + C no hará que el script salga. Otro ejemplo es trap "" HUP que indica que la señal SIGHUP se ignora, incluso cuando la red está desconectada, no se puede salir del script de las
señales trap para restaurar la señal. Utilice trap 1 2 3 24 o trap HUP INT QUIT TSTP para restaurar el valor predeterminado.
  Si no se especifica la parte del comando, entonces Simplemente restaure el procesamiento de la señal. Por ejemplo, trap INT indica que Ctrl + C sale de la
señal trap -p e imprime la configuración actual de trap.
Trap -l Imprime todas las señales. Puede usar directamente el número delante de la señal para representar la señal. Stty -a puede listar señales de interrupción y teclados. La
trampa correspondiente "comandos" EXIT ejecuta los comandos especificados por los comandos cuando el script sale.
  Podemos usar trampas en los scripts de shell para definir nuestros propios manejadores de señales, al igual que usar la señal en c

Introducción a las señales de Linux

  1. SIGHUP Esta señal se envía cuando finaliza la conexión del terminal de usuario (normal o anormal), generalmente cuando finaliza el proceso de control del terminal, para notificar cada trabajo en la misma sesión, y luego ya no están asociados con el terminal de control.
  2. Señal de terminación (interrupción) del programa SIGINT, emitida cuando el usuario escribe caracteres INTR (generalmente Ctrl-C)
  3. SIGQUIT es similar a SIGINT, pero está controlado por el carácter QUIT (generalmente Ctrl-). El archivo central se genera cuando el proceso sale debido a la recepción de SIGQUIT, que es similar a una señal de error de programa en este sentido.
  4. SIGILL ejecutó una instrucción ilegal, generalmente es causada por un error en el propio ejecutable o por un intento de ejecutar un segmento de datos, esta señal también puede generarse cuando la pila se desborda.
  5. SIGTRAP se genera mediante instrucciones de punto de interrupción u otras instrucciones de captura y lo utiliza el depurador.
  6. SIGABRT se genera cuando el programa encuentra un error y llama a abortar.
  7. SIGIOT se genera mediante la instrucción iot en PDP-11, que es la misma que SIGABRT en otras máquinas.
  8. Dirección ilegal SIGBUS, incluido el error de alineación (alineación) de dirección de memoria, por ejemplo: acceso a un entero de cuatro palabras, pero su dirección no es múltiplo de 4.
  9. SIGFPE se emite cuando se produce un error fatal de operación aritmética. Incluye no solo errores aritméticos de coma flotante, sino también todos los demás errores aritméticos como desbordamiento y división por 0.
  10. SIGKILL se utiliza para terminar el programa inmediatamente, esta señal no se puede bloquear, procesar o ignorar.
  11. SIGUSR1 está reservado para usuarios
  12. SIGSEGV intentó acceder a la memoria no asignada a sí mismo, o intentó escribir datos en una dirección de memoria sin permiso de escritura.
  13. SIGUSR2 está reservado para usuarios
  14. SIGPIPE Tubería rota
  15. SIGALRM Señal de temporización del reloj, que calcula la hora real o la hora del reloj La función de alarma utiliza esta señal.
  16. Señal de fin (terminación) del programa SIGTERM, que se diferencia de SIGKILL en que puede bloquearse y procesarse. Generalmente se usa para pedirle al programa que salga normalmente. El comando de shell kill genera esta señal por defecto.
  17. SIGCHLD Cuando el proceso hijo finaliza, el proceso padre recibirá esta señal.
  18. SIGCONT permite que un proceso detenido continúe en ejecución. Esta señal no se puede bloquear. Se puede usar un controlador para permitir que el programa complete una tarea específica cuando cambia del estado detenido a continuar. Por ejemplo, vuelva a mostrar el mensaje
  19. SIGSTOP detiene (detiene) la ejecución del proceso Nótese la diferencia entre terminar e interrumpir: el proceso aún no ha finalizado, pero la ejecución está suspendida, esta señal no se puede bloquear, procesar o ignorar.
  20. SIGTSTP detiene el proceso, pero la señal se puede procesar e ignorar. Esta señal se emite cuando el usuario escribe el carácter SUSP (generalmente Ctrl-Z)
  21. SIGTTIN Cuando un trabajo en segundo plano quiere leer datos del terminal de usuario, todos los procesos del trabajo recibirán la señal SIGTTIN. De forma predeterminada, estos procesos dejarán de ejecutarse.
  22. SIGTTOU es similar a SIGTTIN, pero se recibe al escribir en el terminal (o al modificar el modo del terminal).
  23. SIGURG se genera cuando llegan al socket datos urgentes o fuera de banda.
  24. SIGXCPU excede el límite de recursos de tiempo de la CPU. Este límite se puede leer / cambiar mediante getrlimit / setrlimit
  25. SIGXFSZ supera el límite de recursos de tamaño de archivo.
  26. Señal de reloj virtual SIGVTALRM Similar a SIGALRM, pero calcula el tiempo de CPU ocupado por el proceso.
  27. SIGPROF es similar a SIGALRM / SIGVTALRM, pero incluye el tiempo de CPU utilizado por el proceso y el tiempo de llamada del sistema.
  28. SIGWINCH Emitido cuando cambia el tamaño de la ventana.
  29. El descriptor de archivo SIGIO está listo para operaciones de entrada / salida.
  30. SIGPWR Fallo de energía

Supongo que te gusta

Origin blog.csdn.net/kakaops_qing/article/details/109012977
Recomendado
Clasificación