sh sys-snap.sh &
O que é sh
? O que é sys-snap.sh
? Por que eu deveria colocar &
no final da linha? Alguém pode explicar a sintaxe?
Sem o &
script, você não retornará ao prompt até pressionar Ctrl+ C. Com &
eu posso pressionar enter e funciona.
&&
diferente de um único e comercial&
?Respostas:
sh
é o shell padrão compatível com Bourne (geralmente bash ou dash)sys-snap.sh
é um script de shell, que contém comandos que sãosh
executados. Como você não publica o conteúdo, só posso adivinhar pelo nome, o que ele faz. Posso encontrar um script relacionado ao CPanel com o mesmo nome de arquivo, que cria um arquivo de log com todos os processos atuais, uso atual da memória, status do banco de dados etc. Se o script iniciar com uma linha shebang (#!/bin/sh
ou similar), você poderá executá-lo comchmod +x sys-snap.sh
e inicie-o diretamente usando./sys-snap.sh
se estiver no diretório atual.Com
&
o processo iniciado em segundo plano, você pode continuar usando o shell e não precisar esperar até que o script seja concluído. Se você o esquecer, poderá interromper o processo atual em execuçãoCtrl-Z
e continuar em segundo plano combg
(ou em primeiro plano comfg
). Para obter mais informações, consulte Controle de tarefas.fonte
sh
geralmente apenasbash
oudash
em sistemas baseados em Linux (ou OS / X recente). Nos BSDs, geralmente é outra variante do Ash (o traço é baseado no NetBSD sh, ele próprio no Almquist Shell) ou um derivado do pdksh. Nos escritórios comerciais, geralmente é ksh88.&
e, portanto, em segundo plano, você receberá apenas um novo prompt de shell.&&
diferente de um único e comercial&
?Isso é conhecido como
job control
sob unix. O&
informa ao shell para colocar o comando em segundo plano. Isso significa que ele continua executando osys-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 dofg
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 pausasys-snap.sh
e retornará você ao seu prompt. Você pode, então, fundo dele (como se você tinha emitido com a&
) com obg
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
):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ê usarfg
oubg
sem argumentos, ele executará o comando no trabalho marcado por+
najobs
saída acima.fg %1
voltará
sys-snap.sh
ao primeiro plano, deixando-oanother-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- Casys-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 comoperl
ouphp
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 oless
comando) é o Shebang . Na primeira linha, você provavelmente encontrará um dos seguintes: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ávelchmod
para que você possa executá-lo como um comando. Se as permissões não foram definidas, issoshebang
não terá efeito, porque você receberá o erro:ou se você o executasse por caminho explícito
./sys-snap.sh
(.
o diretório de trabalho atual), você obteria:A outra alternativa é deixá-lo sem permissões de execução e pedir explicitamente ao / bin / sh para executá-lo:
fonte
nohup
faz, pois é frequentemente usado em conjunto com&
para iniciar um processo e ser capaz de matar o shell que o lançou sem interromper o processo.jobs
sempre retornará vazio se for o primeiro comando?&
no final de um comando apenas desanexastdin
(mas nãostdout
oustderr
), o que implica se o seu comando / script está sendo executado em segundo plano, mas está sendo gravado emstdout
, você pode se deparar com uma situação emCtrl + c
que não interromperá a saída, mas poderá para digitar comandos. Isso ocorre porque o processo em segundo plano está sendo gravado,stdout
mas você não pode interrompê-lo porque não está sendo executado em primeiro plano. Mais informações aqui .sh
é uma concha. Qual shell depende exatamente do sistema. Exemplo para um sistema que usabash
como seu shell padrão:sys-snap.sh
será algum tipo de script de shell, portanto, elesh sys-snap.sh
será executado.&
fará com que o processo do shell seja executado em segundo plano. Sem&
ele, permanecerá em primeiro plano até o script terminar. O script funcionará de qualquer maneira, é apenas uma questão de esperar que o script termine ou não antes de executar outros comandos.fonte
Seu servidor está no hostgator?
O script
sys-snap.sh
é um script especial escrito pela equipe do hostgator para coletar todos os arquivos e dados de log do sistema, para que eles usem sua saída no monitoramento e na coleta de informações do sistema.fonte