PS: Получите короткое имя команды и прошедшее время

4 часа без ответа, поэтому я добавлю свое предположение: это может быть уровень, который переводит физические пути (например, / var / samba / share1 / dir / файл ) в логический ( share1 \ dir \ file ) вместе с необходимыми преобразованиями имен файлов , проверками прав доступа и так далее. Таким образом, это необходимо, а не по желанию.

Сама по себе реализация протокола может быть чем-то, что уже работает на логических путях и просто помещает все, что может найти в VFS, на провод.

2
19.06.2018, 11:07
1 ответ

Несмотря на имя столбца, вы ищете результат comm, а не cmd:

.
ps -o comm= -o etime= -u <user>

cmdявляется нестандартным псевдонимом -для argsи показывает команду со всеми ее аргументами, включая любые изменения, внесенные процессом.

comm— это имя процесса , которое в Linux по умолчанию представляет собой первые 15 байтов базового имени последнего файла, выполняемого процессом (, или совпадает с именем родительского процесса, если он не t выполнять любой файл или имя задачи для задач ядра )и может быть изменено с помощью PR_SET_NAMEprctl().

Обратите внимание, что etime— это время, прошедшее с момента создания процесса, и процесс может (и часто )запускает более одной команды за время своего существования, поэтому, если вы видите cmd 00:03, это не обязательно означает, что cmdвыполнялся в течение 3 секунд, процесс, который выполняется в настоящее время cmd, вполне мог раньше выполнять какую-то другую команду.

$ sh -c 'sleep 3; exec ps -o comm= -o etime='
zsh                   13:48
ps                    00:03

Работающий процесс psранее выполнялся sh, в течение которого большую часть времени он проводил в ожидании другого работающего процессаsleep(после того, как shвыполнялся в течение очень короткого времени ).

2
27.01.2020, 22:09

Теги

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