Estoy usando CentOS 7, mi objetivo es crear un cron por cada cinco segundos, pero mientras investigaba, podemos usar cron solo por un minuto, así que lo que estoy haciendo ahora es crear un archivo shell.
hit.sh
while sleep 5; do curl http://localhost/test.php; done
pero lo golpeé manualmente haciendo clic derecho sobre él.
Lo que quiero es crear un servicio para ese archivo para que pueda iniciarlo y detenerlo automáticamente.
Encontré el script para crear un servicio
#!/bin/bash
# chkconfig: 2345 20 80
# description: Description comes here....
# Source function library.
. /etc/init.d/functions
start() {
# code to start app comes here
# example: daemon program_name &
}
stop() {
# code to stop app comes here
# example: killproc program_name
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
status)
# code to check status of app comes here
# example: status program_name
;;
*)
echo "Usage: $0 {start|stop|status|restart}"
esac
exit 0
Pero no sé qué escribir en los métodos de inicio o detención Intenté colocar el mismo contenido de hit.sh start(){}pero me dio un error }en el método de detención.

/usr/bin/myscriptFunciona bien cuando lo ejecuta solo? ¿Cuál es el resultado deecho $?cuando el script ha completado una ejecución? ¿Es 203?/usr/bin/myscript.shfunciona bien en la ejecución a través del terminal yecho$?me dio1Respuestas:
Si desea reutilizar su muestra de código, podría verse así:
Naturalmente, la secuencia de comandos que desea ejecutar como servicio debe ir, por ejemplo
/usr/local/bin/hit.sh, y el código anterior debe ir a/etc/init.d/hitservice.Para cada nivel de ejecución que necesite ejecutar este servicio, deberá crear un enlace simbólico respectivo. Por ejemplo, un enlace simbólico llamado
/etc/init.d/rc5.d/S99hitserviceiniciará el servicio para el nivel de ejecución 5. Por supuesto, aún puede iniciarlo y detenerlo manualmente a través deservice hitservice start/service hitservice stopfuente
systemdscript, por lo tanto, no se necesita sufijo. Sinsystemdembargo, deberías poder ejecutar scripts antiguos con muy bien. ¿Lo has intentadosystemctl enable hitservice?Creo que CentOS 7 y superior usa systemd. Si ese es el caso de su sistema, intente lo siguiente:
Coloque los comandos de script en los que desea ejecutar
/usr/bin/myscript.Recuerde hacer que el script sea ejecutable con
chmod +x.Crea el siguiente archivo:
/etc/systemd/system/my.service
Vuelva a cargar todos los archivos de servicio systemd:
systemctl daemon-reloadCompruebe que está funcionando iniciando el servicio con
systemctl start my.Prima:
Para probar el servicio systemd, es posible iniciar un entorno tmux con dos paneles de ventanas, donde la ventana superior monitorea la salida del script (
stdoutystderr) y la ventana inferior se puede usar para reiniciar los servicios. Esto requieretmuxser instalado, luego simplemente:Luego reinicie el servicio con:
Salir
tmuxconctrl-dy luegoctrl-c.fuente
Type=forking. Es probable que el autor de la pregunta necesite,Type=simplepero en general no se recomienda bifurcar : 0pointer.de/public/systemd-man/… . La gente ha estado tomando sus viejos guiones de inicio y envolviéndolossystemdpara que se inicie su serviciosystemd(init-script(service)). Sin embargo,systemdes un reemplazo para los scripts de inicio, por lo que debe llamar al servicio directamentesystemdpara que se vea asísystemd(service).Este es mi script como servicio:
fuente
Echa un vistazo a fpm. Es una herramienta que creará scripts de inicio para usted. Funciona en muchas plataformas (systemd, upstart, ect ..)
https://github.com/jordansissel/fpm
fuente
Vea el proyecto Bash Service Manager : https://github.com/reduardo7/bash-service-manager
Ejemplo de implementación
Ejemplo de uso
fuente