CentOS - como usar o comando ln nessa situação?

0

Crie um arquivo como o arquivo de log no CentOS, quando esse arquivo de log for atualizado, a cópia do arquivo de log também será atualizada. Talvez eu use este comando:

ln -s logfile copy_of_logfile

Então, quando o conteúdo do logfile é adicionado, o conteúdo de copy_of_logfile também é adicionado == > está tudo bem, mas quando o conteúdo do logfile é deletado, o conteúdo do copy_of_logfile também é deletado.

Eu quero que seja quando o conteúdo do logfile é adicionado, um conteúdo do copyfoflogfile também é adicionado, e quando o conteúdo do logfile é deletado, eu quero que o conteúdo do copyfile logfile NÃO seja deletado. Por favor, me diga como fazer isso.

    
por TrungTrung 18.12.2013 / 05:41

3 respostas

1

seria uma idéia para usar o deamon syslogd? Em seu arquivo de configuração /etc/syslog.conf, você pode especificar o (s) arquivo (s) de log para sua aplicação / gravidade, etc. Para mais: link

    
por 18.12.2013 / 06:33
1
   ln -s logfile copy_of_logfile
   then logfile's content is added, copy_of_logfile's content is also added

Uhm, não. Se você criar um softlink, ainda terá apenas um único arquivo .
Qualquer ação nesse único arquivo mostrará como ambas as entradas de diretório.

Deixe-me esclarecer isso com dois exemplos:

Exemplo 1: é como se você criasse duas entradas em um catálogo de endereços do celular com o mesmo número de telefone. Você obtém o mesmo resultado ao chamar.

Exemplo 2: Usando um livro (o índice é a entrada de diretório)

Antes de vincular:

Index 
---------------------------------
About the author           Page 1
Index                      Page 2
Hansel and Gretchen        Page 3-10
Sneeuwwitje                Page 11-14
Intentionally left blank   Page 15
About the author.          Page 16
---------------------------------


E depois da suave ligação:

Index 
---------------------------------
About the author           Page 1
Index                      Page 2
Hansel and Gretchen        Page 3-10
Sneeuwwitje                Page 11-14
My copy of Sneeuwwite      See index entry for Sneeuwwite
Intentionally left blank   Page 15
About the author.          Page 16
---------------------------------

No exemplo, a história ainda acaba nas mesmas páginas. Se você editar uma das histórias, ambas serão alteradas.


Se você usa um link hard em vez de um link simples:

Index 
---------------------------------
About the author           Page 1
Index                      Page 2
Hansel and Gretchen        Page 3-10
Sneeuwwitje                Page 11-14
My copy of Sneeuwwite      Page 11-14
Intentionally left blank   Page 15
About the author.          Page 16
---------------------------------

it's ok, but logfile's content is deleted, copy_of_logfile's content is also deleted

Sim, porque é o mesmo arquivo. Não é uma cópia.

Como você deseja excluir de um dos arquivos sem excluí-lo do outro arquivo (a cópia), precisará de dois arquivos distintos.

Faça o login em dois arquivos ou divida a saída usando tee .

Uma alternativa é usar tail -f para ler todas as novas informações adicionadas ao arquivo de log original. (e adicione isso ao seu backup).

por 18.12.2013 / 06:21
0

Na verdade, existe uma maneira de obter o que você deseja: uma cópia em execução de um determinado arquivo. Pode ser obtido criando um pipe nomeado ,

   mkfifo mypipe.logfile

que, como o próprio nome sugere, é o arquivo no qual você irá escrever o log, depois lendo com o comando tee , para enviar a saída para dois arquivos idênticos:

   cat mypipe.logfile | tee -a logfile 1>> copy_of_logfile

Isso gerará automaticamente dois arquivos idênticos, que são mantidos em passo à medida que novos materiais são adicionados a cada um deles.

Se você quiser garantir que o processo nunca pare, adicione um loop while

   while [ true ]; do cat mypipe.logfile | tee -a logfile 1>> copy_log_file; done

Isso pode ser iniciado por script, iniciado na inicialização, reaberto se você quiser que ele seja executado para sempre e assim por diante.

    
por 18.12.2013 / 10:30