linux shell 定时任务 批量执行命令并输出
前言:由于公司需要每天查看服务器某些服务的状态信息并且要查看的服务又多过。故写个小脚本来批量执行指令并保留输出结果。注:未做指令异常处理(因为指令都是自己执行成功的指令通常不会出现异常就没做处理)我的测试脚本(仅供测试不在意丢失)在tmp下,通常不要放tmp下放在自己建立的脚本目录下比较好,防止丢失。
- 脚本1:工具sh(/tmp/test.sh)
使用方式:/tmp/test.sh “指令1” “指令2” “指令3” ···
#!/bin/sh num=1 for param in "$@" do echo "第$num条指令为 $param" echo "结果为" $param echo num=$[ $num + 1 ] done
- 脚本2:调用工具sh的sh(/tmp/cmd.sh)
使用脚本例子:将执行 free -h、df -h、lsof -i:8080 指令并将结果输出到指定日志文件 /tmp/cmd.log
#!/bin/sh /tmp/test.sh "free -h" "df -h" "lsof -i:8080" > /tmp/cmd.log
- 设置定时任务
- 定时每天3点执行
crontab -e #表示vi 进入定时任务配置文件 * 3 * * * sh /tmp/cmd.sh#增加一行定时任务每天3点执行
- crontab 详情使用:
我们用crontab -e进入当前用户的工作表编辑,是常见的vim界面。每行是一条命令。crontab [-u username] //省略用户表表示操作当前用户的crontab -e (编辑定时任务) -l (列出目前已设置的定时任务) -r (删除定时任务)
crontab的命令构成为 时间+任务,其时间有分、时、日、月、周
五种,操作符有
* :取值范围内的所有数字
/ :每过多少个数字
- :从X到Z
,:多个数字
例子:* * * * * 任务指令
每分钟分钟执行一次任务指令1,15 * * * * 任务指令
每小时的第1和第15分钟执行1,15 2-4 * * * 任务指令
在上午2点到4点的第1和第15分钟执行1,15 2-4 */3 * * 任务指令
每隔3天的上午2点到4点的第1和第15分钟执行1,15 2-4 * * * 1 任务指令
每周一上午2点到4点的第1和第15分钟执行
- 定时每天3点执行