linux時間戳

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

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

參數ide

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

日期格式字符串列表code

%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:需求blog

老大讓寫個腳本,監控一個進程, 當着這個進程連續運行超過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
相關文章
相關標籤/搜索