¿Cómo ejecutar mi script después de que SuSE haya terminado de iniciarse?

¿Cómo ejecutar mi script después de que SuSE haya terminado de iniciarse?

Quiero que mi servidor me notifique (mediante un gruñido) que finalizó el (re)inicio. Tengo listo el archivo php que envía el gruñido, pero no sé en qué archivo debo agregar la línea.

¿Qué archivo necesito para agregar mi código para que se ejecute solo después de que finalice el arranque de SuSE?

Respuesta1

(open)SUSE utiliza /etc/init.d/after.localpara este propósito. Simplemente agregue los comandos que necesita ejecutar en ese archivo. Tenga en cuenta que esto funciona bien con SystemV init, pero con systemd esto necesitaría que AFAIK se resuelva de manera diferente.

Respuesta2

Sintaxis más nueva para Suse Linux Enterprise 11 SP2 (¿y openSUSE?)

La mejor manera sería crear un script de shell que llame a su script PHP. Este script de shell debería tener en su encabezado el siguiente comentario:

#!/bin/sh
### BEGIN INIT INFO
# Provides:          nothing
# Required-Start:    $all
# Default-Start:     3 5
# Default-Stop:      4
# Short-Description: single_line_description
# Description:       multiline_description
### END INIT INFO

Puedes encontrar una plantilla típica (con muchos comentarios explicativos) en /etc/init.d/skeleton. Esta plantilla incluye el código necesario para conectar su script PHP. Verá un caso de inicio en el que tendrá que llamar a su script PHP.
He descartado una serie de parámetros opcionales en el encabezado porque no parece que los necesite.

Importante
Es importante utilizar el esqueleto al menos la declaración de caso (veracciones de scripts de inicio), e implementar al menos el caso de inicio. En el caso inicial, ahí es donde llamar a su script.

Puede encontrar aquí un pequeño ejemplo de script que se llamará al final del arranque:ver mi esencia. Puse un nivel de ejecución no válido para Default-Stop, pero de alguna manera el script todavía se llama durante el apagado. De todos modos, se ejecuta el código en el caso "detener", no el del caso "inicio" mientras se apaga.

Una vez que haya escrito su script, cópielo para /etc/init.dasumir que su script de inicio se llama notificación de arranque, entonces haría (como root):

chown root:root boot-notification
chmod 0750 boot-notification
mv boot-notification /etc/init.d/

Luego necesita "registrar" el script en el sistema de inicio. Utilizará el insservcomando (de nuevo como root) o puede utilizar YaST:

insserv boot-notification

Luego puede verificar que el script sea uno de los últimos en ejecutarse examinando cada nivel de inicio. Si elige solo el nivel de ejecución 3, puede hacer esto:

ls -l /etc/init.d/rc3.d/S*

Esto devolverá una lista de enlaces a scripts de inicio. El enlace a su script debe estar al final (o cerca de él) de la lista.

Nota: Si desea experimentar con la forma más dinámica de escribir scripts de inicio, le recomendaría leer estas 2 páginas:

Respuesta3

Para OpenSUSE 12.2 (Mantis), elguionpara "después de local" debería ser /etc/init.d/after-local, y es posible que deba habilitarlo a través de systemctl, así...

Apermitir/etc/init.d/after-local,

systemctl enable after-local.service

Acomprobar estadode /etc/init.d/after-local,

systemctl status after-local.service

Respuesta4

Descubrí que hay 2 formas de hacerlo:

  1. Lo primero y más importante es abrir la terminal y escribir:

sudo crontab -e

luego escribe

@reboot sudo <command_to_execute_at_startup>

  1. En segundo lugar puedes crear un archivo de servicio.usando este método

información relacionada