Nei*_*ima 10 linux shell cron lsof
我有一个小脚本在Linux上计算打开文件,将结果保存到平面文件中.我打算每分钟在Cron上运行它以便稍后收集结果.脚本如下:
/bin/echo "Timestamp: ` date +"%m-%d-%y %T"` Files: `lsof | grep app | wc -l`"
Run Code Online (Sandbox Code Playgroud)
而crontab是这样的:
*/1 * * * * /usr/local/monitor/appmon.sh >> /usr/local/monitor/app_stat.txt
Run Code Online (Sandbox Code Playgroud)
如果我从shell ./script.sh运行它运行良好并输出为:
Timestamp: 01-31-13 09:33:59 Files: 57
Run Code Online (Sandbox Code Playgroud)
但是在Cron输出上是:
Timestamp: 01-31-13 09:33:59 Files: 0
Run Code Online (Sandbox Code Playgroud)
不确定是否需要任何权限或类似.我已经尝试过sus on lsof也没有运气.
任何提示?
she*_*ter 13
从你的工作cmd-line,做
which lsof
which grep
which wc
which date
Run Code Online (Sandbox Code Playgroud)
获取每个命令的完整路径并将它们添加到shell脚本中,生成类似的命令
/bin/echo "Timestamp: `/bin/date +"%m-%d-%y %T"` Files: `/usr/sbin/lsof | /bin/grep app | /bin/wc -l`"
Run Code Online (Sandbox Code Playgroud)
或者您可以设置PATH var以在脚本中包含缺失值,即
PATH=/usr/sbin:${PATH}
Run Code Online (Sandbox Code Playgroud)
除非您希望从真正的Bourne Shell环境运行脚本,否则请加入90年代早期并使用$( cmd ... )cmd替换表单而不是反引号.1995年出版的Ksh 93书评论说,命令替换的反引号已被弃用;-)
IHTH
| 归档时间: |
|
| 查看次数: |
5043 次 |
| 最近记录: |