01-linux创建定时任务
在linux下创建定时任务通常使用cron(command run on table可以这么记)服务 cron是一个基于时间的任务调度程序,可以在特定时间或周期性地执行任务 以下是创建定时器任务的步骤:
1.编辑crontab任务
使用crontab命令来编辑当前用户的定时任务列表:
cronble -e
2.添加定时任务
在cronble文件中,每一行代表一个定时任务 定时任务的格式如下:
* * * * * command
分钟(0-59)
小时(0-23)
日期(1-31)
月份(1-12)
星期几(0~7, 0和7都表示星期天)
例如,每天凌晨2点执行一个脚本 /path/to/script.sh :
0 2 * * * /path/to/script.sh
3.保存并退出
编辑完成后,保存并退出编辑器 cronble会自动加载新的定时任务
4.查看当前用户的定时任务
可以使用以下命令查看当前用户的定时任务列表:
cronble -l
5.删除定时任务
要删除所有定时任务,可以使用以下命令:
cronble -r
示例
假设你想每隔5分钟执行一次 /path/to/another_script.sh,可以在cronble文件中添加以下行:
*/5 * * * * /path/to/another_script.sh
注意事项:
路径命令:确保命令或脚本的路径是正确的
权限:确保脚本有执行权限,可以使用chmod + x/path/to/script.sh来赋予执行权限
日志记录:为了调试和记录,可以将输出重定向到日志文件 例如:
0 2 * * * /path/to/script.sh >> /path/to/logfile.txt 2>&1
这样可以帮助你在linux下创建和管理定时任务
以下是一个实例:
cronble -e
36 17 * * * ~/schedule_task/schedule_clone_code.sh >> ~/schedule_task/logfile1.txt
*/1 * * * * ~/schedule_task/schedule_clone_code.sh >> ~/schedule_task/logfile2.txt
#!/bin/bash # 判断文件大小 log_path=$(eval echo "~/schedule_tasks") # 用于将~展开为当前用户的主目录 log_file="$log_path/logffile.log" log_file_bak="$log_path/backup_$(date +%Y%m%d_%H%M%S).log" # 检查文件是否存在 if [ -f "$log_file" ]; then file_size=$(stat -c%s "$log_file") # 获取文件大小(单位:字节) if [ $file_size -gt 1048576 ]; then # 判断文件是否大于1MB (1048576字节) cp "$log_file" "$log_file_bak" # 备份文件 > "$log_file" # 清空原文件 echo "原文件备份为$log_file_bak" echo "原文件已清空" else echo "文件小于1MB,无需备份" fi else echo "文件不存在'$log_file'" fi function xxx_chp() { repo sync repo1 -j32 repo sync repo2 -j32 repo sync repo3 -j32 } function xxx_sys() { repo sync repo1 -j32 repo sync repo2 -j32 repo sync repo3 -j32 } function xxx_master() { cd $PWD/$1 if [ ! -e /.repo ]; then $2 fi $3 cd .. } function undate_code() { bak=$pwd if [ ! -d "$1" ]; then mkdir -p "$1" echo "文件夹 '$1' 不存在,已创建" fi cd $1 if [ -d .repo ]; then echo .repo not exist need repo init $2 else echo .repo exist no need init fi echo current path: $pwd repo sync -j32 cd $bak echo code sync "$1" ok; echo } proj_name_master_chp="proj_name master chip repo init command" proj_name_master_sys="proj_name master system repo init command" function xxx_update_code() { xxx_master master_chp "$proj_name_master_chp" xxx_chp xxx_master master_sys "$proj_name_master_sys" xxx_sys } function auto_code() { undate_code $(eval echo "~/code/manu_chp_$(date +%m%d)") $proj_name_master_chp undate_code $(eval echo "~/code/manu_sys_$(date +%m%d)") $proj_name_master_sys } xxx_update_code auto_code echo $(date +%Y%m%d_%H%M%S) script execute ok
浙公网安备 33010602011771号