Pesquisa de site

Crie, exclua e grave automaticamente em arquivos na inicialização do Ubuntu


Este tutorial mostra como criar, excluir automaticamente arquivos/pastas e/ou gravar parâmetros em arquivos de configuração na inicialização no Ubuntu e em outros Linux usando o systemd.

Isso pode ser útil se alguma configuração não persistir e for redefinida para o padrão a cada inicialização, ou se você quiser limpar algo a cada inicialização ou após cada período de tempo.

Usuários avançados podem criar manualmente um script e executá-lo por meio de uma tarefa de agendamento crontab ou de um serviço systemd personalizado. Mas aqui vou mostrar como fazer o truque usando tmpfile.d, uma configuração integrada para criação, exclusão e limpeza de arquivos voláteis e temporários.

No Ubuntu, Debian, Fedora e muitas outras distribuições Linux, existem alguns serviços systemd projetados para criar automaticamente arquivos e diretórios voláteis e limpeza diária de diretórios temporários. Eles incluem:

  • systemd-tmpfiles-setup.service
  • systemd-tmpfiles-clean.timer
  • systemd-tmpfiles-setup-dev.service
  • systemd-tmpfiles-setup-dev-early.service

Para verificar se seu sistema os possui, execute systemctl status systemd-tmpfiles* em uma janela de terminal:

  • /etc/tmpfiles.d/ (recomendado)
  • /run/tmpfiles.d/
  • /usr/lib/tmpfiles.d/
  • ~/.config/user-tmpfiles.d/ (não funciona no meu caso no Ubuntu 24.04)
  • ~/.local/share/user-tmpfiles.d/ (não funciona no meu caso no Ubuntu 24.04)

Crie, remova arquivos ou pastas automaticamente na inicialização

Para criar um arquivo de configuração tmpfiles.d personalizado, basta abrir o terminal (Ctrl+Alt+T) e executar o comando:

sudo nano /etc/tmpfiles.d/test.conf

No comando, substitua test pelo nome que desejar. Ele cria e abre o arquivo no editor de texto nano de linha de comando.

Quando o arquivo for aberto, adicione as seguintes linhas para as operações correspondentes. Após a edição, você pode pressionar Ctrl+S para salvar o arquivo e Ctrl+X para sair.

Criar pasta:

Para criar automaticamente uma pasta em cada inicialização, por exemplo, crie “myfolder” em /etc, adicione as linhas abaixo:

#Type  Path           Mode   User Group  Age  Argument
d     /etc/myfolder    -    -     -     -    -

Aqui a primeira linha, começa com “#”, a linha de descrição não funciona. Na segunda linha, diz para:

  • d – diz para fazer a operação de criação se a pasta NÃO existir.
  • /etc/myfolder – especifique o caminho do diretório a ser criado.
  • ” pula para usar o padrão para Modo, Usuário, Grupo, Idade e Argumento.

Por padrão, ele usa 0775 para permissão de pasta (ler (4), escrever (2), executar (1) para proprietário e grupo (4+2+1=7), ler, executar ( 4+1=5) para outros), root para usuário e grupo.

Para escolha, você pode especificar a permissão, propriedade. E definir uma “idade” fará com que todo o conteúdo dessa pasta seja limpo após cada período de tempo.

#Type  Path                            Mode   User Group  Age  Argument
d     /home/ji/Documents/myfolder      0775    ji    ji     -    -
d     /home/ji/Documents/myfolder/test 0775    ji    ji    10d   -

O gatilho do cronômetro atua a cada 24 horas (exceto a primeira ação, que ocorre 15 minutos depois da inicialização), por isso é melhor definir a idade em dias.

Se a pasta já existir e você quiser remover todo o seu conteúdo na inicialização (depois limpar em determinado período de tempo), use D com o argumento --remove.

#Type  Path                            Mode   User Group  Age  Argument
D     /home/ji/Documents/myfolder/test 0775    ji    ji    10d   --remove

Criar arquivo:

Para criar um arquivo automaticamente na inicialização, use f ou f+. Por exemplo:

#Type  Path                     Mode   User Group  Age  Argument
d     /etc/myfolder              -     -      -     -     -
f     /etc/myfolder/xxx.conf     -     -      -      -    some text here\n

Adicione as linhas acima em um arquivo .conf no diretório /etc/tmpfiles.d, primeiro criará o diretório “/etc/myfolder” se não existir, então crie o arquivo “xxx.conf” nesse diretório e escreva “algum texto aqui” se o arquivo NÃO existir.

Aqui, \n é uma quebra de linha para criar uma nova linha. Claro, você pode pular o argumento com ‘-’ (sem aspas), então tente criar o arquivo se ele não existir.

Se o arquivo já existir, então 'f' não fará nada. Nesse caso, você pode usar f+, que substituirá o conteúdo original do arquivo (se houver) pelo novo aquele que você definiu por argumento.

#Type  Path                     Mode   User Group  Age  Argument
d     /etc/myfolder              -     -      -     -     -
f+     /etc/myfolder/xxx.conf     -     -      -      -    some text here\n

Escreva texto no arquivo:

Para escrever automaticamente algum texto em um arquivo, use w. Por exemplo:

#Type    Path                   Mode User Group  Age   Argument
w      /home/ji/Documents/333    -    -     -     -   auto write line 1

Se o arquivo NÃO existir, não fará nada! E w NÃO remove o conteúdo original do arquivo (se houver), mas apenas tenta sobrescrever desde o início.

Ou seja, se o conteúdo do arquivo original for maior que o novo conteúdo no qual você deseja gravar, isso bagunçará o conteúdo do arquivo (veja a captura de tela abaixo). Nesse caso, use f+ em vez de w, o que substituirá todo o conteúdo anterior.

Para manter o conteúdo original do arquivo e escrever no final do arquivo, use w+.

#Type    Path                   Mode User Group  Age   Argument
w+      /home/ji/Documents/333    -    -     -     -    #This is a new line\n
w+      /home/ji/Documents/3*    -    -     -     -    #write one more line\n
w+      /home/ji/Documents/33*    -    -     -     -    enable=1

NOTA: w+ não iniciará uma nova linha se não houver quebra de linha no final. Portanto, você pode adicionar \n no início do argumento para iniciar a nova linha, e também adicioná-lo no final para a próxima.

Além disso, você pode gravar vários arquivos usando um asterisco no nome do arquivo. Por exemplo, 3* corresponde a todos os arquivos cujo nome começa com 3. *.txt corresponde a todos os arquivos .txt no diretório.

NOTA: Se você usar “w” e “w+” para escrever o mesmo arquivo, então apenas o primeiro funcionará! Se você usar “f” e “f+” para criar o mesmo arquivo, apenas o primeiro funcionará.

Excluir arquivos ou pastas

Para excluir arquivos automaticamente na inicialização, use r.

Por exemplo, exclua todos os arquivos .txt, o arquivo 123, pasta vazia, na pasta Documentos do usuário:

#Type    Path                     Mode  User  Group   Age  Argument  
r      /home/ji/Documents/*.txt   -     -     -       -      -
r      /home/ji/Documents/123     -      -     -      -       -
r      /home/ji/an-empty-folder   -      -     -      -       -

Para excluir a pasta e todos os arquivos e subpastas contidas, use R:

#Type    Path                     Mode  User  Group   Age  Argument  
R      /home/ji/Documents/myfolder   -     -     -       -      -

Além disso

A configuração tmpfiles.d pode realizar ainda mais operações na inicialização, como criar um link simbólico, copiar arquivos ou diretórios e muito mais! Veja a página de manual do freedesktop.org para mais detalhes!

Artigos relacionados