No meu exemplo, estou executando um comando que demora muito para ser executado (várias horas).
Realmente não me lembro se inseri make ou make -j4.
É claro que eu poderia pará-lo e pressionar a tecla ou verificar o histórico para conhecê-lo, mas isso interromperia o processo e eu não quero que isso aconteça (caso já esteja fazendo make -j4).
Existe alguma maneira de saber qual comando está sendo executado sem interromper o processo?
command-line
make
Daniel Viaño
fonte
fonte
pgrep -a make
make
você pode parar e reiniciá-lo, ele deve continuar de onde parou.Respostas:
Se você quiser ver a linha de comando completa de todas as instâncias
make
em execução no seu computador, abra um novo terminal e tente:pgrep
é um programa que pesquisa todos os processos no seu computador. Nesse caso, ele está procurando programas nomeadosmake
. A opção-a
informapgrep
para listar o ID do processo e a linha de comando completa para cada processo correspondente. (Sem-a
, apenas retornaria o ID do processo.) Para obter mais informações sobre as muitas opções do pgrep, consulteman pgrep
.fonte
pgrep
seria diferente do comando digitado na linha de comando.Enquanto a janela do terminal estiver ativa, você pode pausar (suspender) o processo pressionando Ctrl+ Z. Você pode enviar o trabalho em segundo plano digitando
bg
(seu trabalho agora continuará em segundo plano e, ao mesmo tempo, você poderá trabalhar na linha de comando; isso é equivalente a iniciar um trabalho&
no final da linha de comando). Em seguida, use as setas do cursor (para cima e para baixo) para ver qual comando você usou. Se desejar (mas isso não é necessário), você poderá colocar seu trabalho em primeiro plano digitandofg
.fonte
for X in {1..1000} ; do sleep $X ; done
, o loop será interrompido e as iterações restantes não acontecerão.jobs
, como mostra a resposta do @ ichabod) e, em seguida, retomar o trabalho viafg
.Faço algo como Stefan: ^ Z para pausar o trabalho e depois corro
jobs
. Se você tiver vários processos em execução, talvez seja necessário resolver qual trabalho foi o que você pausou, mas isso geralmente fornecerá a linha de comando. Em seguida, executefg
para continuar a execução.fonte
Uma boa maneira de ver isso dinamicamente é executar o topo, e isso informa o estado geral do sistema e os processos em execução no sistema.
Fazer um 'ps ux' mostra seus processos, juntamente com pid e outras informações, você pode usar a habilidade para eliminar algumas delas, se desejar, a página de manual é um bom recurso e, se executar uma habilidade ou matar -9, fica pegajoso travado no dispositivo aguarda etc. Você também pode enviar outros sinais para processos como -hup, obter daemons reiniciados etc.
O Top é bom, pois mostra o tamanho do processo, o tempo decorrido e os estados atuais da CPU e da memória e da troca.
Costumo fazer $ make> & make.out & e depois menos ou tail -f no arquivo de log make.out. Desde agora, o make é desanexado como um processo da minha sessão de shell.
fonte