linux時間戳


date命令是顯示或設置系統時間與日期。

很多shell腳本里面需要打印不同格式的時間或日期,以及要根據時間和日期執行操作。延時通常用於腳本執行過程中提供一段等待的時間。日期可以以多種格式去打印,也可以使用命令設置固定的格式。在類UNIX系統中,日期被存儲為一個整數,其大小為自世界標准時間(UTC)1970年1月1日0時0分0秒起流逝的秒數。

參數

<+時間日期格式>:指定顯示時使用的日期時間格式。

日期格式字符串列表

%H 小時,24小時制(00~23)
%M 分鍾(00~59) %s 從1970年1月1日00:00:00到目前經歷的秒數
%S 顯示秒(00~59)
%T 顯示時間,24小時制(hh:mm:ss)
%X 顯示時間的格式(%H:%M:%S)

##shell下的時間加減法就是根據時間戳來實現的,時間戳對我們在shell下的操作非常的有用:
1.計算指定日期的時間戳:date -d "2018-12-05 19:45:44" +%s
[machao@iZ233xdnwmfZ ~]$ date -d "2018-12-05 19:45:44" +%s
1544010344
2.計算當天的時間戳:date +%s
[machao@iZ233xdnwmfZ ~]$ date +%s
1527833952
3.如果知道某個時間戳,也可以計算出這個時間戳對應的時間日期
[machao@iZ233xdnwmfZ ~]$ date +%s
1527835881
[machao@iZ233xdnwmfZ ~]$ date --date=@1527835881
Fri Jun  1 14:51:21 CST 2018
[machao@iZ233xdnwmfZ ~]$ date
Fri Jun  1 14:51:35 CST 2018

ps:需求

老大讓寫個腳本,監控一個進程, 當着這個進程連續運行超過15分鍾,就殺掉

#!/bin/bash
while true
do
##進程的pid
pid=$(ps -ef|grep omjs|grep -v grep|grep -v 'sh'awk 'NR==1{print $2}')

##進程的執行時間
PID=$(ps -ef|grep omjs|grep -v grep|awk 'NR==1{print $5}')

##進程執行時間的時間戳
time=$(date -d $PID +%s)

##當前系統時間的時間戳
time1=$(date +%s)

##系統時間戳減去進程執行時間的時間戳
time2=`expr $time1 - $time`

##執行時間小於900秒就kill
if [ $time2 -gt 900 ]
then
kill $pid
fi
sleep 180
done
View Code
ps :執行過程
[root@iZ233xdnwmfZ machao]# sh -x kill-js-minut.sh 
+ true
++ ps -ef
++ grep omjs
++ grep -v grep
++ grep -v sh
++ awk 'NR==1{print $2}'
+ pid=4973
++ ps -ef
++ grep omjs
++ grep -v grep
++ awk 'NR==1{print $5}'
+ PID=15:23
++ date -d 15:23 +%s
+ time=1527837780
++ date +%s
+ time1=1527838266
++ expr 1527838266 - 1527837780
+ time2=486
+ '[' 486 -gt 900 ']'
+ sleep 180
View Code

 

 
        

 



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM