Pregunta ¿Está bien dejar un pequeño script de bucle sin fin en ejecución en el servidor? [cerrado]


Parece que necesito actualizar el escenario completo aquí para todos.

Nuestros usuarios deben recoger lo que necesiten de nuestro servidor de archivos para sincronizarlo con una ubicación remota, pero los usuarios tienen permisos limitados en el servidor de archivos para mover archivos. Así que aquí está mi tarea:

cree una herramienta que el usuario pueda usar para recoger datos y sincronizarlos con el control remoto   ubicación. Las herramientas de DFS y de terceros no son opciones, deben ser códigos hechos   por nuestra cuenta y todo debe estar funcionando en segundo plano.

Esta es mi manera de hacerlo y está funcionando ahora. He hecho 3 piezas de componentes:

** Una aplicación **** HTA con VBS se encuentra en la PC del usuario y proporciona al usuario un explorador de archivos para recoger datos.

** B **** Una ubicación compartida que permite que HTA escriba la ruta de datos en un archivo txt. cualquier ruta en este archivo de texto se convertirá en un enlace suave en una ubicación final.

** C **** Una ubicación final en el servidor de archivos contiene todos los enlaces de software.

Aquí es cómo básicamente funciona:

El usuario escoge un dato del servidor de archivos usando el HTA que hice, escribirá la ruta completa de los datos al archivo 000.txt en la ubicación compartida. Mi secuencia de comandos de bucle sin fin supervisa esta ubicación compartida, si el archivo 000.txt es creado por cualquier usuario en esta carpeta compartida, llamará a otra secuencia de comandos para leer todas las rutas de datos en este 000.txt y usar mklink para hacer enlaces de software basados ​​en las rutas proporcionadas por el usuario y los enlaces de salida a la ubicación final, luego borra el archivo 000.txt. Todos los enlaces en esta ubicación final serán sincronizados por robocopy durante la noche en horario Hay más funciones requeridas en mi aplicación HTA, no hay necesidad de hablar de ello.

Como aquí nadie habla de codificación, borré mi código de bucle sin fin. Este script de bucle comienza con Windows y se ejecuta como un servicio. Puedo comenzar / parar cuando quiera. Básicamente solo monitorea esa carpeta compartida, si algún usuario crea un archivo 000.txt allí, se activará. mklink.bat para hacer softlins y 000.txt será borrado por mklink.bat cuando se hacen softlink. La razón por la que uso un bucle sin fin en lugar del programador de tareas es que el usuario debe ver los resultados en esa ubicación final justo después de enviar la ruta de datos. Pensé que el intervalo mínimo del programador de tareas es de un minuto (@MikeAWood dijo que puede ser de 1 segundo. ¡Gracias!), Así que hice un bucle infinito de 2 segundos de intervalo para monitorear esa carpeta compartida.

Mi pregunta fue la siguiente:

¿Es esta una buena idea ejecutar un bucle sin fin en el servidor como siempre?   monitorear una carpeta?

Supervisé el uso de recursos en el servidor mientras este script está   corriendo. No veo ningún consumo significativo ... así que supongo que será   inofensivo ¿verdad?

Si el programador de tareas puede manejar un intervalo de 1 segundo, Supongo que mi pregunta está resuelta. Gracias a todos.

O si tienes una mejor manera de hacer esto o cualquier otra opinión sobre la forma en que lo hago.


4
2018-04-15 17:51


origen


Is that OK to leave a small endless loop script running on server? No, no, no lo es. Este es el tipo de cosa que hace que los administradores senior se rompan los dedos de los administradores junior. Le preguntaría qué está tratando de hacer, pero me preocupa que me diga ... hay una manera mucho mejor de hacer lo que sea que esté tratando de hacer, y eso es lo que debería estar haciendo. Si no es nada más, use una tarea programada, pero estoy bastante seguro de que debería refactorizar seriamente su enfoque de lo que sea que esté haciendo. - HopelessN00b
@rootloop tu jefe quiere crear un entorno insoportable. tal vez porque es anticuado. tal vez porque piensa que significa que nunca pueden despedirlo. cualquiera sea la razón, es una buena señal de que debe buscar empleo en otro lugar. No aprenderás muchas habilidades útiles y transferibles en un entorno como ese. - Grant
¿Entonces tu jefe te está haciendo rodar tu propio sistema operativo de servidor? No utilizando la característica del sistema operativo que era diseñado Resolver este problema es absurdo. - Michael Hampton♦
JTFC. Esa solución suena inestable y frágil. No me importa si tu jefe no te deja usar DFS-R, debes configurar un entorno de prueba, usar DFS-R para que puedas probar que está equivocado. Recuerde, es más fácil pedir perdón, que permiso. - Tom O'Connor
Esta pregunta está siendo discutida en meta. - Michael Hampton♦


