店舗内のすべてのマシン (つまり、Linux、SunOS、および AIX) で、計算を実行するために数秒のアップタイムが必要な Perl スクリプトを作成しています。このサイトの別の投稿のおかげで、Linux (/proc/uptime) と SunOS (kstat -p unix:0:system_misc:boot_time) のアップタイムを取得する方法がありますが、取得する良い方法を見つけることができますAIX 用です。マシンがほんの数秒、数分、数日、または 1 年以上稼働しているときに稼働時間が変化するため、正規表現で稼働時間を解析するという考えはあまり好きではありません。
3 に答える
この C のスニペットは、AIX 6.1 で機能します。ソース コードしか残っていないため、ソース記事を提供することはできません。
#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 );
}
新しい興味のあるつまずきのために古いスレッドに答えます。
getProcStartTime
他にもたくさんの用途があるという軽量の C プログラムを作成します。PID を指定すると、プロセスがいつ開始されたかがわかります。プロセスが数か月または数年前に開始された場合でも、タイムスタンプは秒単位まで取得できると思います。このソース コードをgetProcStartTime.cという名前のファイルとして保存します。
#include <time.h>
#include <procinfo.h>
main(argc, argv)
char *argv[];
{
struct procentry64 psinfo;
pid_t pid;
if (argc > 1) {
pid = atoi(argv[1]);
}
else {
printf("Usage : getProcStartTime pid\n");
return 1;
}
if (getprocs64(&psinfo, sizeof(struct procentry64), NULL, sizeof(struct fdsinfo64) , &pid, 1) > 0) {
time_t result;
result = psinfo.pi_start;
struct tm* brokentime = localtime(&result);
printf("%s", asctime(brokentime));
return 0;
} else {
perror("getproc64");
return 1;
}
}
次にコンパイルします。
gcc getProcStartTime.c -o getProcStartTime
これが魔法のロジックです。AIX は、Linux と同様にinit
、PID 1 で呼び出されるプロセスを持っています。このプロセスを強制終了したり、再起動したりすることはできません。したがって、PID 1 の開始時刻はサーバーの起動時刻です。
./getProcStartTime 1
私のサーバーでは、Wed Apr 23 10:33:30 2014を返します。あなたのものは異なります。
注意してください、私はもともとgetProcStartTime
この目的のために特別に作成しましたが、今では他のあらゆる種類のスクリプトで使用しています。Oracle データベースが稼働している期間を知りたいですか? Oracle の PMON の PID を見つけて、その PID を arg として渡しますgetProcStartTime
。
出力を整数の秒数として本当に必要な場合は、上記のコードを変更するのは簡単なプログラミング演習です。名前getProcUptime
は単なる提案です。次に、次のように呼び出すことができます。
./getProcUptime 1
更新: AIX 6.1/7.1 のソース コードとプリコンパイル済みバイナリは、こちらの Github リポジトリに配置されています: https://github.com/Josholith/getProcStartTime
last(1)
?の出力を解析します。
起動時にのみ作成/更新されるファイル/ディレクトリを見つけて、それを統計しますか?
率直に言って、さまざまな正規表現を使用してさまざまな出力を処理することは、uptime
それほど悪くはありません。