Мониторинг и время процесса, который уже выполняется, и сохранения общего времени работы в файле

Команды, перечисленные здесь, также не работают на моем Ubuntu v17.10. Если вы все еще хотите использовать липкие заметки, лучшей альтернативой является установка «xpad».

Шаги и команды для установки xpad:

Обновите пакеты и репозитории:
sudo apt-get update
Установите xpad с помощью команды:
sudo apt-get install xpad

Как только обработка будет завершена, «xpad» будет успешно установлен на вашей Linux-системе. Чтобы проверить это, вы можете использовать эту команду:

sudo dpkg -l xpad

Надеюсь, вы найдете «xpad» лучшей альтернативой липким нотам.

С уважением.

2
задан 19 February 2018 в 18:15

9 ответов

Если у вас есть root-доступ, вы можете прикрепить к нему strace и посмотреть, когда именно они выходят. Например, я запустил sleep 1m на одном терминале, а в другом:

% sudo strace -ttte exit_group -p $(pgrep sleep -n)
strace: Process 11637 attached
1520303315.074384 exit_group(0)         = ?
1520303315.074525 +++ exited with 0 +++

Опции strace:

-t         Prefix each line of the trace with the time of day.

-tt        If  given  twice,  the time printed will include the
           microseconds.

-ttt       If given thrice, the time printed will  include  the
           microseconds and the leading portion will be printed
           as the number of seconds since the epoch.

-e expr    A  qualifying expression which modifies which events
           to trace or how to trace them.

Вы можете подключить несколько PID с помощью , что-то вроде:

sudo strace -ttte exit_group -p "$(pidof perl)"
1
ответ дан 22 May 2018 в 13:01

Если у вас есть root-доступ, вы можете прикрепить к нему strace и посмотреть, когда именно они выходят. Например, я запустил sleep 1m на одном терминале, а в другом:

% sudo strace -ttte exit_group -p $(pgrep sleep -n) strace: Process 11637 attached 1520303315.074384 exit_group(0) = ? 1520303315.074525 +++ exited with 0 +++

Опции strace:

-t Prefix each line of the trace with the time of day. -tt If given twice, the time printed will include the microseconds. -ttt If given thrice, the time printed will include the microseconds and the leading portion will be printed as the number of seconds since the epoch. -e expr A qualifying expression which modifies which events to trace or how to trace them.

Вы можете подключить несколько PID с помощью strace, что-то вроде:

sudo strace -ttte exit_group -p "$(pidof perl)"
1
ответ дан 17 July 2018 в 20:30

Если у вас есть root-доступ, вы можете прикрепить к нему strace и посмотреть, когда именно они выходят. Например, я запустил sleep 1m на одном терминале, а в другом:

% sudo strace -ttte exit_group -p $(pgrep sleep -n) strace: Process 11637 attached 1520303315.074384 exit_group(0) = ? 1520303315.074525 +++ exited with 0 +++

Опции strace:

-t Prefix each line of the trace with the time of day. -tt If given twice, the time printed will include the microseconds. -ttt If given thrice, the time printed will include the microseconds and the leading portion will be printed as the number of seconds since the epoch. -e expr A qualifying expression which modifies which events to trace or how to trace them.

Вы можете подключить несколько PID с помощью strace, что-то вроде:

sudo strace -ttte exit_group -p "$(pidof perl)"
1
ответ дан 23 July 2018 в 21:08

Вы можете контролировать выполняемый процесс, например. PID 12345 и определите его общее время работы в секундах, как только оно выйдет следующим образом:

startdate="$(ps -o lstart= 12345)" 
while ps 12345 &>/dev/null ; do sleep 1 ; done 
bc <<< "$(date +%s) - $(date -d "$startdate" +%s)"

Это сначала считывает свойство lstart процесса с использованием ps, которое содержит точную дату начала в виде строки. Мы должны запомнить это, пока процесс все еще выполняется, и сохраним его в переменной оболочки с именем startdate.

Затем мы ждем, пока процесс все еще выполняется, проверяя статус ps 12345 каждую секунду, поскольку он выйдет с ненулевым статусом, если не было найдено никакого совпадающего процесса.

После того, как процесс завершился, мы вычитаем время начала с текущего времени, оба были преобразованы в секунды после Epoch, используя bc и посмотреть результат как временной интервал в секундах.

2
ответ дан 22 May 2018 в 13:01

Вы можете извлечь пользовательское и системное время из выполняющегося процесса из файла / proc / $ pid / stat. Например, если вы хотите получить время пользователя из процесса 3628, используйте:

echo "scale=2; $(cat /proc/3628/stat | cut -d' ' -f14) / $(getconf CLK_TCK)" | bc

.. вышеупомянутое извлечение поля 14 (пользовательское время в тактах) и делит его на тактовую частоту такта вычислить время пользователя в секундах до 2 десятичных знаков.

Для системного времени используйте поле 15, например:

