取得行程起始時間

更新於 發佈於 閱讀時間約 3 分鐘

在 Linux 系統中,設定 crontab 可以讓程式在某個時間點重跑。但要怎麼確定它真的在設定的時間重跑呢?

二個方法,我們先看困難的,再再看怎麼快速取得。

raw-image

困難的方法:從系統資訊裡找答案

/proc/[行程代碼]/stat 裡,有一些行程的相關資料。查一下 stat 的欄位文件,第 22 欄 starttime 就是程式執行的時間點。但是

  1. 它要除以時鐘周期 (clock ticks) sysconf(_SC_CLK_TCK) 的數值。
  2. 它的單位是 jiffies,不是 timestamp。也就是它是算自作業系統跑起來後,第幾個時鐘周期開始跑這支程式,這樣是很精確的時間點,但這表示我們要多花些工夫來轉換成現實時間。

所以我們要先查下系統的 _SC_CLK_TCK 是多少,在終端機中用 getconf 指令就可以確定。

getconf CLK_TCK

查出來數值是 100。用 cat /proc/[行程代碼]/stat 然後算一算第 22 欄的數字再除 100 也可以,但我們可以用較好的方式,例如用 awk 來剖析就不用拿筆對準螢幕一個個算到 22 欄。

awk '{print int($22 / 100)}' /proc/[行程代碼]/stat

該行的意思,是將 /proc/[行程代碼]/stat 的第 22 欄除 100 取整數。於是可以取得 starttime 的數據了,結果時間單位是秒。

接著,我們要確定作業系統跑了多久。這看 /proc/uptime 第一欄就行,單位是秒。

awk '{print int($1)}' /proc/uptime

就是無聊,不想再用 awk 指令,那用 cut 來切吧。要注意的是要取整數,於是用小數點當成分割標記。

cat /proc/uptime | cut -d '.' -f 1

然後要計算,公式如下:

現在時間 - (開機時間 - 程式執行時間)

現在時間的 timestamp 可以用 date 指令取得

date +%s

之後將上面的三個數字加加減減,就可以取得執行時的 timestamp,再用 date 將它轉成可讀時間

date -d timestamp

我們將這些寫成 shell script


用這方式就可以取得程式執行時間

./pidstarttime.sh 5566


簡單的方法:用指令取得答案

終端機用 ps 指令,加上 lstart 參數,就可以直接取得資料,不用管它是什麼 jiffies 除時脈變成秒。

ps -o lstart= -p [行程代碼]

補充:macOS 因為它沒有 /proc 的機制,所以只能用這個 ps 指令來做,這指令參數跟 Linux 完全相同。



參考資料

