1

我有一个 shell 脚本,它作为我的用户可以正常工作,并且在 crontab 中可以正常工作。然而,它只完成了 rm 行,并挂在 awk 行:

#!/bin/bash

get_listeners.pl > temp.txt
#accesses my icecast admin page and puts some useful metrics in temp.txt

date +\%s > unpaired.txt
grep "Current Listeners" temp.txt | sed 's/[^0-9]//g' >> unpaired.txt
#first line of unpaired.txt is time, second line is number of listeners

sed '$!N;s/\n/ /' unpaired.txt >> data.dat
#combine the two lines and append it to the data file

rm unpaired.txt
#tidy up

A=$(($(date +\%s) - 86400)) | awk -v a=$1 '{if ($1 >= a) print $1,$2}' data.dat > data2.dat
#get variable of 24 hours ago; only copy lines from last 24 hours to new file

gnuplot < demo.plt
#make plot from data in new file

所有路径在 crontab 中都是明确的;我刚刚在这里删除了它们以保持简洁。

所有文件都设置为 777 并且 data.dat 稳步建立(作业每分钟运行一次),但从不将数据迁移到该 awk 行中的第二个文件。如果有人能指出 awk 线看起来有什么问题,我几乎可以肯定这就是它搞砸的地方。变量不能在 cron 中流水线化吗?谢谢你。

4

1 回答 1

0

#获取24小时前的变量;仅将过去 24 小时的行复制到新文件

从评论来看,你可能想要这样做:

A=$(($(date +\%s) - 86400))
awk -v a="$A" '$1 >= a{print $1,$2}' data.dat > data2.dat
于 2013-04-01T10:19:11.223 回答