linux centos7 模拟垃圾回收站功能以及 crontab 定时任务的设置
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


2. 配置
找到 .bashrc 文件,增加一行 alias rm=saferm.sh
注: bashrc 文件用于保存用户的环境信息,每个可登录用户的目录文件下都有 .bashrc 这样一个隐藏文件
# 查找 .bashrc 文件
find / -name ".bashrc" # 修改 .bashrc 文件
vi /root/.bashrc
#alias rm='rm -i'
alias rm=saferm.sh


3. 测试
让环境变量生效,然后进行简单的测试,验证回收站功能配置成功
# 生效环境变量
source /root/.bashrc # 创建一个文件并删除
touch 2.txt
rm -rf 2.txt

修改 /root/.bashrc 之后,在 root 账号下删除文件或文件夹时,系统将其移动到 /root/Trash 下面
在 tomcat 用户下测试,发现文件直接被删除了,并没有将其放到“回收站”

这个是因为目前没有设置 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下了。

通过前面的测试发现,“回收站”目录在各个用户的家目录下,文件名 Trash ,因为这是 saferm.sh 里面是这样设定的
如果不想要这个路径可以自行修改。
# 查找 saferm.sh 的位置
which saferm.sh # 修改 saferm.sh 文件
vi saferm.sh

4. 定期清理回收站
回收站会占据大量的空间,需要配置 crontab 作业,定时清理回收站
# 启动 crond 服务
systemctl start crond # 查看当前用户的 crontab
crontab -l # 编辑 crontab
crontab -e
# 每周五的 15:05 在 /root/Trash/ 中寻找文件修改时间大于七天的文件进行删除操作
0 15 * * 5 find /root/Trash/ -mtime +7 -name "*" -exec rm -rf {} \;
# 查看指定用户的 crontab
crontab -l -u root



补充:
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
要把 crond 设为在开机的时候自动启动,在 /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
0 */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
linux centos7 模拟垃圾回收站功能以及 crontab 定时任务的设置的更多相关文章
- Linux删除文件实现回收站功能
转载于 https://blog.csdn.net/u014057054/article/details/52126494 从事过服务器维护的人都知道rm.rm -rf 的厉害,执行起来一点也不马虎, ...
- Linux应用之crontab定时任务的设置
实现Linux定时任务有:cron.anacron.at等,这里主要介绍cron服务. 名词解释: cron是服务名称,crond是后台进程,crontab则是定制好的计划任务表. 软件包安装: 要使 ...
- 【原】Linux环境下Shell调用MySQL并实现定时任务
对于一些周期性事务,我们可以在Linux下,使用shell脚本调用mysql数据库存储过程,并设置定时任务. 本来是要mysql数据库中创建事件任务来,定时执行存储过程,做数据传输的...使用cron ...
- vi的替换使用、如何让linux有回收站功能、系统重要文件、目录数据
1 vi的替换使用方法 vi使用的原理 (编辑文件会生成一个隐藏临时文件) 1.1 替换文件内容方法:vi (1)%s#oldboy#oldgirl#g --- 将oldboy全部替换为oldgi ...
- linux(centOS7)的基本操作(四) 定时任务——crontab
概述 对于Java开发人员,定时任务并不陌生,无非是让系统在特定时间执行特定的命令或程序.例如spring提供的@Scheduled注解.OpenSymphony提供的quartz框架,都可以实现定时 ...
- Linux CentOS7部署ASP.NET Core应用程序,并配置Nginx反向代理服务器
前言: 本篇文章主要讲解的是如何在Linux CentOS7操作系统搭建.NET Core运行环境并发布ASP.NET Core应用程序,以及配置Nginx反向代理服务器.因为公司的项目一直都是托管在 ...
- 【Linux】自建回收站
linux rm命令是即刻删除的,而且挺多人喜欢加上-f强制命令,更暴力的是删除文件夹直接 rm -rf ,这样子代表你执行完后,就完全被干掉了. 还是推荐在linux下设置回收站,写一个shell脚 ...
- Linux Crontab 定时任务 命令详解
一. Crontab 介绍 crontab命令的功能是在一定的时间间隔调度一些命令的执行. 1.1 /etc/crontab 文件 在/etc目录下有一个crontab文件,这里存放有系统运行的一些调 ...
- Linux crontab 定时任务
http://linuxtools-rst.readthedocs.io/zh_CN/latest/tool/crontab.html 19. crontab 定时任务 通过crontab 命令,我们 ...
随机推荐
- C++ Socket编程(基础)
一.基本简介 在计算机通信领域,socket 被翻译为"套接字",它是计算机之间进行通信的一种约定或一种方式. 通过 socket 这种约定,一台计算机可以接收其他计算机的数据,也 ...
- Windows下删除顽固文件夹
参考链接: https://www.cnblogs.com/azbane/p/9808802.html 第一步:修改当前文件夹所有者为管理员 takeown /f * /a /r 第二步:修改管理员权 ...
- ECShop 2.x/3.x SQL注入/任意代码执行漏洞
poc地址:https://github.com/vulhub/vulhub/blob/master/ecshop/xianzhi-2017-02-82239600/README.zh-cn.md 生 ...
- 学习笔记-CCS-MSP430F5529[快速入门篇二]
由于2021的全国电赛延期了,从今天开始打算好好整理一下使用CCS编程的经验,本篇笔记会好好整理一下我备赛期间用CCS写的程序,包括外部中断,定时器部分的定时中断,定时器输入捕获,PWM波输出,UAR ...
- 抽奖动画 - lao虎机抽奖
本文介绍一个lao虎机抽奖动画的实现,lao虎机抽奖在各类商家营销活动中非常常见,这里主要介绍动画的实现过程,其他细节不做详细分析. ps:lao虎机是敏感词,博客园不允许出现,所有老用拼音. 1. ...
- 一些Shell脚本记录
查看换行符 使用vim打开文件,输入:set ff?.根据返回结果可以文件类型 字符串 opcenter.sjb.bz [root@opcenter backup]# echo ${HOSTNAME% ...
- PPT学习总结
[一]关注 1. 内容 2. 结构 3. 配色 4. 素材 5. 构图 6. 动画 [二]技巧 1. 颜色对比 2. 动画突出 [三]参考 https://www.zhihu.com/question ...
- Javac 编译器
编译过程 Javac 编译过程大致可以分为1个准备过程和3个处理过程: 准备过程:初始化插入式注解处理器. 解析与填充符号表过程,包括: 词法.语法分析,将源代码的字符流转变为标记集合,构造出抽象语法 ...
- 【LeetCode】424. 替换后的最长重复字符
424. 替换后的最长重复字符 知识点:字符串,滑动窗口: 题目描述 给你一个仅由大写英文字母组成的字符串,你可以将任意位置上的字符替换成另外的字符,总共可最多替换 k 次.在执行上述操作后,找到包含 ...
- vue 源码详解(二): 组件生命周期初始化、事件系统初始化
vue 源码详解(二): 组件生命周期初始化.事件系统初始化 上一篇文章 生成 Vue 实例前的准备工作 讲解了实例化前的准备工作, 接下来我们继续看, 我们调用 new Vue() 的时候, 其内部 ...