echo "scale=2; $(cat /proc/3628/stat | cut -d' ' -f15) / $(getconf CLK_TCK)" | bc

Вот одно решение, которое назначает переменные оболочки: 3]

PID=1327
USRTIME=`echo "scale=2; $(cat /proc/$PID/stat | cut -d' ' -f14) / $(getconf CLK_TCK)" | bc`
SYSTIME=`echo "scale=2; $(cat /proc/$PID/stat | cut -d' ' -f15) / $(getconf CLK_TCK)" | bc`
echo "Time: USR: $USRTIME SYS: $SYSTIME"
0
ответ дан 22 May 2018 в 13:01

Вы можете контролировать выполняемый процесс, например. PID 12345 и определите его общее время работы в секундах, как только оно выйдет следующим образом:

startdate="$(ps -o lstart= 12345)" while ps 12345 &>/dev/null ; do sleep 1 ; done bc <<< "$(date +%s) - $(date -d "$startdate" +%s)"

Это сначала считывает свойство lstart процесса с использованием ps, которое содержит точную дату начала в виде строки. Мы должны запомнить это, пока процесс все еще выполняется, и сохраним его в переменной оболочки с именем startdate.

Затем мы ждем, пока процесс все еще выполняется, проверяя статус ps 12345 каждую секунду, поскольку он выйдет с ненулевым статусом, если не было найдено никакого совпадающего процесса.

После того, как процесс завершился, мы вычитаем время начала с текущего времени, оба были преобразованы в секунды после Epoch, используя bc и посмотреть результат как временной интервал в секундах.

2
ответ дан 17 July 2018 в 20:30

Вы можете извлечь пользовательское и системное время из выполняющегося процесса из файла / proc / $ pid / stat. Например, если вы хотите получить время пользователя из процесса 3628, используйте:

echo "scale=2; $(cat /proc/3628/stat | cut -d' ' -f14) / $(getconf CLK_TCK)" | bc

.. вышеупомянутое извлечение поля 14 (пользовательское время в тактах) и делит его на тактовую частоту такта вычислить время пользователя в секундах до 2 десятичных знаков.

Для системного времени используйте поле 15, например:

echo "scale=2; $(cat /proc/3628/stat | cut -d' ' -f15) / $(getconf CLK_TCK)" | bc

Вот одно решение, которое назначает переменные оболочки:

PID=1327 USRTIME=`echo "scale=2; $(cat /proc/$PID/stat | cut -d' ' -f14) / $(getconf CLK_TCK)" | bc` SYSTIME=`echo "scale=2; $(cat /proc/$PID/stat | cut -d' ' -f15) / $(getconf CLK_TCK)" | bc` echo "Time: USR: $USRTIME SYS: $SYSTIME"
0
ответ дан 17 July 2018 в 20:30

Вы можете контролировать выполняемый процесс, например. PID 12345 и определите его общее время работы в секундах, как только оно выйдет следующим образом:

startdate="$(ps -o lstart= 12345)" while ps 12345 &>/dev/null ; do sleep 1 ; done bc <<< "$(date +%s) - $(date -d "$startdate" +%s)"

Это сначала считывает свойство lstart процесса с использованием ps, которое содержит точную дату начала в виде строки. Мы должны запомнить это, пока процесс все еще выполняется, и сохраним его в переменной оболочки с именем startdate.

Затем мы ждем, пока процесс все еще выполняется, проверяя статус ps 12345 каждую секунду, поскольку он выйдет с ненулевым статусом, если не было найдено никакого совпадающего процесса.

После того, как процесс завершился, мы вычитаем время начала с текущего времени, оба были преобразованы в секунды после Epoch, используя bc и посмотреть результат как временной интервал в секундах.

2
ответ дан 23 July 2018 в 21:08

Вы можете извлечь пользовательское и системное время из выполняющегося процесса из файла / proc / $ pid / stat. Например, если вы хотите получить время пользователя из процесса 3628, используйте:

echo "scale=2; $(cat /proc/3628/stat | cut -d' ' -f14) / $(getconf CLK_TCK)" | bc

.. вышеупомянутое извлечение поля 14 (пользовательское время в тактах) и делит его на тактовую частоту такта вычислить время пользователя в секундах до 2 десятичных знаков.

Для системного времени используйте поле 15, например:

echo "scale=2; $(cat /proc/3628/stat | cut -d' ' -f15) / $(getconf CLK_TCK)" | bc

Вот одно решение, которое назначает переменные оболочки:

PID=1327 USRTIME=`echo "scale=2; $(cat /proc/$PID/stat | cut -d' ' -f14) / $(getconf CLK_TCK)" | bc` SYSTIME=`echo "scale=2; $(cat /proc/$PID/stat | cut -d' ' -f15) / $(getconf CLK_TCK)" | bc` echo "Time: USR: $USRTIME SYS: $SYSTIME"
0
ответ дан 23 July 2018 в 21:08

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

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