Recientemente, a menudo necesito hacer ssh en un número de computadoras
para hacer un montón de trabajo que se necesita hacer y se puede hacer al mismo tiempo. Por ejemplo: 1. Deje el equipo remoto mientras que el paquete de actualización 2. transmisión simultánea de archivos pequeños a un equipo remoto (la mayor parte del tiempo en el autenticación SSH)
Sin embargo, después de la acción que necesitan después de confirmar el trabajo anterior se ha completado, con el fin de Continuar
he estado haciendo en el pasado: # anterior update_pkg_on_machine_1update_pkg_on_machine_2update_pkg_on_machine_3 trabajo # ... trabajo detrás
A pesar de que esto asegura que el trabajo se haya completado, al mismo tiempo, pero es muy lento y hellip;
otro método posible es: # frente de trabajo update_pkg_on_machine_1 &update_pkg_on_machine_2 &update_pkg_on_machine_3
del sueño ... el trabajo detrás de
A pesar de que de esta manera se puede trabajar al mismo tiempo, pero si 10 segundos El trabajo aún no se ha completado, y el siguiente trabajo puede ser incorrecto.
Es difícil saber cuántos segundos se puede hacer un trabajo.
Uso de flock para administrar el estado del trabajo
Solía aprender el mutex cuando estaba trabajando en el sistema operativo y flock es un mutex que se puede usar en el shell. Oficial
rebaño explicación
Nos fijamos en el rebaño en el ubuntu lúcida explicación de: NAMEflock - Manejo de cerraduras de secuencias de comandos shell
SYNOPSISflock [-sxon] [-w Lockfile [-c] comando ...
flock [-sxon] [-w timeout] lockdir [-c] comando ...
flock [-sxun] [-w timeout ] utilidad fdDESCRIPTIONThis gestiona rebaño (2) cerraduras desde dentro de secuencias de comandos shell o línea thecommand
.
la primera y segunda formas envuelve la cerradura alrededor del acommand de ejecución, en una manera similar a su (1) o newgrp (1) . se bloquea archivo o directorio aspecified, que se crea (suponiendo appropriatepermissions), si no existe ya
La tercera forma es conveniente desde scripts shell, y es por lo general usedthe siguiente manera :.
(rebaño -s # 200 ... comandos ejecutados bajo llave ...) 200 > /var /lock /mylockfile
el modo utilizado para abrir el archivo del doesn ’ t asunto al rebaño, utilizando > o > > permite crear el archivo de bloqueo si aún no existe, sin embargo, se requiere permiso de escritura; utilizando < requiere que exista la filealready pero sólo se requiere el permiso leer
Por defecto, si el bloqueo no se puede adquirir de inmediato, borra waitsuntil la cerradura está disponible
OPCIONES-s, - .. -sharedObtain un bloqueo compartido, a veces llamado un bloqueo de lectura.
-x, -e, --exclusiveObtain un bloqueo exclusivo, a veces llamado un bloqueo de escritura. Thisis el valor predeterminado.
-u, --unlockDrop un bloqueo. Esto por lo general no es necesario, ya que un bloqueo isautomatically cayó cuando se cierra el archivo. sin embargo, es posible que se requiera en casos especiales, por ejemplo, si el grupo enclosedcommand puede haber un proceso de fondo en forma de horquilla, que se nodebería contiene el bloqueo .
-n, --nb, --nonblockFail (con un código de salida de 1) en lugar de esperar si el bloqueo no se puede adquirir de inmediato.
-w, --wait, - tiempo de espera secondsFail (con el código de salida 1) si el bloqueo no puede ser segundos acquiredwithin segundos. valores fraccionarios decimales están permitidos.
-o, --closeClose el descriptor de archivo en el que se lleva a cabo antes de la cerradura Comando de ejecución: es útil si el comando genera un proceso infantil que no debería estar guardando el bloqueo.
-c, --comando commandPasar un solo comando al shell con -c.
- h, --helpPrint un mensaje de ayuda
AUTHORWritten por H. Peter Anvin <. [email protected]>.
COPYRIGHTCopyright y copia; 2003-2006 H. Peter Anvin.This es libre software;. ver la fuente para condiciones de copia Hay ISNO garantía;. ni siquiera para la comercialización o adecuación para un PARTICULARPURPOSE
vER ALSOflock (2)
AVAILABILITYThe comando rebaño es parte de la util-linux -ng paquete y es availablefrom ftp://ftp.kernel.org/pub/linux/utils/util-linux-ng/.
lo más destacado
a través de rebaño, el programa primero Solo se ejecuta después de intentar adquirir la propiedad de un bloqueo (que generalmente representa un archivo). La ejecución mantendrá la propiedad del bloqueo y liberará la propiedad después del final.
Herramienta de desarrollo eficiente para programadores: taza de programación herramienta de desarrollo eficiente para programadores: taza de programación
Por ejemplo, si escribimos un script de shell en $ HOME: #! /bin /bashsleep 10date
depósito y se abre en test.sh permisos de ejecución (chmod 700 test.sh) guía
en este caso si abrimos dos shell, y aproximadamente a cabo simultáneamente: /tmp/demo.lock rebaño ~ /test.sh
¿Qué sucede en este momento?
Los usuarios deben ver que ambos shells se detengan, uno esperará 10 segundos para imprimir el tiempo y uno después de 10 segundos para imprimir el tiempo:
A
wush @ enrutador: ~ $ rebaño /tmp/demo.lock ./test.shSat Ene 4 00:55:24 CST 2014B
wush @ enrutador: ~ $ rebaño /tmp/demo.lock ./test .shSat, 4 de enero, 00:55:34 CST de 2014 -
El programa A primero toma la propiedad de /tmp/demo.lock y luego ejecuta test.sh. El programa B espera hasta el final del programa A (A devuelve la propiedad de /tmp/demo.lock), y luego obtiene la propiedad de /tmp/demo.lock. Así que el programa B es naturalmente 10 segundos más lento que el programa A.
Parámetros de rebaño
Además del comportamiento predeterminado, podemos ajustar el comportamiento del rebaño a través de los parámetros. La principal diferencia del comportamiento predeterminado es que cuando la propiedad de lock_path no está disponible, la siguiente acción será diferente. 1.flock -n lock_path xxx: cuando la propiedad no está disponible, el programa se cancela directamente y xxx no se ejecuta. 2.flock -s lock_path xxx: trata a lock_path como un bloqueo compartido y puede ser propiedad de varios programas. Así que todos pueden hacerlo de inmediato, y al mismo tiempo tienen lock_path3.flock -x lock_path xxx: tratan a lock_path como un bloqueo exclusivo, y solo pueden ser propiedad de un programa.
Nota: ¡Un lock_path no puede ser compartido y exclusivo al mismo tiempo!
Resolviendo problemas en la introducción
Entonces al combinar flock, puedo realizar varios trabajos al mismo tiempo, y esperar hasta que terminen antes de continuar con el siguiente trabajo: # 前 工作 的 flock - s lock_path update_pkg_on_machine_1 &flock -s lock_path update_pkg_on_machine_2 &flock -s lock_path update_pkg_on_machine_3 &am; Xxx no coexistirá debido a la relación mutuamente exclusiva entre compartido y exclusivo. Por lo tanto, esperará hasta que finalice el trabajo anterior (devolviendo la propiedad de lock_path).
Después VPN se establece la conexión, es necesario realizar los siguientes ajustes: 1, haga cli
Hace unos días, me reuní con un amigo en QQ para pedir ayuda, diciendo que el VPS que compré no se
¿Se bloqueará el servidor Linux? Por supuesto, he estado expuesto a cierto tipo de servidor. Después
En diferentes distribuciones de Linux, habrá diferentes programas de GUI que pueden mostrar informac
Novice Academy: active el comando NIC
Shell monitorea los cambios del archivo del sistema de Linux
Linux modificado hora de creación del archivo
Linux prohibir el acceso a determinados IP
Visión general del servidor de programación front-end Nginx
Linux 中 named.pid permiso denegado 解决 方法
Linux shell implementación cuatro aritmética (entero y punto flotante) método simple
Sincronización de Linux /diferencia asíncrona y bloqueo /no bloqueo
Resuelva el método para ver el lector de pdf en Linux
Introducción a las bibliotecas en Windows y Linux
Cómo hacer que win2003 inicie sesión automáticamente después de iniciar
Win10 abre la pantalla azul sli de la muerte y la solución
¿Cómo prohíbe Win10 el control remoto de las computadoras?
La corrupción del archivo de Windows 8 no se puede reparar automáticamente
CF y el Club de la Amistad abrieron los héroes pesados y héroes de los héroes permanentes. El
Win10 construir VPN tutorial detallado
¿Qué hago cuando veo la tarjeta de video con iQiyi?
Método de desbloqueo de banda ancha móvil Win8
Win7 computadora 8G de memoria solo muestra 7.86G disponible?
Win10 establece el método de color de protección del sistema
¿Qué puedo hacer si el archivo no se puede arrastrar en win8 /win8.1?