Получение времени работы поля SunOS UNIX в секундах только

В Вашем примере Панель второго класса, кажется, не наследовалась от Foo. Это, кажется, опечатка, потому что она не делает имеет смысл иначе.

Принятие, что это опечатка, "новый" модификатор явно скрывает версию базового класса функции Do(). Это означает, что полученная версия Do() метод эффективно заменяет версию базового класса.

Используя "новый" здесь документирует то, что унаследованный метод предназначается как замена для версии базового класса Do().

Для получения дополнительной информации, см. новый Модификатор (C#)

7
задан JF. 2 November 2009 в 12:24
поделиться

6 ответов

Спасибо Андре за решение, которое предоставит секунды. If anyone is looking for an answer without compiling, this script can be used. Note, as the "uptime" command does not provide seconds the solution is anything from 0 to 59 seconds out when it is run:

days=`uptime | awk '{print \$3}'`
hrs=`uptime | awk '{print \$5}' | sed 's/[:,]/ /g' | awk '{print \$1}'`
mins=`uptime | awk '{print \$5}' | sed 's/[:,]/ /g' | awk '{print \$2}'`
uptimesecs=$(($mins*60))
uptimesecs=$(($hrs*3600+$uptimesecs))
uptimesecs=$(($days*86400+$uptimesecs))
echo "$uptimesecs seconds uptime (to within 59 secs)."

Hope that's of use to someone :-)

1
ответ дан 6 December 2019 в 19:38
поделиться

Если вы не возражаете против компиляции небольшой программы на C, вы можете использовать:

#include <utmpx.h>
int main ( )
{
  int nBootTime = 0;
  int nCurrentTime = time ( NULL );   
  struct utmpx * ent;

  while ( ( ent = getutxent ( ) ) ) {
    if ( !strcmp ( "system boot", ent->ut_line ) ) {
      nBootTime = ent->ut_tv.tv_sec;
    }      
  }   
  printf ( "System was booted %d seconds ago\n", nCurrentTime - nBootTime );    
}

Источник: http://xaxxon.slackworks.com/rsapi/

5
ответ дан 6 December 2019 в 19:38
поделиться

Perl: CPAN обеспечивает unix :: uptime - однако в настоящее время он несовместим с SunOS, но может быть в будущем.

0
ответ дан 6 December 2019 в 19:38
поделиться

Вот сценарий оболочки, который обеспечивает второе разрешение. Обратите внимание, что вам нужно иметь root-доступ, чтобы он работал.

#!/bin/ksh
now=$(nawk 'BEGIN{print srand()}')
i=$(apptrace -fv 'getutxent' uptime 2>&1 | grep time_t | tail +2 | head -1 | nawk '{print $3}')
ut=$(bc <<-%EOF%
ibase=16
$(print $i | sed 's/0x//' | tr "[a-f]" "[A-F]")
%EOF%
)
s=$((now-ut))
h=$((s/3600))
s=$((s-(h*3600)))
m=$((s/60))
s=$((s-(m*60)))
d=$((h/24))
h=$((h-(d*24)))
printf "%d seconds - %d day(s) %02d:%02d:%02d\n" $((now - ut)) $d $h $m $s
0
ответ дан 6 December 2019 в 19:38
поделиться

Вы можете использовать kstat, чтобы узнать время безотказной работы системы.

$kstat -p unix:0:system_misc:boot_time

Это вернет значения в формате unix. Ниже приведен код, который мне очень пригодился для получения значений в секундах.

#!/usr/bin/perl -w
use strict;

my $KSTAT = '/usr/bin/kstat -p';
my $STATISTIC = 'unix:0:system_misc:boot_time';

my $uptime = `$KSTAT $STATISTIC | awk '{print \$2}'`;
sprintf "%0.2f\n", (time() - $uptime);
0
ответ дан 6 December 2019 в 19:38
поделиться

Довольно неортодоксальным методом может быть такой (помог мне, так как kstat выдал несколько странных результатов, которые не прошли cron:

RunTime=""
RunTime=`kstat -p unix:0:system_misc:snaptime | awk '{print $2}' | cut -d "." -f1`
echo $RunTime
RunTime=`expr $RunTime / 1`
RunDays=`expr $RunTime / 86400`
RunHours=`expr $RunTime % 86400 / 3600`
RunMinutes=`expr $RunTime % 3600 / 60`
RunSeconds=`expr $RunTime % 60`

Надеюсь, это вам поможет. Приятный побочный эффект: у вас есть доступные биты времени для вычислений.

3
ответ дан 6 December 2019 в 19:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: