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

cornet =?iso-8859-1?q?cornet_=CE=C1_zmail=2Eru?=
Чт Сен 13 11:42:01 MSD 2001


Sergei wrote:
> 
> Четверг 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 ..."

Угу. Правильно.
 
> > То есть, подстановка к имени каждого файла имени каталога как раз
> > и вызвала превышение предельной длинны строки.
> 
> Нет. Сравни, что больше и на сколько.

Больше первое, причем на
sizeof('/smbshare/globus/Upd/Sisyph/RPMS/')*количество_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 */

Сеньк. Именно это я и хотел выяснить.
:-))))

-- 
******** FIRE & STEEL ********




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