首页主机资讯Ubuntu Recycle如何设置定时清理任务

Ubuntu Recycle如何设置定时清理任务

时间2025-11-28 09:50:04发布访客分类主机资讯浏览530
导读:Ubuntu 回收站定时清理的设置 一 原理与回收站路径 Ubuntu 的回收站由 GNOME 管理,文件实际位于用户主目录的 ~/.local/share/Trash/,常用子目录为 files(存放文件)与 info(存放元数据)。图...

Ubuntu 回收站定时清理的设置

一 原理与回收站路径

  • Ubuntu 的回收站由 GNOME 管理,文件实际位于用户主目录的 ~/.local/share/Trash/,常用子目录为 files(存放文件)与 info(存放元数据)。图形化的“回收站/回收站图标”并不会自动清空,需要借助脚本与定时任务实现自动清理。

二 方案一 Cron 定时清理(推荐)

  • 1)创建清理脚本(更安全,便于扩展)
    • 示例脚本:
      • 仅当前用户回收站:
        #!/usr/bin/env bash
        TRASH="$HOME/.local/share/Trash"
        rm -rf "$TRASH/files"/* "$TRASH/info"/*
        
      • 所有用户回收站(需 sudo,谨慎):
        #!/usr/bin/env bash
        for u in /home/*;
             do
          [[ -d "$u/.local/share/Trash/files" ]] || continue
          rm -rf "$u/.local/share/Trash/files"/* "$u/.local/share/Trash/info"/*
        done
        
    • 赋权:
      chmod +x /path/to/clean-trash.sh
      
  • 2)添加到当前用户的定时任务
    • 编辑:
      crontab -e
      
    • 常用时间示例(每天凌晨 2:00 清空当前用户回收站):
      0 2 * * * /usr/bin/bash /path/to/clean-trash.sh
      
    • 其他示例(每周一 08:00 清空):
      0 8 * * 1 /usr/bin/bash /path/to/clean-trash.sh
      
    • 查看任务:
      crontab -l
      
  • 3)说明
    • 使用脚本可一次性清理 filesinfo,避免残留元数据导致回收站显示异常;如需清理所有用户,脚本需以 sudo 运行,并在 sudoers 中配置免密或采用 root 的 crontab。

三 方案二 使用 autotrash 按时间或空间策略清理

  • 安装:
    sudo apt-get update
    sudo apt-get install autotrash
    
  • 常用用法
    • 删除回收站中超过 30 天的文件(当前用户):
      autotrash -d 30
      
    • 当可用空间低于 10GB 时,删除最早的文件(至少保留最近 7 天的):
      autotrash --max-free 10240 -d 7
      
    • 定时执行(例如每天 03:00 运行):
      crontab -e
      0 3 * * * /usr/bin/autotrash -d 30
      
  • 说明
    • autotrash 仅操作当前用户的回收站,策略更灵活,适合“按天/按剩余空间”的自动清理需求。

四 方案三 systemd 定时器(适合系统级或复杂逻辑)

  • 1)创建一次性服务
    sudo nano /etc/systemd/system/trash-cleaner.service
    
    内容示例(清理所有用户的 files 与 info):
    [Unit]
    Description=Trash Cleaner Service
    [Service]
    Type=oneshot
    ExecStart=/usr/bin/find /home -path '*/.local/share/Trash/files' -type f -delete
    ExecStart=/usr/bin/find /home -path '*/.local/share/Trash/info' -type f -delete
    
  • 2)创建定时器
    sudo nano /etc/systemd/system/trash-cleaner.timer
    
    内容示例(每天 02:00 执行):
    [Unit]
    Description=Run Trash Cleaner daily at 02:00
    [Timer]
    OnCalendar=daily
    Persistent=true
    [Install]
    WantedBy=timers.target
    
  • 3)启用与启动
    sudo systemctl daemon-reload
    sudo systemctl enable --now trash-cleaner.timer
    sudo systemctl list-timers --all
    
  • 说明
    • systemd 方式便于集中管理、日志与依赖,适合需要更复杂逻辑或系统范围清理的场景。

五 注意事项与排错

  • 路径正确性:GNOME 回收站为 ~/.local/share/Trash/files~/.local/share/Trash/info;若使用其他桌面环境或自定义位置,请先确认实际路径。
  • 权限与安全:清理所有用户回收站需 root 权限;脚本与命令务必先手动测试,避免误删。
  • 定时任务调试:可临时将时间设为“几分钟后”验证;使用绝对路径(如 /usr/bin/rm/usr/bin/bash)减少环境变量差异带来的问题;查看日志(如 journalctl -u trash-cleaner.timer)定位执行状况。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Ubuntu Recycle如何设置定时清理任务
本文地址: https://pptw.com/jishu/758755.html
Linux下Node.js项目如何备份与恢复 Linux与Node.js结合有哪些优势

游客 回复需填写必要信息