Crie um serviço systemd que altere o tempo de modificação de / dev / null

0

Eu tenho meus arquivos classificados por data para trabalhar facilmente com os arquivos mais recentes. Eu também tenho um monte de logs redirecionados para /dev/null no meu diretório home que eu gostaria de mostrar no final. Eu tentei criar um serviço systemd para isso, mas não funciona de alguma forma:

$ cat /etc/systemd/system/devnull1975.service 
[Unit]
Description=Change /dev/null modification time to 1975
After=display-manager.target

[Service]
Type=oneshot
ExecStart=/usr/bin/touch -c -t 197501010000 /dev/null

[Install]
WantedBy=default.target

Funciona se eu iniciar manualmente e estiver sendo executado na reinicialização. "after display manager" parece um ponto em que /dev/null já foi criado, mas após a reinicialização ainda tem data atual é stat output. Então, alguém pode ver qual é o problema?

    
por int_ua 23.02.2017 / 14:14

1 resposta

1

Primeiro, / dev / null é um arquivo especial, não um diretório. Seu objetivo principal é lidar com o redirecionamento de stdout e stderr. Quando os logs são redirecionados para a pasta, eles não existem mais.

Algum material de referência, aqui

Com relação aos arquivos em seu diretório pessoal, pode ser melhor alternar do comando direto: /usr/bin/touch -c -t 197501010000 /dev/null

Para

/usr/local/bin/mynewscript.sh

Embora use seu próprio nome de arquivo novo. Então, com o seu editor favorito, crie o novo arquivo, adicione conteúdos como: (Altere os nomes de acordo)

#!/bin/bash

/usr/bin/touch -m -t 197501010000 /home/username/.bzr.log
/usr/bin/touch -m -t 197501010000 /home/username/.xsessions-errors.old
/usr/bin/touch -m -t 197501010000 /home/username/.php_history
/usr/bin/touch -m -t 197501010000 /home/username/.recently-used

Definir executar, no seu arquivo:

chmod 455 /usr/local/mynewscript.sh

Em seguida, altere seu arquivo de serviço: /etc/systemd/system/devnull1975.service

[Unit]
Description=Changes modified times on log file locate /home/username/
After=graphical-session.target

[Service]
ExecStart=/bin/sh /usr/local/bin/mynewscript.sh
Type=oneshot

[Install]
WantedBy=multi-user.target
Alias=file-touch.service

Use o seguinte para verificar se nenhum erro foi encontrado no arquivo .service

systemd-analyze verify /etc/systemd/system/devnull1975.service

Consulte este link para obter mais informações sobre o systemd.

    
por dajavex71 04.03.2017 / 01:23