process command e o uso do sinal de porcentagem

4

Estou confuso sobre como parar um trabalho usando o sinal de porcentagem com o comando kill. Não consigo encontrar nenhuma documentação nas man pages for kill que indique que o sinal de porcentagem pode ser usado. Alguém pode me explicar se essa explicação está oculta em algum outro lugar ou por que o sinal % é usado?

kill -s 19 %1 interromperia o trabalho com um ID de 1

    
por Oscalation 12.03.2016 / 04:56

3 respostas

9

O sinal % introduz uma especificação de trabalho . Simplificando, um job é um processo que foi iniciado pelo shell e pode ser executado em primeiro plano (se for, você não pode interagir com o shell), executando em segundo plano, suspenso ou já morto (mas a casca ainda não notou, caso contrário o trabalho iria embora).

%1 significa o trabalho que é a primeira entrada na tabela de tarefas do shell. Números de trabalho em instâncias de shell diferentes não estão relacionados e não estão relacionados ao ID do processo. Você pode usar o comando jobs para ver uma lista de tarefas nesse shell. Outros comandos úteis para manipular tarefas são fg e bg , para mover um trabalho para o primeiro ou segundo plano, respectivamente. Outras formas de manipular trabalhos são pressionando Ctrl + Z para suspender o trabalho em primeiro plano e executar um comando com & no final para enviá-lo diretamente para o futuro.

Existe um utilitário kill independente e também um shell chamado kill . O comando existe como um utilitário separado para que possa ser chamado de outros programas sem iniciar um shell. O comando existe como um shell embutido para que possa ser chamado mesmo se não houver recursos suficientes para iniciar um processo kill e para que ele possa entender as estruturas de dados internas do shell.

Jobs são uma estrutura de dados do shell interno, portanto, o comando kill externo não os conhece. A página man documenta o comando externo. Para encontrar documentação sobre os recursos kill relacionados a jobs, consulte a documentação do seu shell, por exemplo bash ou zsh . Em seguida, consulte a seção sobre trabalhos: bash , zsh . O manual do shell também é onde os comandos jobs , fg e bg estão documentados.

    
por 12.03.2016 / 16:19
1

Existem várias maneiras de se referir a um trabalho no shell. O caracter% introduz uma especificação de trabalho (jobspec). Número de trabalho n pode ser referido como% n. Um trabalho também pode ser chamado usando um prefixo do nome usado para iniciá-lo ou usando uma substring que aparece em sua linha de comando. Basta nomear um trabalho para colocá-lo em primeiro plano:% 1 é sinônimo de '' fg% 1 '', trazendo o job 1 do segundo plano para o primeiro plano. Da mesma forma, ''% 1 & '' retoma o trabalho 1 em segundo plano, equivalente a '' bg% 1 ''.

    
por 12.03.2016 / 05:48
-1
[root@typhoon ~]# jobs
[3]+  Stopped                 sleep 3000
[5]-  Stopped                 sleep 1001
[6]   Running                 sleep 9922 &

[root@typhoon ~]# /bin/kill %5
kill: cannot find process "%5"

[root@typhoon ~]# kill %5
[root@typhoon ~]#
    
por 19.05.2016 / 09:34

Tags