【发布时间】:2016-10-25 23:22:31
【问题描述】:
我编写了一个 bash 脚本,它将特定进程的日期、时间、CPU 和 MEM 使用情况输出到一个文件中。我创建了一个“topLogger.service”服务,它运行并将日期和时间输出到文件中,但顶部输出(CPU 和 MEM)没有显示在输出文件中。
当我从 bash shell 运行 bash 脚本时,它工作得很好!
sudo ./topLoggerScript.sh
我相信这条线可能是罪魁祸首,但我不知道如何解决这个问题。
/usr/bin/top -n 1 | grep service_to_monitor
这是整个脚本:
#!/bin/bash
cpu=10
mem=11
cur_date=$(date +"%Y-%m-%d")
echo "starting date is $cur_date"
# Create starting file if todays file does not exist
if [ ! -e /file/location/$cur_date.txt ] ; then
echo "DATE TIME CPU MEM" > /file/location/$cur_date.txt
fi
while true
do
STRING=$(/usr/bin/top -n 1 | grep service_to_monitor)
arr=($STRING)
next_date=$(date +"%Y-%m-%d")
if [ "$cur_date" != "$next_date" ];then
# Day changed. Create a new file using cur_date.
echo "DAY CHANGE"
echo "DATE TIME CPU MEM" > /file/location/$cur_date.txt
# And change prev_date to cur_date
cur_date=$next_date
fi
sudo echo $(date +"%Y-%m-%d %H-%M-%S") ${arr[cpu-1]} ${arr[mem-1]}>>/file/location/$cur_date.txt
sleep 5
done
这是我的服务文件的权限:
-rw-rw-r-- 1 root root 121 Oct 25 15:54 topLogger.service
这里是 topLogger.service 文件本身:
[Unit]
Description=Resource monitor for a specific process
[Service]
ExecStart=/path/to/script/logResourceUsage.sh
【问题讨论】:
标签: linux bash unix service systemd