preserve o histórico do bash em várias janelas de terminal
<p>consistentemente, tenho mais de um terminal aberto. em qualquer lugar de duas a dez, fazendo várias coisas. agora, digamos que eu reinicie e abro outro conjunto de terminais. alguns se lembram de certas coisas, outros se esquecem.</p><p>eu quero uma história que:</p><ul> <li>lembra tudo de todos os terminais</li> <li>é acessível instantaneamente a partir de qualquer terminal (por exemplo, se eu <code>ls</code> em um, alternar para outro terminal já em execução e pressionar para cima, <code>ls</code> aparece)</li> <li>não se esqueça do comando se houver espaços na frente do comando.</li> </ul><p>qualquer coisa que eu possa fazer para que o bash funcione dessa maneira?</p>
<p>adicione o seguinte a ~/.bashrc</p><pre><code># avoid duplicates histcontrol=ignoredups:erasedups # when the shell exits, append to the history file instead of overwriting it shopt -s histappend # after each command, append to the history file and reread it prompt\_command="${prompt\_command:+$prompt\_command$'\n'}history -a; history -c; history -r" </code></pre>
acabei de descobrir um utilitário bem poderoso de controle de processos no terminal o nome dele é htop e com ele é possível fazer o que você quer mas vai ter que configurar ele para fazer isso no próprio utilitário

edit: [[htop]](https://plus.diolinux.com.br/uploads/default/original/2x/b/bf9b441cc78eb9fabbadaa634f575feeca2b97d8.png "htop.png")

eu consegui configurar e ordenar ele para uso de leitura e escrita do … dá pra ficar alternando de boa. inclusive isso é uma função prevista nas telas de login do linux.

o maior problema é a duplicação de aplicativos (gedit/mousepad, thunar/nautilus, etc.) mas é só apagar o outro conjunto de aplicativos quando você se decidir. <p>você pode enviar uma mensagem para todos os consoles com a parede de comando.</p><p>para enviar notificações em x, há notificação-envio que envia uma notificação para o usuário atual na tela atual. (pela sua pergunta, acho que você já conhece este.) você pode desenvolver isso com alguns scripts bash. basicamente, você tem que descobrir quais usuários estão em quais x-displays. depois de obter essas informações, você pode usar o envio de notificação desta forma:</p><pre><code>display=:0 sudo -u fschmitt notify-send "message" </code></pre><p>onde fschmitt é o usuário no display 0. você pode analisar a saída do comando "who" para localizar todos os usuários e seus displays. a saída é parecida com esta</p><pre><code>[edinburgh:~]$ who markmerk3 tty7 2010-09-23 10:59 (:0) markmerk3 pts/1 2010-09-30 13:30 (:0.0) fschmitt pts/2 2010-10-08 11:44 (ip-77-25-137-234.web.vodafone.de) markmerk3 pts/0 2010-09-29 18:51 (:0.0) seamonkey pts/6 2010-09-27 15:50 (:1.0) markmerk3 pts/5 2010-09-27 14:04 (:0.0) seamonkey tty8 2010-09-27 15:49 (:1) markmerk3 pts/13 2010-09-28 17:23 (:0.0) markmerk3 pts/3 2010-10-05 10:40 (:0.0) </code></pre><p>veja, há dois usuários executando sessões x, markmerk3 na tela 0 e seamonkey na tela 1. acho que você precisa grep for tty [0-9] * e garantir que no final da linha haja (: [0 -9.] *) para se livrar dos logins do console e extrair o id de exibição da string entre os parênteses.</p> <p>enviar uma nova linha <code>\n</code> executará o comando. <code>.end()</code> sairá do shell.</p><p>modifiquei o exemplo para trabalhar com o bash enquanto estou no osx.</p><pre><code>var terminal = require('child\_process').spawn('bash'); terminal.stdout.on('data', function (data) { console.log('stdout: ' + data); }); terminal.on('exit', function (code) { console.log('child process exited with code ' + code); }); settimeout(function() { console.log('sending stdin to terminal'); terminal.stdin.write('echo "hello $user. your machine runs since:"\n'); terminal.stdin.write('uptime\n'); console.log('ending terminal session'); terminal.stdin.end(); }, 1000); </code></pre><p>a saída será:</p><pre><code>sending stdin to terminal ending terminal session stdout: hello root. your machine runs since: stdout: 9:47 up 50 mins, 2 users, load averages: 1.75 1.58 1.42 child process exited with code 0 </code></pre> <p>é <code>b</code> (<kbd>shift</kbd>-<kbd>b</kbd>) é o atalho para <code>previous buffer</code> no <code>w3m</code> jargão.</p><p>veja o <a href="http://w3m.sourceforge.net/manual">manual</a> ou uma breve introdução <a href="http://www.howtogeek.com/103574/how-to-browse-from-the-linux-terminal-with-w3m/">aqui</a> .</p> <p>o que significa "o tempo todo"? se acontecer uma vez por dia, eu escreveria um pequeno roteiro para testar os serviços para o estado de execução para descobrir se eles param em um horário específico. então tente descobrir o que mais está acontecendo ao mesmo tempo.</p><p>se acontecer a cada poucos minutos, monitoraria os processos com o 'monitor de processo' do sysinternal para descobrir quais arquivos/threads são acessados ​​por último antes de cair.</p> <p>bruno. quando temos um processo que sai da jvm para um banco ou um navegador precisamos abrir um canal de comunicação, como se fosse um túnel entre a jvm e as outras aplicações. só que esse túnel consome processamento e memória então depois de usar você tem que fechar</p> <p>sempre use <code>rsync</code> para copiar arquivos, porque é ótimo.</p><p>para ignorar arquivos existentes:</p><pre><code>rsync --ignore-existing --recursive /src /dst </code></pre><p>leia o <a href="http://linux.die.net/man/1/rsync">manual</a> e pesquise muitos exemplos excelentes. especialmente a combinação com o ssh faz com que <code>rsync</code> seja uma ótima ferramenta para conexões lentas e não confiáveis, devido à sua <code>--partial</code> opção. adicionar <code>--verbose</code> para ver quais arquivos estão sendo copiados. verifique também a infinidade de opções relacionadas à preservação de permissões, usuários e registros de data e hora.</p> quando você concatena duas strings, uma nova variável é criada na memória e a anterior é descartada. dessa forma, se você fizer várias concatenações em uma string, vários espaços na memória serão util... <p>geralmente, você deseja acessar os itens no menu lugares, localizado à direita de aplicativos, no canto superior esquerdo da tela.</p><p>a opção "computador" fornece uma visão dos dispositivos de armazenamento removíveis no seu computador (unidade de cd, unidades usb, etc.), bem como do sistema de arquivos. para obter uma visão geral do sistema de arquivos, vá para locais&gt; computador&gt; sistema de arquivos. isso deve abrir os títulos de uma janela "/ - navegador de arquivos" com todo o conteúdo do seu sistema de arquivos principal, que geralmente é o conteúdo do seu disco rígido.</p><p>para seus documentos pessoais e outros arquivos de usuário, você pode abrir o marcador "pasta pessoal" (geralmente na parte superior do menu locais) ou um dos outros marcadores da primeira seção.</p><p>todos os ícones nas duas primeiras seções do menu locais abrirão o sistema de arquivos explorer no ubuntu, chamado nautilus, embora a janela provavelmente se intitule "navegador de arquivos".</p>