[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