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!