Процент использования ЦП единственного процесса

Я не смог воспроизвести это в оболочке Bash:

# non-empty file1
$ echo 1 > file1.txt

$ cat file1.txt >> file2.txt >> file1.txt 
cat: file1.txt: input file is output file

1 файл создается с 0 длинами, но затем я получаю вышеупомянутое сообщение:

$ ls -l
total 4
-rw-rw-r-- 1 saml saml   2 Sep 10 19:35 file1.txt
-rw-rw-r-- 1 saml saml   0 Sep 10 19:35 file2.txt

На основе ответа @jlliagre я не уверен, почему я получаю эти 2 файла. Это может зависеть от cat реализация.

РЕДАКТИРОВАНИЕ № 1

@jlliagre обновил его ответ для показа этого кода, который он заявляет как эквивалентный:

>> file2.txt ; cat file1.txt >> file1.txt

Таким образом, теперь я знаю, почему я получаю пустое file2.txt. Эта нотация законна:

>> file2.txt

И создаст пустой файл.

4
23.06.2014, 02:01
2 ответа

Способ сделать это - написать небольшой Бэш-скрипт, который:

  • принимает интересующий процесс/команду в качестве единственного аргумента, $arg1
  • извлекает PID для этого процесса с адекватным ps | grep или ps | awk
  • держит PID-номер в $arg2
  • запускает задание cron на втором с исполняемым файлом, основанным на
    ps -eo pcpu, cmd | egrep $arg1 >> logfile-$arg2
  • обусловливает завершение задания cron тем, существует ли процесс до сих пор, (достаточно проверить номер PID, который вы сохранили в $arg2)
  • выходит, когда тестовый PID больше не отображается в выводе ps
0
27.01.2020, 21:00

Для этого можно использовать утилиту ps.

Чтобы увидеть процент использования процессора в течение жизни одного процесса, можно сделать:

ps h -p $PID -o %cpu 

Чтобы увидеть процент использования процессора всеми запущенными процессами, можно сделать что-то вроде:

ps ax -o pid,%cpu,comm
2
27.01.2020, 21:00

Теги

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