centOS定时任务-cron服务
最近在训练模型的过程中,经常会因为内存爆炸而停止模型训练过程,而且因为内存占满停止的训练进程甚至都没有任何的报错提示。
1、需要减少num_worker的数量,降低需要占用内存的数据数量
2、可以通过free -h监控内存的占用情况
3、可以通过linux的清除缓存命令来手动的对缓存进行清除
4、在验证1-3有效的前提下通过linux下定时任务来定时的对缓存进行清理动作
1、发现训练无故暂停且没有错误log输出
经过debug流程发现问题来源,再通过free命令发现cache确实在训练过程中呈现逐渐增大的迹象。
2、编写内存释放脚本
echo "开始清理缓存"
sudo sh -c 'sync && echo 1 > /proc/sys/vm/drop_caches'
sudo sh -c 'sync && echo 2 > /proc/sys/vm/drop_caches'
sudo sh -c 'sync && echo 3 > /proc/sys/vm/drop_caches'
#sudo sync && echo 1 > /proc/sys/vm/drop_caches
#sudo sync && echo 2 > /proc/sys/vm/drop_caches
#sudo sync && echo 3 > /proc/sys/vm/drop_caches
echo "清理结束"
注释掉的部分会在运行过程中报错,因为加sudo 会给后面的 shell 命令授权, 但仅此而已. 如果后面还接有其他命令, 就会显示Permission denied, 因为后面的命令并没有被授权
而 sh -c “command …” 就是对后面的一整条命令整体授权, 所以多个命令需要使用 sh -c
3、定时运行脚本
在CentOS系统中,定时执行命令通常依赖于cron服务,它通过crontab命令来设置。以下是配置和使用cron服务的基本步骤。
相关命令
安装cron服务:这将安装cron相关的包,包括crontabs工具,用于管理cron作业。
sudo yum install crontabs
启动和启动cron服务:
sudo systemctl start crond
sudo systemctl enable crond
配置定时任务:
vim /etc/crontab
# 或者 crontab -e (立即生效)
重启定时任务:
service crond restart
常见的用法:
usage: crontab [-u user] file
crontab [-u user] [ -e | -l | -r ]
(default operation is replace, per 1003.2)
-e (edit user's crontab) 编辑用户命令
-l (list user's crontab) 列表
-r (delete user's crontab) 删除用户任务
-i (prompt before deleting user's crontab) 在删除前确认
-s (selinux context)
crontab的资料也可以参考:linux 定时执行脚本