man ps
в NOTES
раздел.
CPU usage is currently expressed as the percentage of time spent running
during the entire lifetime of a process. This is not ideal, and it does not
conform to the standards that ps otherwise conforms to. CPU usage is
unlikely to add up to exactly 100%.
И, угадайте, что Вы знаете, но можно также сделать:
top -p
Править: относительно Вашего комментария к другому ответу;
"Хм да я Wonder, как получить это (мгновенный процент использования ЦП) от PS"
Короткий ответ: Вы не можете.
Это похоже на просьбу, чтобы кто-то вычислил скорость автомобиля из изображения.
В то время как top
контрольный инструмент, ps
инструмент снимка. Думайте о нем как это: В любой данный момент процесс или использует ЦП или нет. Таким образом у Вас есть или 0%-я или 100%-я загрузка в тот точный момент.
Предоставление: если ps
должен дать мгновенное использование ЦП, это были бы или 0% или 100%.
top
с другой стороны, продолжайте опрашивать числа и вычисляйте загрузку со временем.
ps
возможно, дал текущее использование – но это потребует, чтобы это считало данные многократно и сон между каждым чтением. Это не делает.
ps
вычисляет использование ЦП следующим образом:
uptime = total time system has been running. ps_time = process start time measured in seconds from boot. pu_time = total time process has been using the CPU. ;; Seconds process has been running: seconds = uptime - ps_time ;; Usage: cpu_usage = pu_time * 1000 / seconds print: cpu_usage / 10 "." cpu_usage % 10
Example: uptime = 344,545 ps_time = 322,462 pu_time = 3,383 seconds = 344,545 - 322,462 = 22,083 cpu_usage = 3,383 * 1,000 / 22,083 = 153 print: 153 / 10 "." 153 % 10 => 15.3
Таким образом, распечатанное число: время, во время которого процесс использовал ЦП, он - время жизни. Как в примере выше. Это сделало так в 15,3% его времени жизни. В 84,7% времени это не прослушивало на ЦП.
ps
, а также top
, данные использования из файлов, хранивших под /proc/
- или псевдофайловая система информации о процессе.
У Вас есть некоторые файлы в корне /proc/
это имеет различную информацию о полном состоянии системы. Кроме того, каждый процесс имеет свою собственную sub папку /proc/
то, где обрабатывают определенные данные, хранится. Так, например, процесс от Вашего вопроса имел папку в /proc/3038/
.
Когда ps
вычисляет использование ЦП, оно использует два файла:
/proc/uptime The uptime of the system (seconds), and the amount of time spent in idle process (seconds). /proc/[PID]/stat Status information about the process.
uptime
это использует первое значение (время работы). [PID]/stat
это использует следующее:# Name Description 14 utime CPU time spent in user code, measured in jiffies 15 stime CPU time spent in kernel code, measured in jiffies 16 cutime CPU time spent in user code, including time from children 17 cstime CPU time spent in kernel code, including time from children 22 starttime Time when the process started, measured in jiffies
jiffie является тактом системных часов. Так, кроме того, это использует различные методы, т.е., sysconf(_SC_CLK_TCK)
, получить Герц системы (количество галочек в секунду) - в конечном счете использование 100 как нейтрализация после исчерпания других опций.
Итак, если utime
1234, и Герц равняется 100 затем:
seconds = utime / Hertz = 1234 / 100 = 12.34
Фактическое вычисление сделано:
total_time = utime + stime
IF include_dead_children
total_time = total_time + cutime + cstime
ENDIF
seconds = uptime - starttime / Hertz
pcpu = (total_time * 1000 / Hertz) / seconds
print: "%CPU" pcpu / 10 "." pcpu % 10
Пример (Вывод из пользовательского сценария Bash):
$ ./psw2 30894
System information
uptime : 353,512 seconds
idle : 0
Process information
PID : 30894
filename : plugin-containe
utime : 421,951 jiffies 4,219 seconds
stime : 63,334 jiffies 633 seconds
cutime : 0 jiffies 0 seconds
cstime : 1 jiffies 0 seconds
starttime : 32,246,240 jiffies 322,462 seconds
Process run time : 31,050
Process CPU time : 485,286 jiffies 4,852 seconds
CPU usage since birth: 15.6%
Это (бит?) теневое усилие, но хорошо. Позволяет делают попытку.
Можно было использовать времена, обеспеченные ps
и вычислите использование ЦП от этого. При размышлении об этом это могло на самом деле быть довольно полезно с некоторыми ограничениями.
Это могло быть полезно для вычисления использования ЦП за более длительный период. Т.е. скажите, что Вы хотите контролировать среднюю загрузку ЦП plugin-container
в Firefox при выполнении некоторой связанной с Firefox задачи.
При помощи вывода от:
PS $-p-o cputime, etimes
CODE HEADER DESCRIPTION
cputime TIME cumulative CPU time, "[DD-]hh:mm:ss" format. (alias time).
etime ELAPSED elapsed time since the process was started, [DD-]hh:]mm:ss.
etimes ELAPSED elapsed time since the process was started, in seconds.
Я использую etime
etimes
в этом образце, на вычислениях, только чтобы быть немного более ясным. Также я добавляю %cpu для "забавы". В т.е. сценарий удара можно было бы, очевидно, использовать etimes
- или лучше читайте из /proc/
и т.д.
Start:
$ ps -p 30894 -o %cpu,cputime,etime,etimes
%CPU TIME ELAPSED ELAPSED
5.9 00:13:55 03:53:56 14036
End:
%CPU TIME ELAPSED ELAPSED
6.2 00:14:45 03:56:07 14167
Calculate times:
13 * 60 + 55 = 835 (cputime this far)
3 * 3,600 + 53 * 60 + 56 = 14,036 (time running this far)
14 * 60 + 45 = 885 (cputime at end)
3 * 3,600 + 56 * 60 + 7 = 14,167 (time running at end)
Calculate percent load:
((885 - 835) / (14,167 - 14,036)) * 100 = 38
Процесс использовал ЦП 38% времени в течение этого периода.
Если Вы хотите знать как ps
делает это и знают немного C, сделайте (похож на Вас выполненный Gnome Debain deriavnt) - хорошее отношение в коде относительно комментариев и т.д.:
apt-get source procps
cd procps*/ps
vim HACKING
Я выглядел твердым и длинным и не мог найти инструмент, который позволил Вам делать это в интерактивном режиме, которое является собственным типом средства просмотра PDF инструмента. Я не попробовал это, но Вы смогли использовать Inkscape или Gimp, чтобы сделать это. Я думаю единственная проблема, с которой Вы, вероятно, столкнетесь с использованием их, способность обработать в пакетном режиме, поворачивают многостраничный документ.
Даже инструменты командной строки, такие как PdfTk не могли сделать вращения постепенно, которое действительно удивило меня.
Однако использование ImageMagick можно повернуть файлы PDF в инкрементах на 1 градус.
$ convert original.pdf -rotate 45 rot45.pdf
Можно поместить любое значение, в котором Вы хотите для поворачивать аргумента. Это также возьмет отрицательные числа, таким образом, это будет возможно:
$ convert original.pdf -rotate -45 rot-45.pdf
Качество вывода привезет существенное использование опций по умолчанию, таким образом, необходимо будет, вероятно, включать -density
переключитесь для увеличения качества получающегося файла PDF.
$ convert -density 300x300 original.pdf -rotate 45 rot45.pdf
Вот снимок экрана, Проявляют с получающимся файлом PDF.
Можно сделать это с ConTeXt.
Версии прежде 2013.10.07 09:47
имел ошибку, которая обрезала страницы, поэтому удостоверьтесь, что Вы используете версию включая фиксацию.
Сначала создайте файл (например. rotatepdf.tex
) со следующим содержанием
\getfiguredimensions [\getdocumentargument{input}]
\starttext
\dorecurse{\noffigurepages}
{\startTEXpage
\externalfigure
[\getdocumentargument{input}]
[page=\recurselevel,
orientation=\getdocumentargument{rotation}]
\stopTEXpage}
\stoptext
Затем можно повернуть PDF с помощью следующей командной строки:
context --input=somefile.pdf --rotation=10 rotatepdf.tex
Вот вывод в качестве примера:
Вы могли импортировать его с GIMP, который включает поворачивать инструмент и может экспортировать назад в PDF.
Этот вопрос также задавался на stackoverflow.com .
Другой вариант — использование LaTeX:
\documentclass{standalone}
\usepackage{graphicx}
\begin{document}
\includegraphics[angle=-1.5]{odd-scan}
\end{document}
В этом случае у меня есть файлodd-scan.pdf
(со слегка повернутым сканом одной страницы )в той же папке, что и файл LaTeX rotated.tex
с указанным выше содержимым, а затем я запускаю pdflatex rotated.tex
. На выходе получается файл rotated.pdf
, в котором PDF-файл повернут на 1,5 градуса по часовой стрелке.
convert
повернуть каждую страницу на единственных нескольких-страницах файл PDF? @Gilles: в моем случае файлы PDF создаются путем сканирования. Таким образом, я думаю, растеризируя, сначала не имеет значения? – StackExchange for All 05.10.2013, 17:49