2021-08-04

1. 安装

环境:CentOS Linux release 7.5.1804 (Core)



# 将 saferm.sh 拷贝到 /bin 目录下面
git clone git://github.com/lagerspetz/linux-stuff
mv linux-stuff/scripts/saferm.sh /bin


linux centos7 模拟垃圾回收站功能_环境搭建

linux centos7 模拟垃圾回收站功能_linux_02

 

2. 配置

找到 .bashrc 文件,增加一行 alias rm=saferm.sh

注: bashrc 文件用于保存用户的环境信息,每个可登录用户的目录文件下都有 .bashrc 这样一个隐藏文件



# 查找 .bashrc 文件
find / -name ".bashrc"

# 修改 .bashrc 文件
vi /root/.bashrc



#alias rm='rm -i'
alias rm=saferm.sh


linux centos7 模拟垃圾回收站功能_重启_03

linux centos7 模拟垃圾回收站功能_环境搭建_04

 

3. 测试

让环境变量生效,然后进行简单的测试,验证回收站功能配置成功



# 生效环境变量
source /root/.bashrc

# 创建一个文件并删除
touch 2.txt
rm -rf 2.txt


linux centos7 模拟垃圾回收站功能_linux_05

修改 /root/.bashrc 之后,在 root 账号下删除文件或文件夹时,系统将其移动到 /root/Trash 下面

在 tomcat 用户下测试,发现文件直接被删除了,并没有将其放到“回收站”

linux centos7 模拟垃圾回收站功能_环境搭建_06

这个是因为目前没有设置 tomcat 用户家目录下的 .bashrc(/home/tomcat/.bashrc),所以,如果要对每个用户都生效,有两种解决方案:



# 1:修改每个用户家目录下的 .bashrc 文件,修改其私有环境变量
vi /home/用户名/.brashrc (或者在该用户下 vi ~/.brashrc)

# 2:修改 /etc/bashrc 文件,这个是修改系统全局环境变量
vi /etc/bashrc


例如,在修改 /etc/bashrc 后,执行 source /etc/bashrc 使其生效,

测试发现在 tomcat 用户下也会将删除的文件移动到/home/tomcat/Trash下了。

linux centos7 模拟垃圾回收站功能_环境搭建_07

通过前面的测试发现,“回收站”目录在各个用户的家目录下,文件名 Trash ,因为这是 saferm.sh 里面是这样设定的

如果不想要这个路径可以自行修改。



# 查找 saferm.sh 的位置
which saferm.sh

# 修改 saferm.sh 文件
vi saferm.sh


linux centos7 模拟垃圾回收站功能_bash_08

 

4. 定期清理回收站

如果一直不清理回收站,就会占据大量的空间,所以需要配置 crontab 作业,定时清理回收站



# 启动 crond 服务
systemctl start crond

# 查看当前用户的 crontab
crontab -l

# 编辑 crontab
crontab -e



0 * * * 6 find /root/Trash/ -mtime +7 -name "*" -exec rm -rf {} \;
# 查看指定用户的 crontab
crontab -l -u root


linux centos7 模拟垃圾回收站功能_linux_09

linux centos7 模拟垃圾回收站功能_命令详解_10

 

补充:

crond 服务是 Linux 的内置服务,但它不会开机自动启动。可以用以下命令启动和停止服务:



# 开启
/sbin/service crond start
systemctl start crond

# 停止
/sbin/service crond stop
systemctl stop crond

# 重启
/sbin/service crond restart
systemctl restart crond

# 重新加载配置
/sbin/service crond reload
systemctl reload crond


要把 cron 设为在开机的时候自动启动,在 /etc/rc.d/rc.local 脚本中加入 /sbin/service crond start 即可



vi /etc/rc.d/rc.local



/sbin/service crond start


一些基本操作



# 查看当前用户的 crontab
crontab -l

# 查看指定用户的 crontab ,此处以 root 为例
crontab -l -u root

# 编辑 crontab
crontab -e

# 删除 crontab
crontab -r


基本格式 :

* * * * * command

分 时 日 月 周 命令

第1列 分钟 1~59 每分钟用 * 或者 */1 表示

第2列 小时 1~23(0 表示 0 点)

第3列 日期 1~31

第4列 月份 1~12

第5列 星期 0~6(0 表示星期天)

第6列 要运行的命令


一些例子



# 每晚的 21:30 重启 apache
30 21 * * * /usr/local/etc/rc.d/lighttpd restart

# 每月 1、10、22 日的 4:45 重启 apache
45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart

# 每周六、周日的 1:10 重启 apache
10 1 * * 6,0 /usr/local/etc/rc.d/lighttpd restart

# 每天 18:00 至 23:00 之间每隔 30 分钟重启 apache
0,30 18-23 * * * /usr/local/etc/rc.d/lighttpd restart

# 每星期六的晚上 11:00 重启 apache
0 23 * * 6 /usr/local/etc/rc.d/lighttpd restart

# 每一小时重启 apache
* */1 * * * /usr/local/etc/rc.d/lighttpd restart

# 晚上 11:00 到早上 7:00 之间,每隔一小时重启 apache
* 23-7/1 * * * /usr/local/etc/rc.d/lighttpd restart

# 每月的 4 号与每周一到周三的 11:00 重启 apache
0 11 4 * mon-wed /usr/local/etc/rc.d/lighttpd restart

# 一月一号的 4:00 重启 apache
0 4 1 jan * /usr/local/etc/rc.d/lighttpd restart


 

 

 


作者:元月二一