前言
入职一个多月,最近接到一个需求,需要在Linux系统下实现定期删除指定容器的功能。第一次接触Linux系统编程有点手忙脚乱。经过一下午的查找资料,通过面向百度编程,终于完成了任务。现总结记录一下。实现该功能由两部分工作组成:1.删除容器shell脚本文件的编写。2.定时器的设置。
一.脚本的编写
在Linux环境下,脚本文件编写方式不同于windows环境,使用命令行的形式编写。首先新建一个shell脚本,如新建一个名为delete.sh的脚本,该脚本实现定期删除主机中名为nol cmcs scip项目的镜像。
- 利用touch命令建立名为delete的空白.sh文件:
touch delete.sh
。 - 利用vim命令进入编辑模式在.sh脚本中输入代码:
vim delete.sh
。 - 进入编辑模式还需要选择操作,输入代码选用
i
命令,此时进入插入模式,输入我们的代码:
docker images|grep nol|awk '{print $3}'|xargs docker rmi -f
docker images|grep cmcs|awk '{print $3}'|xargs docker rmi -f
docker images|grep scip|awk '{print $3}'|xargs docker rmi -f
-
编辑完成点击Esc键退出编辑模式,输入
:
号进入文本退出前的设置,依次输入wq
,点击回车,表示保存输入文本退出编辑模式。利用cat命令可以查看.sh中的内容:cat delete.sh
。 -
利用./执行.sh文件:注意直接执行会显示权限不够,所以需要先利用chmod命令赋予执行权限:
chmod +x delete.sh
,再执行./delete.sh
。这时shell脚本文件就建立好了,如何实现定时功能,就要利用crontab设置周期性执行该脚本。
二.定时器的设置
crontab是周期性设置执行任务的工具。通过crontab 命令,我们可以在固定的间隔时间执行指定的系统指令或 shell script脚本。时间间隔的单位可以是分钟、小时、日、月、周及以上的任意组合。这个命令非常设合周期性的日志分析或数据备份等工作。利用crontab -h
查看是否内置crontab工具,如果显示crontab语法信息,则说明已安装。否则利用yum -y install crontabs
命令安装。利用crontab命令设置定时执行delete文件。
- 定时执行代码格式:
* * * * * command
分 时 日 月 周 命令
minute(分)可以设置0-59分
hour(小时)可以设置0-23小时
day of month(日期)可以设置1-31号
month(月份):可以设置1-12月
day of week(周):可以设置0-7星期几,其中0和7都代表星期天,或者我们也可以使用名称来表示星期天到星期一,例如sun表示星期天,mon表示星期一等等
命令:指我们要执行的文件如delete.sh文件(需要填写完整路径):
- 利用crontab命令进入新建计划模式
crontab -e
。 - 和编辑脚本文件类似,点击
i
进入插入模型,输入以下字符:
1 1 * * */root/./delete.sh
并按Esc键退出插入模式,输入:
回车进入退出选取方式模式,退出方式输入wq
,保存退出。
- 查看已经建立的计划列表利用
crontab -l
命令。
以上两步,实现了在Linux系统下,周期性删除nol cmcs scip三个项目镜像的需求。
三.附录
参考
crontab定时任务详解
一个简单的linux下设置定时执行shell脚本的示例
Linux创建可运行shell脚本: