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
[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