Isso é conhecido como job controlsob unix. O &informa ao shell para colocar o comando em segundo plano. Isso significa que ele continua executando o sys-snap.shcomando, 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 jobscomando Você pode retornar ao comando (trazer para o primeiro plano) com o uso do fgcomando. 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.she retornará você ao seu prompt. Você pode, então, fundo dele (como se você tinha emitido com a &) com o bgcomando, 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, %1será sys-snap.she %2será another-script.sh. Se você usar fgou bgsem argumentos, ele executará o comando no trabalho marcado por +na jobssaída acima.
fg %1
voltará sys-snap.shao primeiro plano, deixando-o another-script.shem segundo plano.
Você pode emitir o Ctrl- Cseqüência para executar trabalhos sem ter que primeiro plano-los com o killcomando, kill %1irá enviar o equivalente a Ctrl- Ca sys-snap.sh.
Se você estiver usando o bash shell, o man bashcomando 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 perlou phpetc. Geralmente, é usado para fornecer clareza, que nesse caso, é .shum 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 lesscomando) é 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 chmodpara que você possa executá-lo como um comando. Se as permissões não foram definidas, isso shebangnã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&?