留言
avatar-img
留言分享你的想法!
avatar-img
WILSON PENG的沙龍
2會員
26內容數
WILSON PENG的沙龍的其他內容
2023/02/02
UTF-8 萬國碼在規格定義時,有建議在文件的開始處,加入位元組順序記號 (BOM, byte-order mark)。但 Plain Text 文件,就是全部都是文字,將它加入檔頭標記,就不是純文字檔案了,所以一般都沒有實作成有 BOM 檔頭的檔案。
Thumbnail
2023/02/02
UTF-8 萬國碼在規格定義時,有建議在文件的開始處,加入位元組順序記號 (BOM, byte-order mark)。但 Plain Text 文件,就是全部都是文字,將它加入檔頭標記,就不是純文字檔案了,所以一般都沒有實作成有 BOM 檔頭的檔案。
Thumbnail
2023/01/11
要怎麼判斷是奇數還是偶數? 除以 2 有餘數的是奇數,無餘數的是偶數。 有沒有更快的方法?
Thumbnail
2023/01/11
要怎麼判斷是奇數還是偶數? 除以 2 有餘數的是奇數,無餘數的是偶數。 有沒有更快的方法?
Thumbnail
2022/12/07
當使用 Wordpress 架站時,系統至少會有四層漏洞:
Thumbnail
2022/12/07
當使用 Wordpress 架站時,系統至少會有四層漏洞:
Thumbnail
看更多
你可能也想看
Thumbnail
沙龍一直是創作與交流的重要空間,這次 vocus 全面改版了沙龍介面,就是為了讓好內容被好好看見! 你可以自由編排你的沙龍首頁版位,新版手機介面也讓每位訪客都能更快找到感興趣的內容、成為你的支持者。 改版完成後可以在社群媒體分享新版面,並標記 @vocus.official⁠ ♥️ ⁠
Thumbnail
沙龍一直是創作與交流的重要空間,這次 vocus 全面改版了沙龍介面,就是為了讓好內容被好好看見! 你可以自由編排你的沙龍首頁版位,新版手機介面也讓每位訪客都能更快找到感興趣的內容、成為你的支持者。 改版完成後可以在社群媒體分享新版面,並標記 @vocus.official⁠ ♥️ ⁠
Thumbnail
每年4月、5月都是最多稅要繳的月份,當然大部份的人都是有機會繳到「綜合所得稅」,只是相當相當多人還不知道,原來繳給政府的稅!可以透過一些有活動的銀行信用卡或電子支付來繳,從繳費中賺一點點小確幸!就是賺個1%~2%大家也是很開心的,因為你們把沒回饋變成有回饋,就是用卡的最高境界 所得稅線上申報
Thumbnail
每年4月、5月都是最多稅要繳的月份,當然大部份的人都是有機會繳到「綜合所得稅」,只是相當相當多人還不知道,原來繳給政府的稅!可以透過一些有活動的銀行信用卡或電子支付來繳,從繳費中賺一點點小確幸!就是賺個1%~2%大家也是很開心的,因為你們把沒回饋變成有回饋,就是用卡的最高境界 所得稅線上申報
Thumbnail
全球科技產業的焦點,AKA 全村的希望 NVIDIA,於五月底正式發布了他們在今年 2025 第一季的財報 (輝達內部財務年度為 2026 Q1,實際日曆期間為今年二到四月),交出了打敗了市場預期的成績單。然而,在銷售持續高速成長的同時,川普政府加大對於中國的晶片管制......
Thumbnail
全球科技產業的焦點,AKA 全村的希望 NVIDIA,於五月底正式發布了他們在今年 2025 第一季的財報 (輝達內部財務年度為 2026 Q1,實際日曆期間為今年二到四月),交出了打敗了市場預期的成績單。然而,在銷售持續高速成長的同時,川普政府加大對於中國的晶片管制......
Thumbnail
重點摘要: 6 月繼續維持基準利率不變,強調維持高利率主因為關稅 點陣圖表現略為鷹派,收斂 2026、2027 年降息預期 SEP 連續 2 季下修 GDP、上修通膨預測值 --- 1.繼續維持利率不變,強調需要維持高利率是因為關稅: 聯準會 (Fed) 召開 6 月利率會議
Thumbnail
重點摘要: 6 月繼續維持基準利率不變,強調維持高利率主因為關稅 點陣圖表現略為鷹派,收斂 2026、2027 年降息預期 SEP 連續 2 季下修 GDP、上修通膨預測值 --- 1.繼續維持利率不變,強調需要維持高利率是因為關稅: 聯準會 (Fed) 召開 6 月利率會議
Thumbnail
對於新手來說,使用Fedora可能會有一些困難,比如找不到要延遲系統暫停時間如下圖,那要如何做呢?請繼續看下去。
Thumbnail
對於新手來說,使用Fedora可能會有一些困難,比如找不到要延遲系統暫停時間如下圖,那要如何做呢?請繼續看下去。
Thumbnail
用 Powershell 的 IDE ,寫一個在剪貼簿裡存 Timestamp 的無聊小程式。
Thumbnail
用 Powershell 的 IDE ,寫一個在剪貼簿裡存 Timestamp 的無聊小程式。
Thumbnail
我們在安裝程式的時候, 通常安裝包都會有進度條的顯示, 雖然那是GUI的部份, 但命令列是否也可以這樣呢? 答案是可以的, 在Python就有這麼一套工具專門在顯示我們程式運行的進度, 只要掌握如何回報進度、更新進度, 接下來渲染與互動的部份就交由tqdm這套件去處理即可。 這會對於我們在掌握
Thumbnail
我們在安裝程式的時候, 通常安裝包都會有進度條的顯示, 雖然那是GUI的部份, 但命令列是否也可以這樣呢? 答案是可以的, 在Python就有這麼一套工具專門在顯示我們程式運行的進度, 只要掌握如何回報進度、更新進度, 接下來渲染與互動的部份就交由tqdm這套件去處理即可。 這會對於我們在掌握
Thumbnail
在這篇教學中,我們將學習如何在C#程式中取得系統時間並進行格式化,以滿足不同需求的日期和時間顯示。
Thumbnail
在這篇教學中,我們將學習如何在C#程式中取得系統時間並進行格式化,以滿足不同需求的日期和時間顯示。
Thumbnail
排程 crontab 簡介 參考 : https://ubuntuqa.com/zh-tw/article/10392.html 設定一個定時啟動程序 簡介 常用 範例 其他設定介紹 排程更新 排程執行目錄 登入 root 查看 /var/log/cron 搜尋想找的程序名稱 , 會看到幾點有運行
Thumbnail
排程 crontab 簡介 參考 : https://ubuntuqa.com/zh-tw/article/10392.html 設定一個定時啟動程序 簡介 常用 範例 其他設定介紹 排程更新 排程執行目錄 登入 root 查看 /var/log/cron 搜尋想找的程序名稱 , 會看到幾點有運行
Thumbnail
在 Linux 系統中,設定 crontab 可以讓程式在某個時間點重跑。但要怎麼確定它真的在設定的時間重跑呢?
Thumbnail
在 Linux 系統中,設定 crontab 可以讓程式在某個時間點重跑。但要怎麼確定它真的在設定的時間重跑呢?
Thumbnail
一直以來都是靠手動的方式來進行檔案的版本管理,也就是自己複製檔案,然後改檔名,加入可以識別的編號。不過,越來越覺得,有必要用版本控制系統來幫忙,因為手動的方式實在很累人,而且當需要查找以前更動的內容時,非常沒有效率。當發現Spyder也有支援Git時,就想著:「好吧!那就試用看看好了。」
Thumbnail
一直以來都是靠手動的方式來進行檔案的版本管理,也就是自己複製檔案,然後改檔名,加入可以識別的編號。不過,越來越覺得,有必要用版本控制系統來幫忙,因為手動的方式實在很累人,而且當需要查找以前更動的內容時,非常沒有效率。當發現Spyder也有支援Git時,就想著:「好吧!那就試用看看好了。」
Thumbnail
介紹 📷 定義 處理序(Process) (大陸:進程): 一個程序運行時,占用全部計算資源的總和 執行緒(Thread) (大陸:線程):是作業系統能夠進行運算排程的最小單位。 大部分情況下,它被包含在行程之中,是行程中的實際運作單位。 C#多線程和異步(一)——基本概念和使用方法 執行緒帶來的
Thumbnail
介紹 📷 定義 處理序(Process) (大陸:進程): 一個程序運行時,占用全部計算資源的總和 執行緒(Thread) (大陸:線程):是作業系統能夠進行運算排程的最小單位。 大部分情況下,它被包含在行程之中,是行程中的實際運作單位。 C#多線程和異步(一)——基本概念和使用方法 執行緒帶來的
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News