![일 이상이면 가동 시간과 이메일을 계산해 보세요.](https://linux55.com/image/173294/%EC%9D%BC%20%EC%9D%B4%EC%83%81%EC%9D%B4%EB%A9%B4%20%EA%B0%80%EB%8F%99%20%EC%8B%9C%EA%B0%84%EA%B3%BC%20%EC%9D%B4%EB%A9%94%EC%9D%BC%EC%9D%84%20%EA%B3%84%EC%82%B0%ED%95%B4%20%EB%B3%B4%EC%84%B8%EC%9A%94..png)
cron
매일 실행(작업)하고, 시스템 가동 시간(일만)을 계산하고, 숫자가 정의된 값(예: 30)보다 큰 경우 이메일( uname -a
) 을 통해 시스템 정보를 보내는 스크립트를 생성해야 합니다 . 특정 주소(예: )까지의 일수입니다 [email protected]
.
나는 계산을 수행하고 조치를 취할 수 있는 날짜로 변환하려고 노력하면서 길을 잃었습니다. 사용을 시작하다
uptime | grep -o "up.*day"
명령을 내리다가 막혔습니다. CentOS 7.8을 사용합니다.
도움을 주셔서 미리 감사드립니다!
답변1
문서는 man uptime
이 조각을 제공합니다
-s, --since
- 시스템 시작 이후yyyy-mm-dd HH:MM:SS
포맷
이렇게 하면 카운트가 시작된 절대 날짜/시간을 얻을 수 있습니다.
uptime -s
2020-02-12 12:37:16
현재 날짜/시간에서 이 값을 빼면 일수가 나옵니다. (날짜 계산은 일반적으로 초 단위이므로 약간 복잡합니다.)
# Seconds at boot
secSince=$(date --date "$(uptime -s)" +%s)
# Seconds now
secNow=$(date +%s)
# Difference
secInterval=$((secNow - secSince))
# Convert to days
daysInterval=$((secInterval / (60*60*24)))
echo "$daysInterval day(s) uptime"
계산된 간격에 윤초가 추가되면 보고된 날짜는 현지 자정에서 1초씩 다를 수 있습니다.