2013-03-12 44 views
1

有沒有方法可以計算當前用戶的會話持續時間或會話長度?Linux - 計算會話持續時間並將其添加到提示中

我知道使用last命令,我們可以獲取用戶的登錄和空閒時間,但有沒有直接的命令或可以做,現在從時間來計算時間,當用戶在已經登錄的任何數學。

如何在提示中添加此會話持續時間信息。我知道使用export PS1它可以實現,但參數將進入什麼?

任何幫助表示感謝。謝謝。

+1

優秀的問題http://unix.stackexchange.com/ – 2013-03-12 15:25:50

回答

2

在Bash中要做到這一點,最簡單的方法是將這個給你的.bashrc:

PS1="\$SECONDS $PS1" 

假設你沒有做任何事情異國情調與PS1已,就像PROMPT_COMMAND或任何動態設置它。您需要在$SECONDS之前使用反斜槓以確保每次都評估它。 (您也可以使用單引號,但也可能無需每次都評估$PS1。)

這只是給您一個表示會話存在秒數的裸數。對於愛好者格式化,你將不得不花費更多的努力。例如:

PROMPT_COMMAND='SESSIONTIME=$(printf "%02d:%02d:%02d" $(($SECONDS/3600)) $(($SECONDS/60 % 60)) $(($SECONDS % 60)))' 
PS1="\$SESSIONTIME $PS1" 

其他炮彈可能有SECONDS,但他們不會有PROMPT_COMMAND;例如,在zsh中,您可以通過定義precmd函數來完成相同的操作。閱讀文檔。

+0

我已經編輯了我的PS1,讓我的用戶@主機名[當前日期和時間]:$'格式。在日期和時間之後,我想添加他關於會話持續時間的額外信息。 – ivn03 2013-03-13 03:47:30

+0

我發現了一個命令'uptime',它給了我一個o/p像這樣'09:18:04 up 31分鐘,1個用戶,平均負載:1.13,0.98,0.82',其中31分鐘是我需要的。這更簡單,不是嗎?只是我並不是很擅長每次從正常運行命令中選取一點並將其顯示在提示符上。有任何想法嗎? – ivn03 2013-03-13 03:49:08

+0

正常運行時間是機器本身持續的時間,而不是您的會話持續時間。 – Cairnarvon 2013-03-13 14:37:56

0

這取決於你使用的shell。在bash中,SECONDS參數的值是自當前shell啓動以來的秒數。

+2

注意這也適用於'pdksh'和'zsh',但不是'csh'。這顯然不是普遍的,但它似乎很常見... – twalberg 2013-03-12 15:47:10

+0

我有bash shell。 – ivn03 2013-03-13 03:46:13