AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / ubuntu / Perguntas / 1503475
Accepted
Iano
Iano
Asked: 2024-02-14 17:44:32 +0800 CST2024-02-14 17:44:32 +0800 CST 2024-02-14 17:44:32 +0800 CST

Remoção de arquivo ao desligar

  • 772

Estou usando o Ubuntu 22.04LTS. Gostaria de criar uma pasta "temp" onde durante minha sessão eu salvo os arquivos que são, como o nome sugere, temporários. Como posso definir um script que, ao desligar, exclua automaticamente o conteúdo desta pasta?

Ex: Baixo alguns documentos que preciso para algumas tarefas mas no final das contas não preciso guardá-los, evitando assim acumular arquivos inúteis.

scripts
  • 2 2 respostas
  • 540 Views

2 respostas

  • Voted
  1. Best Answer
    rusty
    2024-02-14T23:28:00+08:002024-02-14T23:28:00+08:00

    Alternativa 01: (Ver alternativa 02 ou comentário de @Raffa para deficiência da alternativa 01.)

    Vamos criar nosso diretório temporário e possuí-lo como usuário normal para que possamos escrever nele como usuário normal:

    sudo mkdir /my_temp_files/
    sudo chown $USER:$USER /my_temp_files/
    

    Vamos escrever um script para remover os arquivos temporários na inicialização do sistema. Armazenaremos o script no seguinte diretório:

    sudo mkdir -p /opt/remove_my_temp_files/bin/
    

    Crie um arquivo chamado remove_my_temp_files.shcomo:

    sudo touch /opt/remove_my_temp_files/bin/remove_my_temp_files.sh
    sudo chmod 755 /opt/remove_my_temp_files/bin/remove_my_temp_files.sh
    sudo chown root:root /opt/remove_my_temp_files/bin/remove_my_temp_files.sh
    

    Escreva o seguinte neste arquivo:

    #!/bin/bash
    
    if [[ -d /my_temp_files ]] ; then
      rm -fr /my_temp_files/*
      rm -fr /my_temp_files/.*
    fi
    

    Agora, crie um arquivo chamado remove_my_temp_files.servicecomo:

    sudo touch /etc/systemd/system/remove_my_temp_files.service
    sudo chmod 644 /etc/systemd/system/remove_my_temp_files.service
    sudo chown root:root /etc/systemd/system/remove_my_temp_files.service
    

    E escreva o seguinte neste arquivo:

    [Unit]
    Description=Removes My Temporary Files.
    
    [Service]
    Type=oneshot
    ExecStart=-/bin/bash -c '/opt/remove_my_temp_files/bin/remove_my_temp_files.sh'
    
    [Install]
    WantedBy=multi-user.target
    

    Agora, finalmente habilite remove_my_temp_files.servicecomo:

    sudo systemctl enable remove_my_temp_files.service
    

    Agora, os arquivos e diretórios criados neste /my_temp_files/diretório serão excluídos a cada inicialização do sistema.

    Alternativa 02:

    Como @Raffa sugere em seus comentários abaixo, minha maneira de fazer isso rm /path/to/dir/*é limitada pelo tamanho permitido da linha de comando, e usar o serviço do sistema é um pouco demais para uma tarefa que pode ser simplesmente realizada, como crontabele sugere, aqui está a resposta alternativa:

    Escreva o seguinte código em $HOME/bin/remove_user_temp.sh:

    #!/bin/bash
    
    declare MY_TEMP_DIR="$HOME/my_temp_dir/"
    
    if [[ -e "$MY_TEMP_DIR" ]] ; then
      rm -rf "$MY_TEMP_DIR"
      if [[ ! -e "$MY_TEMP_DIR" ]] ; then
        mkdir "$MY_TEMP_DIR"
      fi
    fi
    

    Torne este script executável:

    chmod +x $HOME/bin/remove_user_temp.sh
    

    Edite crontabcom:

    crontab -e
    

    Escolha o editor de arquivo de sua preferência, se permitido, e comece editando o cron job. No final do arquivo, adicione:

    @reboot $HOME/bin/remove_user_temp.sh
    

    Salve sua edição e saia do crontab. Isso também excluirá os arquivos do seu diretório temporário na reinicialização do sistema.

    Alternativa 03:

    A alternativa mais fácil é colocar seus arquivos temporários /tmp/ou /dev/shm/diretório. Os arquivos armazenados /tmpserão excluídos na próxima vez que o sistema for inicializado, enquanto os arquivos /dev/shmserão armazenados na memória do computador (e não no disco) e serão excluídos quando o computador for desligado ou reinicializado.

    • 4
  2. mcendu
    2024-02-14T22:17:57+08:002024-02-14T22:17:57+08:00

    Existe uma maneira integrada no Linux , chamada tmpfs, que pode conseguir exatamente isso. Para usá-lo, crie uma pasta tmpfs, e tudo dentro da pasta depois que você a criou, tmpfs irá evaporar quando não for mais tmpfs ou quando o computador for desligado. A desvantagem é que os arquivos nas pastas tmpfs só podem residir na RAM ou no swap.

    # mount -t tmpfs tmpfs temp
    

    O sistema de arquivos não armazena se uma pasta for tmpfs. Para marcar permanentemente uma pasta como tmpfs, você deve editar /etc/fstab:

    tmpfs   /tmp    tmpfs   defaults        0       2
    

    Além do tmpfs, os serviços do Ubuntu limpam automaticamente o /tmpdiretório na inicialização (obrigado raj), para que você possa colocar quaisquer arquivos temporários lá.

    • 3

relate perguntas

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Existe um comando para listar todos os usuários? Também para adicionar, excluir, modificar usuários, no terminal?

    • 9 respostas
  • Marko Smith

    Como excluir um diretório não vazio no Terminal?

    • 4 respostas
  • Marko Smith

    Como descompactar um arquivo zip do Terminal?

    • 9 respostas
  • Marko Smith

    Como instalo um arquivo .deb por meio da linha de comando?

    • 11 respostas
  • Marko Smith

    Como instalo um arquivo .tar.gz (ou .tar.bz2)?

    • 14 respostas
  • Marko Smith

    Como listar todos os pacotes instalados

    • 24 respostas
  • Martin Hope
    Flimm Como posso usar o docker sem sudo? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    led-Zepp Como faço para salvar a saída do terminal em um arquivo? 2014-02-15 11:49:07 +0800 CST
  • Martin Hope
    ubuntu-nerd Como descompactar um arquivo zip do Terminal? 2011-12-11 20:37:54 +0800 CST
  • Martin Hope
    TheXed Como instalo um arquivo .deb por meio da linha de comando? 2011-05-07 09:40:28 +0800 CST
  • Martin Hope
    Ivan Como listar todos os pacotes instalados 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    David Barry Como determino o tamanho total de um diretório (pasta) na linha de comando? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher "Os seguintes pacotes foram retidos:" Por que e como resolvo isso? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford Como os PPAs podem ser removidos? 2010-07-30 01:09:42 +0800 CST

Hot tag

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve