1
我已經編寫了一個bash腳本,用於將特定進程的日期,時間,CPU和MEM用法輸出到文件中。我做了一個「topLogger.service」服務,它運行並輸出日期和時間到文件中,但輸出文件中沒有顯示最高輸出(CPU和MEM)。從systemd服務調用「top」命令
當我剛剛從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
這是mac版本的top,在debian中例如top -n 1 exit在一次迭代之後。 –
@LucianoAfranllie啊你是對的。 –
感謝您的評論,僅僅爲了重申一下,這個腳本在bash中運行時完全可行。作爲服務運行時,它還會將日期/時間輸出到指定的文件。問題是MEM和TOP數據在作爲服務運行時不會輸出到文件中,而是在bash中運行。 – Xachuous