Saída diferente do comando “history” após reconectar via SSH

2

Por que obtenho resultados diferentes para o comando "history" para o mesmo usuário depois que reconectei uma sessão SSH desconectada?

  • eu me conecto a um servidor usando putty (SSH), digamos como root
  • Minha rede é desconectada
  • reconecto minha sessão de putty
  • Quando pressiono a tecla de seta para cima para executar novamente o último comando usado, ele mostra um comando diferente

Acredito que isso se deva à reconexão a outros pts. Estou certo?

    
por deppfx 10.05.2013 / 08:51

3 respostas

4

Isso ocorre porque o histórico de seus comandos da sessão atual é esvaziado no disco durante o logoff. E se você tiver sido desconectado, quando se conectar novamente, receberá o último histórico de liberação.

Você também pode limpar manualmente o histórico para o disco executando:

history -a

Consulte man history :

   history [n]
   history -c
   history -d offset
   history -anrw [filename]
   history -p arg [arg ...]
   history -s arg [arg ...]
          With no options, display the command history list with line numbers.  Lines listed with a * have been  modified.
          An  argument  of n lists only the last n lines.  If the shell variable HISTTIMEFORMAT is set and not null, it is
          used as a format string for strftime(3) to display the time stamp associated with each displayed history  entry.
          No intervening blank is printed between the formatted time stamp and the history line.  If filename is supplied,
          it is used as the name of the history file; if not, the value of HISTFILE is used.  Options, if  supplied,  have
          the following meanings:
          -c     Clear the history list by deleting all the entries.
          -d offset
                 Delete the history entry at position offset.
          -a     Append  the ‘‘new’’ history lines (history lines entered since the beginning of the current bash session)
                 to the history file.
          -n     Read the history lines not already read from the history file into the current history list.   These  are
                 lines appended to the history file since the beginning of the current bash session.
          -r     Read the contents of the history file and use them as the current history.
          -w     Write the current history to the history file, overwriting the history file’s contents.
          -p     Perform  history  substitution on the following args and display the result on the standard output.  Does
                 not store the results in the history list.  Each arg must be quoted to disable normal history  expansion.
          -s     Store  the  args  in the history list as a single entry.  The last command in the history list is removed
                 before the args are added.

          If the HISTTIMEFORMAT variable is set, the time stamp information associated with each history entry is  written
          to  the history file, marked with the history comment character.  When the history file is read, lines beginning
          with the history comment character followed immediately by a digit are interpreted as timestamps for the  previ-
          ous  history line.  The return value is 0 unless an invalid option is encountered, an error occurs while reading
          or writing the history file, an invalid offset is supplied as an argument to -d, or the history  expansion  sup-
          plied as an argument to -p fails.
    
por 05.05.2014 / 07:43
2

Basicamente, @frzie responde a essa pergunta, mas, para esclarecer, você tem um arquivo de histórico temporário que é criado quando você faz logon em uma sessão de shell. Quando você efetuar logoff, esse arquivo de histórico será anexado ao arquivo .history permanente armazenado em $HOME .

Como você não fez logoff, este acréscimo não aconteceu. Para testar isso, você pode emitir o comando history e comparar a saída (que inclui seu histórico temporário) com a saída de cat $HOME/.history (que é o conteúdo do arquivo .history no seu $HOME ). Essas saídas devem ser diferentes (mesmo que você veja apenas o comando history que acabou de emitir em um, mas não no outro). Agora, se você emitir o comando history -a , os arquivos devem ser mais ou menos os mesmos.

    
por 13.09.2014 / 03:50
1

Existem várias variáveis de ambiente que controlam o comportamento do histórico. Alguns deles incluem:

HISTFILE=/home/saml/.bash_history
HISTFILESIZE=1000
HISTSIZE=1000

Normalmente, o que acontece é que você tem mais de um shell aberto e que o shell sempre foi fechado por último, algumas das entradas que foram escritas anteriormente pelo shell que você fechou primeiro.

Dê uma olhada na seção Manual de Referência do Bash no comando do histórico para mais informações.

    
por 10.05.2013 / 09:10