Статистика PID в течение времени требования?

Действительно ли возможно stat идентификатор процесса для получения времени это требовалось?

1
задан 6 October 2014 в 07:05

1 ответ

Возможно, можно посмотреть на cmdline или exe связанный с PID:

# stat /proc/2529/{exe,cmdline}
  File: ‘/proc/2529/exe’ -> ‘/bin/bash’
  Size: 0           Blocks: 0          IO Block: 1024   symbolic link
Device: 3h/3d   Inode: 16136       Links: 1
Access: (0777/lrwxrwxrwx)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2014-09-26 07:46:05.435479000 +0530
Modify: 2014-09-26 07:41:05.447479000 +0530
Change: 2014-09-26 07:41:05.447479000 +0530
 Birth: -
  File: ‘/proc/2529/cmdline’
  Size: 0           Blocks: 0          IO Block: 1024   regular empty file
Device: 3h/3d   Inode: 16117       Links: 1
Access: (0444/-r--r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2014-09-26 07:41:05.447479000 +0530
Modify: 2014-09-26 07:41:05.447479000 +0530
Change: 2014-09-26 07:41:05.447479000 +0530
 Birth: -

Я использовал stat команда, но я не думаю stat функция ответила бы по-другому при применении к этим файлам.


Пример:

Сохраните это как test.c:

#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>

int main(int argc, char *argv[])
{
    struct stat stats;
    char exe_path[32] = "/proc/";
    char cmdline_path[32] = "/proc/";
    char *exe = "/exe", *cmdline = "/cmdline";

    if (argc < 2)
        return -1;
    if (lstat (strcat (strcat (exe_path, argv[1]), exe), &stats) != -1)
    {
        printf("exe: %s\n%s%s%s", exe_path, ctime (&stats.st_atime), ctime (&stats.st_mtime), ctime (&stats.st_ctime));
    }
    else perror ("stat error: ");
    if (lstat (strcat (strcat (cmdline_path, argv[1]), cmdline), &stats) != -1)
    {
        printf("cmdline: %s\n%s%s%s\n", cmdline_path, ctime (&stats.st_atime), ctime (&stats.st_mtime), ctime (&stats.st_ctime));
    }
    else perror ("stat error: ");

    return 0;
}

Проверение его:

$ gcc -o test test.c
$ ./test $$               
exe: /proc/1811/exe
Fri Sep 26 09:02:59 2014
Fri Sep 26 09:02:59 2014
Fri Sep 26 09:02:59 2014
cmdline: /proc/1811/cmdline
Fri Sep 26 09:02:59 2014
Fri Sep 26 09:02:59 2014
Fri Sep 26 09:02:59 2014

$ date
Fri Sep 26 09:34:03 IST 2014

cmd статистика, возможно, более надежная.

2
ответ дан 7 December 2019 в 14:05

Другие вопросы по тегам:

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