LINUX.ORG.RU

Ответ на: комментарий от kostik87

Никак. Они в любом случае будут запускаться последовательно.

я делал так

for IFILE in "$DOME/$SHA"/*; do "$IFILE"; & done 
но сейчас так не канает

zte
() автор топика

Можно попробовть использовать parallel.

anarquista ★★★★★
()
Ответ на: комментарий от kostik87

Если только порождать процессы не будет «лоадер» вместо баша

Так то через хак можно реализовать

zxflux
()
Ответ на: комментарий от zte

Конструкция for IFILE in "$DOME/$SHA"/* означает: получи список файлов в $DOME/$SHA, а конструкция for IFILE in означает - перебери их в цикле по очереди.

Так что все сразу запустить так не получится.

А ответ как запустить все файлы по очереди через while read ... вам написан в одной из прошлых тем, читайте, пробуйте.

kostik87 ★★★★★
()
Ответ на: комментарий от tyamur

Это по очереди, а автор пишет: «все сразу вызвать».

kostik87 ★★★★★
()
Ответ на: комментарий от zte

документацию на башъ читать надобно, но лень… :)
видать для разграничения команд хватает и & и спец.слова done …

pfg ★★★★★
()
Последнее исправление: pfg (всего исправлений: 1)
Ответ на: комментарий от zte

файл должен иметь признак исполняемого

можно попробовать

do bash -с «$IFILE»

targitaj ★★★★★
()
Последнее исправление: targitaj (всего исправлений: 1)

Насколько сильно в один момент? Вообще процессор последовательно работает.

BceM_IIpuBeT ★★☆☆☆
()

То, что ты пытаешься сделать, делается так:

for IFILE in "$DOME/$SHA"/*; do "$IFILE" &; done 

Но лучше (установив parallel, если вдруг не установлен) делать так:

parallel ::: "$DOME/$SHA"/*
CrX ★★★★★
()
Последнее исправление: CrX (всего исправлений: 1)
Ответ на: комментарий от zte

я делал так

for IFILE in "$DOME/$SHA"/*; do "$IFILE"; & done 

но сейчас так не канает

Никогда не канало. Если канало, делал ты не так.

Если нет осознания, что ; это разделение команд, точно такое же, как перенос строки, не пиши в одну строку пока, пиши как положено:

for IFILE in "$DOME/$SHA"/*
do
    "$IFILE" &
done 

А потом уже, когда поймёшь, что делаешь, сможешь заменять переносы строк на ;.

И оставь папку в покое, он не виноват в твоих проблемах с файлами… наверное.

CrX ★★★★★
()
Последнее исправление: CrX (всего исправлений: 1)
Ответ на: комментарий от zte

Один хрен последовательно, по 1 штуке за цикл. Ну добавь какую нибудь прослойку для «$IFILE» чтобы запускалось в отдельном чём то.

kirill_rrr ★★★★★
()

Кстати, а о каком количестве и какой скорости зауска идёт речь?

Я где то читал ,что современный метод порождения процессов-потомков в линуксе довольно креативный, через создание копии процесса-родителя и затем замещение всей выделенной ему памяти. И что в ядре есть защита от дурака, не позволяющая создавать процессы слишком быстро. Или это дефолтное ограничение со стороны системд+cgrops.

kirill_rrr ★★★★★
()
Ответ на: комментарий от kirill_rrr

Ну понятно же, что он хочет. Долгие процессы там, и он хочет, чтоб они параллельно были. Понятно, что запустятся они не в один такт процессора, но работать-то потом параллельно будут, одновременно все сразу, а эти несколько микросекунд не принципиально. По «человеческим меркам это «в один момент». Видишь же, человек вообще слабо понимает, что происходит, зачем буквоедствуешь вдобавок, ещё больше запутывая?

CrX ★★★★★
()
Последнее исправление: CrX (всего исправлений: 3)
Ответ на: комментарий от kirill_rrr

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

Ничего креативного, обычный юниксовый метод

https://en.wikipedia.org/wiki/Fork-exec

annulen ★★★★★
()
Ответ на: комментарий от CrX

Может у него наоборот милион задач на милисекунду? Может его цикл как раз упёрся в лимит ядра на порождение процессов и что то пошло не так?

kirill_rrr ★★★★★
()
Ответ на: комментарий от kirill_rrr

Это очень маловероятно. Судя по задаваемым вопросам и уровню знаний. Очевидно, что ему надо просто запустить параллельно несколько скриптов или типа того. Очень распространённая задача. Ну и фраза «больше не работает» выше подразумевает, что раньше (с правильным синтаксисом) работало. В общем, иногда проще надо быть.

Учиывать каждую мелочь — это хорошо, конечно. Но иногда надо просто остановиться и ответить «в простоте».

А то так и на вопрос «сколько сейчас времени» можно пуститься в рассуждения о том, что смотря что мы имеем в виду под временем, здесь это, или в другом часовом поясе, интересует ли нас официальное время согласно часовому поясу, или точное время по Солнцу на конкретной долготе с точностью до метра, достаточно ли милисекундной точности, или нужны наносекунды, и требуется ли учитывать скорость звука и расстояние до собеседника при ответе, потому что он услышит его не моментально.

CrX ★★★★★
()
Последнее исправление: CrX (всего исправлений: 1)
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.