执行系统命令并且将输出写到指定日志文件的shell脚本(2)
2015-04-01 12:39
776 查看
上一篇是个简单的可以执行并且写入日志的脚本,但是如果放到生产环境上就显得太粗糙了,所以需要进一步的优化:#! /bin/bash
if [ -d "/opt/bmc" ] ; then
if [ -f "/opt/bmc/usysfault.log" ] ; then
{
date +"%Y-%m-%d %H:%M:%S"
/usr/lpp/diagnostics/bin/usysfault #要执行的命令的绝对路径
} > /opt/bmc/usysfault.log #要存放日志文件的绝对路径
else
touch /opt/bmc/usysfault.log
chmod 755 /opt/bmc/usysfault.log
{
date +"%Y-%m-%d %H:%M:%S"
/usr/lpp/diagnostics/bin/usysfault
} > /opt/bmc/usysfault.log
fi
else
if [ -f "/tmp/usysfault.log" ] ; then
{
date +"%Y-%m-%d %H:%M:%S"
/usr/lpp/diagnostics/bin/usysfault
} > /tmp/usysfault.log
else
touch /tmp/usysfault.log
chmod 755 /tmp/usysfault.log
{
date +"%Y-%m-%d %H:%M:%S"
/usr/lpp/diagnostics/bin/usysfault
} > /tmp/usysfault.log
fi
fi注释:
[ -d "xxxx" ] 判断目录路径是否存在
[ -f "xxxx" ] 判断文件是否存在
touch 命令用于创建空文件,chmod 命令用于赋权。
特别注意:
shell脚本对空格的要求异常的严格,必须注意空格,否则报错了你查都很难查。
if 条件使用结束时必须有fi结尾,不然会报错,也是很难查了。
最后,这个是单词执行的脚本,如果要循环执行的话加上上一篇写的while true即可。不过我采用的是类unix系统的计划任务管理器crontab来添加计划任务,让系统按指定的计划时间来执行脚本。
if [ -d "/opt/bmc" ] ; then
if [ -f "/opt/bmc/usysfault.log" ] ; then
{
date +"%Y-%m-%d %H:%M:%S"
/usr/lpp/diagnostics/bin/usysfault #要执行的命令的绝对路径
} > /opt/bmc/usysfault.log #要存放日志文件的绝对路径
else
touch /opt/bmc/usysfault.log
chmod 755 /opt/bmc/usysfault.log
{
date +"%Y-%m-%d %H:%M:%S"
/usr/lpp/diagnostics/bin/usysfault
} > /opt/bmc/usysfault.log
fi
else
if [ -f "/tmp/usysfault.log" ] ; then
{
date +"%Y-%m-%d %H:%M:%S"
/usr/lpp/diagnostics/bin/usysfault
} > /tmp/usysfault.log
else
touch /tmp/usysfault.log
chmod 755 /tmp/usysfault.log
{
date +"%Y-%m-%d %H:%M:%S"
/usr/lpp/diagnostics/bin/usysfault
} > /tmp/usysfault.log
fi
fi注释:
[ -d "xxxx" ] 判断目录路径是否存在
[ -f "xxxx" ] 判断文件是否存在
touch 命令用于创建空文件,chmod 命令用于赋权。
特别注意:
shell脚本对空格的要求异常的严格,必须注意空格,否则报错了你查都很难查。
if 条件使用结束时必须有fi结尾,不然会报错,也是很难查了。
最后,这个是单词执行的脚本,如果要循环执行的话加上上一篇写的while true即可。不过我采用的是类unix系统的计划任务管理器crontab来添加计划任务,让系统按指定的计划时间来执行脚本。
相关文章推荐
- 执行系统命令并且将输出写到指定日志文件的shell脚本(1)
- 十七周四次课(11月30日) 20.31 expect脚本同步文件 20.32 expect脚本指定host和要同步的文件 20.33 构建文件分发系统 20.34 批量远程执行命令
- linux shell脚本 springboot项目发布的shell脚本 包括日志输出到指定的文件
- linux学习第七十篇:expect脚本同步文件,expect脚本指定host和要同步的文件,构建文件分发系统,批量远程执行命令
- expect脚本同步文件、指定host和要同步的文件、构建文件分发系统、批量远程执行命令
- expect脚本同步文件,expect脚本指定host和要同步的文件,构建文件分发系统,批量远程执行命令
- 十七周四次课 2018.03.05 expect脚本同步文件、expect脚本指定host和要同步的文件、构建文件分发系统、批量远程执行命令
- 编写一个SHELL脚本,可以获得指定目录下的所有文件及文件夹的大小。输出的样式与 ls -lh 命令相同。
- expect脚本同步文件 expect脚本指定host和要同步的文件 构建文件分发系统 批量远程执行命令
- expect脚本同步文件expect脚本指定host和要同步的文件 构建文件分发系统批量远程执行命令
- Shell执行将脚本里的变量打印到指定日志文件
- 远程执行命令和文件分发shell脚本
- 输出执行操作和打印日志的shell脚本实例
- shell将脚本输出结果记录到日志文件的实现
- 使用Java代码执行系统命令/shell命令, 并获取输出结果
- [Linux]定时执行命令的shell脚本,删除脚本自身,判断输出是否为空
- sqlserver重启的行命令脚本,并且可以产生执行日志,可用于定时重启
- nohup后台执行脚本并把输出都指定文件
- Linux命令执行的屏幕输出内容重定向到日志文件
- java 中调用window系统中的文件,或者执行命令(shell、.CMD、.EXE)并获取返回值