Мой процесс cmd очень длинный, потому что есть много аргументов. Теперь я хотел бы проверить полный cmd. При использовании cat /proc/PROCESS_NUMBER/cmdline cmd отображается не полностью. Есть ли другой способ увидеть точно полный CMD в Linux?

1 ответ1

2

Как долго ваша командная строка?

Если он находится в диапазоне мегабайт, вы можете перекомпилировать ядро с большим ARG_MAX в linux-3.*/include/linux/limits.h . Я положил туда

#define ARG_MAX  2097152    /* # bytes of args + environ for exec() */

(также может быть способ установить это ограничение динамически, но я забыл, как, и я мог ошибаться)

Мне действительно нравится большой предел ARG_MAX потому что я иногда использую функцию глобального расширения **/*.c zsh которая является моей интерактивной оболочкой.

Не вкладывайте огромное значение в ARG_MAX ; Я предполагаю, что вы хотите иметь менее 2% доступной оперативной памяти.

Обратите внимание, что /proc/*/cmdline содержит нулевые байты. Вы могли бы перевести их, увидеть это.

добавлений

если по какой-либо причине вы не можете позволить себе большую командную строку, найдите способ и соглашение, чтобы избежать такого большого количества программных аргументов. Например, вы можете изменить вызванную программу для чтения некоторых вещей из файла или другого источника (базы данных?). Например, некоторые программы Unix (например, GCC) принимают @ filename для чтения параметров из некоторого файла с именем filename.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .