2013-03-12 2 views
1

현재 사용자의 세션 기간 또는 세션 길이를 계산하는 방법이 있습니까?리눅스 - 세션 지속 시간을 계산하여 프롬프트에 추가하십시오.

나는 우리가 사용자의 로그인 및 유휴 시간을 얻을 수 있지만 직접 명령 또는 사용자가 로그인했을 때 시간을 현재 시간부터 계산 할 수있는 수학이 last 명령을 사용하여 알고

.

또한이 세션 기간 정보를 프롬프트에 추가하는 방법입니다. 나는 export PS1을 사용하여 얻을 수 있지만 어떤 매개 변수가 될 것이라고 알고 있습니까?

도움이 되시길 바랍니다. 감사.

+1

http://unix.stackexchange.com/ –

답변

2

배쉬에서이 작업을 수행하는 가장 간단한 방법은 .bashrc에이를 추가하는 것입니다 :

PS1="\$SECONDS $PS1" 

PROMPT_COMMAND이든 동적으로 설정처럼, 이미 PS1 이국적인 작업을 수행하지 않는 가정. 매번 평가되도록 $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을 이미'user @ hostname [현재 날짜 및 시간] : $'형식으로 편집했습니다. 날짜와 시간이 지나면 세션 기간에 대한 추가 정보를 추가하고 싶습니다. – ivn03

+0

나는'09:18:04 up 31 분, 1 user, load average : 1.13, 0.98, 0.82'과 같은 o/p 명령을 'uptime '이라고 알려주고 있는데, 31 분이 필요하다. 이것은 더 간단합니다, 그렇지 않습니까? 그냥 나는 항상 가동 시간 명령에서 그 비트를 골라 내 프롬프트에 표시하는 것이 좋지 않습니다. 어떤 아이디어? – ivn03

+0

가동 시간은 세션 기간이 아니라 기기 자체가 작동 된 시간입니다. – Cairnarvon

0

사용하는 쉘에 따라 다릅니다. bash에서 SECONDS 매개 변수의 값은 현재 셸이 시작된 이후의 시간 (초)입니다.

+2

에 대한 탁월한 질문이 또한 적어도 "pdsh"와 "zsh"에서는 작동하지만 "csh"에서는 작동하지 않습니다. 분명히 보편적이지는 않지만 일반적인 것 같습니다. – twalberg

+0

나는 bash shell을 가지고 있습니다. – ivn03

관련 문제