使用crontab執行指令碼週期性獲取系統資訊

2021-09-24 04:12:22 字數 1845 閱讀 5849

1.crontab準備

1)安裝服務

sudo apt install cron
2)開通並開啟後台服務

sudo systemctl enable cron.service;sudo systemctl start cron.service
3)建立乙個crontab檔案

sudo vim ~/mycrontab
4)新增任務

#每分鐘週期性執行

* * * * * sudo ~/test.sh

5)將任務新增到cron服務模組中

crontab ~/mycrontab
2.編輯test.sh

1)新建test.sh

sudo vim test.sh
2)新增以下配置資訊

#!/bin/bash

#獲取系統當前時間

time=$(date "+%y-%m-%d %h:%m:%s")

echo "time:$time" >> /home/lim/measure/sysinfo.log

#ip的獲取

ip=`ifconfig| grep -a 1 'ens33'|grep 'inet'|awk -f ':' ''|awk ''`

echo "ip:$ip" >> /home/lim/measure/sysinfo.log

#獲取系統cpu使用率

sys_cpu=`top -n 1 |grep cpu | cut -d "," -f 1 | cut -d ":" -f 2 | awk ''`

echo "sys_cpu:$sys_cpu" >> /home/lim/measure/sysinfo.log

#獲取使用者cpu使用率

user_cpu=`top -n 1 |grep cpu | cut -d "," -f 2 | awk ''`

echo "user_cpu:$user_cpu" >> /home/lim/measure/sysinfo.log

#獲取磁碟使用率

disk_usage=`df -lh |grep /dev/sda1 |awk ''| tr -cd "[0-9]"`

disk_usage=`awk 'begin'`

echo "disk_usage:$disk_usage" >> /home/lim/measure/sysinfo.log

#獲取記憶體使用率

mem_total=`cat /proc/meminfo | grep memtotal | awk '' | tr -cd "[0-9]"`

mem_used=`cat /proc/meminfo | grep memfree | awk '' | tr -cd "[0-9]"`

mem_usage=`awk 'begin'`

echo "mem_usage:$mem_usage" >> /home/lim/measure/sysinfo.log

3)輸出資料格式

4)存在問題

1.直接以互動模式執行指令碼,可以在test.s**件中直接將echo的流重定向到檔案中。

2.以crontab呼叫的方式,沒法在指令碼中通過echo # >*.log完成流的重定向。

3.可以在crontab命令裡,嘗試流的重定向。 * * * * * ./test.sh >>test.log

crontab執行指令碼出錯

最近經常碰到關於crontab不能執行的,初步總結了有以下幾個原因 第一,指令碼的原因 大多數情況下,是我們的指令碼的問題,這種問題導致crontab不能執行的概率佔到70 以上。因為程式執行到某一步導致crontab終止執行,如,資料庫訪問出錯等。第二,執行環境問題,當我們碰到第一情況下,一般都可...

crontab計畫執行指令碼詳解

crontab是linux系統中在固定時間執行某乙個程式的工具,類似於windows系統中的任務計畫程式。一 安裝crontab yum install vixie cron 安裝 chkconfig crond on 設為開機啟動,安裝chkconfig yum installchkconfig ...

crontab防止指令碼週期內未執行完重複執行

八月 28,2015 no comments 個人體會 flock xn my.lock commond my.lock是乙個檔案,應該可以是任意檔案,可以新建乙個空檔案 當flock 獲得鎖後就會執行後面的 commond 測試過程 1 flock xn my.lock sleep 20 2 fl...