sh sys-snap.sh &
¿Qué es sh
? ¿Qué es sys-snap.sh
? ¿Por qué debería poner &
al final de la línea? ¿Alguien puede explicar la sintaxis?
Sin el &
script, no volveré al indicador hasta que presione Ctrl+ C. Con &
puedo presionar enter y funciona.
&&
diferente de un solo ampersand&
?Respuestas:
sh
es el shell predeterminado compatible con Bourne (generalmente bash o dash)sys-snap.sh
es un script de shell, que contiene comandos que sesh
ejecutan. Como no publicas su contenido, solo puedo adivinar por su nombre lo que hace. Puedo encontrar un script relacionado con CPanel con el mismo nombre de archivo, que crea un archivo de registro con todos los procesos actuales, uso de memoria actual, estado de la base de datos, etc. Si el script comienza con una línea shebang (#!/bin/sh
o similar), puede hacerlo ejecutable conchmod +x sys-snap.sh
e iniciarlo directamente usando./sys-snap.sh
si está en el directorio actual.Con
&
el proceso comienza en segundo plano, para que pueda continuar utilizando el shell y no tenga que esperar hasta que finalice el script. Si lo olvida, puede detener el proceso de ejecución actual conCtrl-Z
y continuar en segundo plano conbg
(o en primer plano confg
). Para más información, ver control de trabajosfuente
sh
en usualmente solobash
odash
en sistemas basados en Linux (o OS / X reciente). En los BSD, generalmente es otra variante de Ash (el guión se basa en NetBSD sh, en sí mismo basado en Almquist Shell) o un derivado de pdksh. En unidades comerciales, generalmente es ksh88.&
y, por lo tanto, en segundo plano, solo se obtiene un nuevo indicador de shell.&&
diferente de un solo ampersand&
?Esto se conoce como
job control
bajo unix. El&
informa al shell para poner el comando en segundo plano. Esto significa que continúa ejecutando elsys-snap.sh
comando pero lo regresa a su shell para permitirle continuar haciendo comandos paralelos.Puede ver la lista de trabajos que se ejecutan actualmente con el
jobs
comando. Puede volver al comando (poner en primer plano) con el uso delfg
comando. Lo que devuelve el comando al estado en el que no ve ningún mensaje y tiene que emitir Ctrl, Cpara matar el proceso. Sin embargo, puede suspender (pausar) ese proceso, emitiendo Ctrl- Z. Esto hará una pausasys-snap.sh
y te devolverá a tu mensaje. Puede entonces fondo que (como si la hubiera emitido con la&
) con elbg
comando, y se reanuda la ejecución de esta en pausa el estado Ctrl- Zlo había puesto en.Tenga en cuenta que puede tener más de un trabajo a la vez (como se muestra en
jobs
):Puede ponerlos en segundo plano y en primer plano utilizando su número de trabajo,
%1
serásys-snap.sh
y%2
seráanother-script.sh
. Si usafg
obg
sin argumentos, ejecutará el comando en el trabajo marcado+
en eljobs
resultado anterior.fg %1
volverá a poner
sys-snap.sh
en primer plano, dejandoanother-script.sh
en segundo plano.Puede emitir la secuencia Ctrl- Cpara ejecutar trabajos sin tener que ponerlos en primer plano con el
kill
comando,kill %1
enviará el equivalente de Ctrl- Casys-snap.sh
.Si está utilizando bash shell, el
man bash
comando tiene una sección detallada debajo de la sección titulada 'CONTROL DE TRABAJO' que entra en más detalles.En cuanto al nombre de
sys-snap.sh
, bajo los nombres de archivo Unix son arbitrarios (con un par de excepciones, como los archivos de carga dinámica). No es necesario que tengan extensiones de archivo específicas para que se ejecuten como un script de shell, invoquen otros comandos comoperl
ophp
etc. Se suele usar para proporcionar claridad, que en este caso, es.sh
un Script de Shell que utiliza Bourne Shell/bin/sh
.La parte funcional de
sys-snap.sh
(cuando miras su contenido con algo como elless
comando) es el Shebang . En la primera línea probablemente encontrarás uno de:o similar. En términos básicos, se ejecuta un comando después de
#!
(como/bin/sh
) y el contenido del resto del archivo de script se alimenta de una línea a la vez. Tenga en cuenta que el archivo también debe configurarse como ejecutablechmod
para que pueda ejecutarlo como un comando. Si no se establecieron los permisos, entoncesshebang
no tiene ningún efecto, ya que obtendría el error:o si lo ejecutó por ruta explícita
./sys-snap.sh
(es.
decir, el directorio de trabajo actual) obtendría:La otra alternativa es dejarlo sin permisos de ejecución y pedirle explícitamente a / bin / sh que lo ejecute:
fuente
nohup
hace, ya que a menudo se usa junto con&
para iniciar un proceso y poder matar el shell que lo lanzó sin matar el proceso.jobs
siempre volverá vacío si es el primer comando?&
al final de un comando solo se separastdin
(pero nostdout
ostderr
), lo que implica que si su comando / script se ejecuta en segundo plano pero al escribirstdout
, puede encontrarse con una situación en laCtrl + c
que no se detendrá la salida, pero podría para escribir comandos. Esto se debe a que el proceso en segundo plano está escribiendostdout
pero no puede detenerlo porque no se está ejecutando en primer plano. Más información aquí .sh
Es una concha. Qué shell depende exactamente del sistema. Ejemplo para un sistema que utilizabash
como su shell estándar:sys-snap.sh
será un script de shell de algún tipo, porsh sys-snap.sh
lo que ejecutará el script de shell.&
hará que el proceso de shell se ejecute en segundo plano. Sin&
ella permanecerá en primer plano hasta que finalice el guión. El script funcionará de cualquier manera, es solo una cuestión de esperar a que el script finalice o no antes de ejecutar más comandos.fuente
¿Está su servidor en hostgator?
El script
sys-snap.sh
es un script especial escrito por el equipo hostgator para recopilar todos los archivos de registro y datos para el sistema, por lo que utilizan su salida para monitorear y recopilar la información del sistema.fuente