Isso é conhecido como job control
sob unix. O &
informa ao shell para colocar o comando em segundo plano. Isso significa que ele continua executando o sys-snap.sh
comando, mas retorna ao seu shell para permitir que você continue executando comandos paralelos.
Você pode ver a lista de tarefas atualmente em execução com o jobs
comando Você pode retornar ao comando (trazer para o primeiro plano) com o uso do fg
comando. O que puxa o comando de volta ao estado em que você não vê nenhum prompt e precisa emitir Ctrl- Cpara interromper o processo. No entanto, você pode suspender (pausar) esse processo, emitindo Ctrl- Z. Isso fará uma pausa sys-snap.sh
e retornará você ao seu prompt. Você pode, então, fundo dele (como se você tinha emitido com a &
) com o bg
comando, e ele vai retomar a correr a partir dele está em pausa estado Ctrl- Ztinha colocá-lo.
Observe que você pode ter mais de um trabalho por vez (como mostrado jobs
):
[1]- Running sys-snap.sh &
[2]+ Running another-script.sh &
Você pode colocá-los em segundo plano e em primeiro plano usando o número do trabalho, %1
será sys-snap.sh
e %2
será another-script.sh
. Se você usar fg
ou bg
sem argumentos, ele executará o comando no trabalho marcado por +
na jobs
saída acima.
fg %1
voltará sys-snap.sh
ao primeiro plano, deixando-o another-script.sh
em segundo plano.
Você pode emitir o Ctrl- Cseqüência para executar trabalhos sem ter que primeiro plano-los com o kill
comando, kill %1
irá enviar o equivalente a Ctrl- Ca sys-snap.sh
.
Se você estiver usando o bash shell, o man bash
comando possui uma seção detalhada na seção 'CONTROLE DE TRABALHO', que entra em mais detalhes.
Quanto ao nome de sys-snap.sh
, os nomes de arquivos sob unix são arbitrários (com algumas exceções, como arquivos do carregador dinâmico). Não é necessário que eles tenham extensões de arquivo específicas para executá-los como um script de shell, invocar outros comandos como perl
ou php
etc. Geralmente, é usado para fornecer clareza, que nesse caso, é .sh
um Shell Script usando o Bourne Shell /bin/sh
.
A parte funcional de sys-snap.sh
(quando você olha para o conteúdo com algo como o less
comando) é o Shebang . Na primeira linha, você provavelmente encontrará um dos seguintes:
#! /bin/sh
#! /bin/bash
#! /usr/local/bin/bash
ou similar. Em termos básicos, um comando após o #!
(como /bin/sh
) é executado e o conteúdo do restante do arquivo de script é alimentado com uma linha por vez. Observe que o arquivo também deve ser definido como executável chmod
para que você possa executá-lo como um comando. Se as permissões não foram definidas, isso shebang
não terá efeito, porque você receberá o erro:
bash: sys-snap.sh: command not found
ou se você o executasse por caminho explícito ./sys-snap.sh
( .
o diretório de trabalho atual), você obteria:
bash: ./sys-snap.sh: Permission denied
A outra alternativa é deixá-lo sem permissões de execução e pedir explicitamente ao / bin / sh para executá-lo:
/bin/sh sys-snap.sh &
&&
diferente de um único e comercial&
?