在Linux系统中,一切都可以通过命令行命令来控制。 从小任务到大任务,您都可以找到一个简单的命令来完成您的工作。如果您是 Linux 新手,并且对系统管理感兴趣,那么您需要对命令行有扎实的了解。在本文中,我们将使用一些易于理解的示例来讨论此命令的基础知识。 最后附上uptime代码实现。
如何使用 uptime 命令
我们知道,uptime 命令为您提供系统启动(或运行)的时间。除了系统的运行时间,您还可以获得系统的其他详细信息,包括当前时间、运行会话的用户数以及过去 1、5 和 15 分钟的系统平均负载。
uptime [options]
uptime 的基本用法非常简单——只需输入命令名称并按回车键即可。
通过命令行运行 Linux 系统的 uptime 命令,会输出以下信息。
- 系统的当前时间。
- 系统的总正常运行时间。
- 当前正在运行系统的活动用户。
- 过去 1、5 和 15 分钟内可用的系统负载的平均值。
“up”表示系统正在运行。
这里的
系统负载平均值
是处于可运行状态或可运行状态的平均进程数不间断状态。 处于可运行状态的进程要么正在使用 CPU,要么正在等待使用中央处理器。 处于不可中断状态的进程正在等待某些 I/O 访问,例如等待磁盘。
如何查看uptime帮助信息
uptime 命令带有各种选项。 要检查选项,我们可以运行 help 命令。
除了 help 命令,您还可以运行 man 命令来检查“uptime”命令的使用情况。
如何让工具以漂亮的格式显示时间
如果您只想知道系统已启动的时间,并且以更易于阅读的格式知道,请使用 -p 命令行选项。
uptime -p
您可以获得非常清晰的输出,以天数、小时数、分钟数和秒数的格式显示正常运行时间。
我们还可以使用“-s”选项在命令行界面上运行以下命令。
显示的信息来看,检查系统首次启动的确切时间,而不是自启动以来花费的时间。
uptime代码实现
void getloadavg(char *loadavg, size_t nelem)
{
char command[512] = {0};
snprintf(command, sizeof(command), "%s |%s %s|%s -F: '%s'", "w","grep", "load", "awk","{print $4}");
FILE *fp = popen(command, "r");
if (fp == NULL)
{
printf("popen failed!\n");
return;
}
fread(loadavg, nelem-1, 1, fp);
fclose(fp);
}
static void print_uptime(void)
{
FILE *fp;
time_t time_now;
time_t uptime = 0;
long int updays;
int uphours;
int upmins;
struct tm *tmn;
struct utmp *u;
int utmp_num = 0;
char sz_loadavg[64] = {0};
fp = fopen ("/proc/uptime", "r");
if (fp != NULL)
{
char buf[BUFSIZ];
char *b = fgets (buf, BUFSIZ, fp);
if (b != NULL)
{
char *end_ptr;
double upsecs = strtod (buf, &end_ptr);
//printf("buf: %s\n",buf);
//printf("end_ptr: %s\n",end_ptr);
if (buf != end_ptr)
uptime = (0 <= upsecs && upsecs < TYPE_MAXIMUM (time_t)
? upsecs : -1);
}
fclose (fp);
}
while((u = getutent()))
{
if(u->ut_type == USER_PROCESS)
{
++utmp_num;
//printf("%d %s %s %s \n", u->ut_type, u->ut_user, u->ut_line, u->ut_host);
}
}
time_now = time (NULL);
if (uptime == 0)
{
printf("couldn't get boot time\n");
}
updays = uptime / 86400;
uphours = (uptime - (updays * 86400)) / 3600;
upmins = (uptime - (updays * 86400) - (uphours * 3600)) / 60;
tmn = localtime (&time_now);
//printf("uphours: %d\n",uphours);
//printf("upmins: %d\n",upmins);
printf("%2d:%2d:%2d\t", tmn->tm_hour, tmn->tm_min, tmn->tm_sec); /* 这将打印当前时钟时间 */
printf("up %2d:%2d\t",uphours,upmins);
printf("%lu users\t",utmp_num);
getloadavg(sz_loadavg,sizeof(sz_loadavg));
printf ("load average: %s\t",sz_loadavg);
}
运行结果
当前输出以下信息:当前时间,系统多长时间已运行,当前登录的用户数,以及过去的系统平均负载1、5 和 15 分钟。
总结
uptime命令易于理解和使用。 它不提供很多功能(或命令行选项),希望本篇文章对你有帮助,如果你有任何疑问,可以查看man手册。
欢迎关注微信公众号【
程序猿编码
】,需要源代码欢迎添加本人微信号(
17865354792
)交流学习。