Por que não está funcionando?

0

Então eu executei o comando find / .bash_profile para ver se ele existia em qualquer lugar no meu Mac antes de criar um. Pesquisando o computador inteiro, obviamente, leva um minuto, então eu queria executá-lo em segundo plano (algo que eu não tentei fazer antes), então eu adicionei um & ao final, assim: find / .bash_profile &

No entanto, em vez de executá-lo em segundo plano e deixar-me fazer outras coisas, isso apenas tornou o processo ininterrupto! Ele continuou rodando em primeiro plano, mas Ctrl + C não tinha mais nenhum efeito; só pode ser parado fechando completamente a instância do terminal.

O que estou perdendo aqui?

    
por Aerovistae 29.01.2015 / 01:06

3 respostas

3

Na verdade, ele está sendo executado em segundo plano e você pode fazer outras coisas, mas sempre que gerar algo, ele será enviado para o terminal atual.

Sugestão: find / -name .bash_profile >my_result.txt 2>/dev/null &

Isso salva a saída em um arquivo e descarta todos os erros (como erro de permissão negada). Você pode verificar o status, espiando no arquivo de saída tail my_result.txt ou digitando jobs .

Se você precisar matar o trabalho, digite kill %1 , em que 1 é o número do trabalho em jobs .

    
por 29.01.2015 / 01:22
3

Tem certeza de que o processo estava em primeiro plano? Só porque ele estava escrevendo saída para o terminal não significa que estava em primeiro plano.

Se você tem um comando que produz saída e deseja executá-lo em segundo plano, você deve redirecionar a saída, como:

find / -name .bash_profile > find_results &

É normal que o processo em segundo plano seja imune a interrupções ( Ctrl + C ), para que você possa interromper seu trabalho em primeiro plano sem interferir no (s) trabalho (es) em segundo plano. (Note, BTW, que você errou o comando.)

    
por 29.01.2015 / 01:15
1

Você se deparou com uma implicância minha com find . Tente usar a opção -print , como

find / -name '.bash_profile' -print > some_file

Você também pode estar se deparando com um problema não escapando ou citando uma única letra do ponto no nome do arquivo. find suporta a sintaxe RegEx para que o ponto no nome do arquivo possa ser mal interpretado. Qualquer um dos exemplos abaixo deve abordar isso

find / -name 'some_file.txt' ...

ou

find / -name some_file\.txt ...

As aspas simples são mais flexíveis porque você não precisa escapar de cada caractere de controle e é mais fácil encapsular caracteres como @ ou /

    
por 29.01.2015 / 07:54

Tags