В Вашем примере Панель второго класса, кажется, не наследовалась от Foo. Это, кажется, опечатка, потому что она не делает имеет смысл иначе.
Принятие, что это опечатка, "новый" модификатор явно скрывает версию базового класса функции Do()
. Это означает, что полученная версия Do()
метод эффективно заменяет версию базового класса.
Используя "новый" здесь документирует то, что унаследованный метод предназначается как замена для версии базового класса Do()
.
Для получения дополнительной информации, см. новый Модификатор (C#)
Спасибо Андре за решение, которое предоставит секунды. 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 :-)
Если вы не возражаете против компиляции небольшой программы на 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/
Perl: CPAN обеспечивает unix :: uptime - однако в настоящее время он несовместим с SunOS, но может быть в будущем.
Вот сценарий оболочки, который обеспечивает второе разрешение. Обратите внимание, что вам нужно иметь 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
Вы можете использовать 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);
Довольно неортодоксальным методом может быть такой (помог мне, так как 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`
Надеюсь, это вам поможет. Приятный побочный эффект: у вас есть доступные биты времени для вычислений.