Como executo dois processos em andamento de uma só vez no linux / bash?

3

Gostaria de saber como posso executar dois processos em andamento ao mesmo tempo no Linux / bash. Basicamente, eu tenho um servidor web Node e um servidor MJPG-Streamer. Eu quero executar ambos os processos de uma só vez, mas eles são processos em andamento. Ouvi falar sobre executá-los como processos em segundo plano, mas quero que eles tenham a mesma prioridade que um processo em primeiro plano.

    
por Tshepang 29.01.2014 / 21:04

2 respostas

4

Quando você diz prioridade, você provavelmente se refere ao bom nível do processo. Para citar Wikipedia :

nice is a program found on Unix and Unix-like operating systems such as Linux. It directly maps to a kernel call of the same name. nice is used to invoke a utility or shell script with a particular priority, thus giving the process more or less CPU time than other processes. A niceness of −20 is the highest priority and 19 or 20 is the lowest priority. The default niceness for processes is inherited from its parent process, usually 0.

A execução de um processo em segundo plano não afeta o seu nível. É totalmente o mesmo que quando você está rodando em primeiro plano.

Assim, você pode facilmente executar seu aplicativo / processo em segundo plano, invocando-o com um sinal '&':

my-server &

Você também pode enviar um processo de primeiro plano para o segundo plano, pressionando ctrl + z (pausa a execução) seguido por bg + digite .

Você pode listar as tarefas em segundo plano com o comando jobs .

Para voltar ao primeiro plano, você deve descobrir seu ID de tarefa com o comando jobs e executar fg [job-ID] (por exemplo: fg 1 )

As tarefas em segundo plano enviarão todas as suas saídas para o seu shell. Se você não quiser ver o resultado, precisará redirecioná-lo para / dev / null:

my-server 1>/dev/null &

... que irá redirecionar a saída normal para o vazio. Erros ainda serão visíveis.

    
por 29.01.2014 / 21:57
0

Se você quer rodar os dois processos a partir do mesmo console ou xterm em primeiro plano, você pode considerar executá-los dentro de uma tela ou em sessões tmux, que são multiplexadores de terminal. Os processos não serão executados no mesmo processo de shell, mas sob processos de shell separados.

Por exemplo usando a tela:

  • Iniciar screen
  • Execute o primeiro processo
  • Pressione Ctrl-a c para iniciar uma segunda sessão de shell
  • Iniciar o segundo processo
  • Alterne entre os dois subshells usando ctrl-a ctrl-a

Consulte o manual de tela para obter mais informações.

    
por 12.02.2014 / 23:02