[mdk-re] Предельная длинна строки команды?

Sergei =?iso-8859-1?q?serpiph_=CE=C1_pochtamt=2Eru?=
Чт Сен 13 11:14:01 MSD 2001


Четверг 13 Сентябрь 2001 10:05, Вы написали:
> Привет всем!
> Вот только что столкнулся с этим ограничением.
> Есть локальное хранилище Сизифа, пытаюсь сделать chmod на файлы:
>
> [root на back /]# pwd
> /
> [root на back /]# chmod 0644 /smbshare/globus/Upd/Sisyph/RPMS/*
> bash: /bin/chmod: Argument list too long
> получаю ошибку.

Образуется 1 строка вида "/smbshare/globus/Upd/Sisyph/RPMS/1.rpm 
/smbshare/globus/Upd/Sisyph/RPMS/2.rpm ..."


> При этом, если перейти в тот каталог где лежат файлы:
> [root на back /]# cd /smbshare/globus/Upd/Sisyph/RPMS
> [root на back RPMS]# pwd
> /smbshare/globus/Upd/Sisyph/RPMS
> [root на back RPMS]# chmod 0644 *
> [root на back RPMS]#
> ошибки не возникает.

Образуется 1 строка вида "1.rpm 2.rpm ..."

> То есть, подстановка к имени каждого файла имени каталога как раз
> и вызвала превышение предельной длинны строки.

Нет. Сравни, что больше и на сколько.

> Отсюда вопрос:
> А какова у нас в Спринге эта самая предельная длинна? По крайней
> мере для bash.
Самый "простой" способ - залезть в исходники bash :))). На самом деле лезете 
в /usr/include/linux/limits.h.
Там англицким по белому написано:

Длина строки аргументов (128Кб)
#define ARG_MAX       131072	/* # bytes of args + environ for exec() */

#define CHILD_MAX        999    /* no limit :-) */
#define OPEN_MAX         256	/* # open files a process may have */
#define LINK_MAX         127	/* # links a file may have */
#define MAX_CANON        255	/* size of the canonical input queue */
#define MAX_INPUT        255	/* size of the type-ahead buffer */
#define NAME_MAX         255	/* # chars in a file name */

Длина строки пути для команды (4Кб-1)
#define PATH_MAX        4095	/* # chars in a path name */

#define PIPE_BUF        4096	/* # bytes in atomic write to a pipe */

-- 
С уважением, Епифанов Сергей.




Подробная информация о списке рассылки community