Respuestas:


Como alternativa general a esto: ponga su script en el Programador de tareas y actívelo cada minuto, dos minutos, lo que sea. Esto es más confiable, ya que su proceso sobrevivirá a reinicios o errores de script. El uso de tareas programadas no solo permite que su proceso sobreviva a los reinicios, como ya se mencionó, sino que también puede haga que su tarea se pueda implementar en una gran cantidad de servidores a través de las Preferencias de la Política de Grupo. Su solución actual es un enemigo tanto para la escalabilidad como para la confiabilidad.

En cuanto al guión real del que estás hablando, parece que estás reinventando un Monster de Frankenstein de DFS-R y / o Robocopy.


DFS-R es una herramienta de replicación de archivos madura y escalable que está integrada en Windows Server. Debes ver si puedes usarlo para esta situación. Microsoft ha puesto en DFS-R mucha más capacidad intelectual de ingeniería de la que podrías poner en un script que hace lo mismo.

Además, incluso si no puede usar DFS-R por alguna razón, robocopy tiene un /mir Switch, que reflejará directorios. Si realmente no puede usar DFS-R por alguna razón, al menos use algo como esto en un script.


23
2018-04-15 18:41



Bueno, entonces, una buena parte de su trabajo es administrar las expectativas técnicas de su cadena de administración. Si no está preparado para la tarea, probablemente debería buscar un nuevo trabajo. - mfinni
@RootLoop lo siento, no hay una respuesta correcta para "mi jefe no me deja usar la herramienta correcta". Para lo que vale, puse más de una recomendación aquí. - MDMarra
you should probably look for a new job Este es probablemente el peor consejo que he leído - krisFR
@krisFR: aún no te has quemado lo suficiente como para que las personas que están sobre sus cabezas creen desastres. Solo espera ... eventualmente te sucederá. - Evan Anderson
@krisFR Si está en un tren y puede ver que se está yendo por un precipicio, solo puede discutir con el conductor si debe apretar el freno durante tanto tiempo antes de que se convierta en un punto discutible, momento en el que puede permanezca en el tren y espere un milagro, o tome su sentido común y salte del tren. - Doktor J


Debe ser felicitado por preguntar acerca de su enfoque. Es fácil de ejecutar con la primera idea que tiene, pero es mejor validar con otros.

Varios problemas con su enfoque:

  • Debe reiniciarse manualmente cada vez que se reinicie el servidor.
  • Requiere que permanezca conectado a la consola con credenciales que tengan acceso a origen y destino
  • Ya hay herramientas que hacen esto (DFS, tareas programadas, etc.)

(Algunos de estos problemas pueden abordarse como lo mencionó en el servicio). Dicho esto, solo usted puede evaluar la validez de cualquier solución particular al problema que enfrenta. Al menos ahora tienes opciones.


9
2018-04-15 18:45



El script comenzará con windows. Hice este archivo por lotes ejecutando como un servicio ... El DFS no es una opción como lo que me dijo el jefe ... - Root Loop


Seguramente hay mejores formas de hacerlo que ejecutando un bucle sin fin. Los bucles sin fin son dolor y causan frustración en todos los niveles para todos. Por favor no hagas eso.


5
2018-04-15 18:09



Supervisé el uso de recursos en el servidor mientras esta secuencia de comandos se está ejecutando. No veo ningún consumo significativo ... así que supongo que será inofensivo, ¿no? - Root Loop
Es inofensivo en este momento, sí. Pero en el futuro puede ser un código redundante, o si el archivo está bloqueado, ¿qué pasaría? - SonalKhodiyar
Mirar solo el rendimiento del sistema durante las operaciones normales es no Una evaluación integral de riesgos. - mfinni


Tengo curiosidad por qué lo preguntas. Varias personas han ofrecido soluciones alternativas y la respuesta parece ser que se te ordenó hacerlo de esta manera. ¿Está buscando alternativas o está buscando municiones para volver a su gerente y protestar haciéndolo de esta manera?

Las razones para no hacerlo de esta manera se han enumerado en otras respuestas:

  • es propenso a fallar porque no sobrevivirá a una falla, ni a un reinicio del sistema, ni a ningún tipo de error de procesamiento.

  • requiere un esfuerzo de su parte (a diferencia de un proveedor) para mantener

  • Hay riesgos de seguridad para este método.

  • es relativamente ineficiente

En cuanto a las alternativas, yo también tuve una mala experiencia con DFS y utilicé DoubleTake Replication con excelentes resultados. Sin embargo, una versión posterior de DFS resolvió mis problemas con DFS y ahora usamos eso para la replicación de DR a través de una WAN.


5
2018-04-15 22:12