# ERROR: external command failed: cmd.StdoutPipe() failed: pipe2: too many open files

**URL:** <https://support.wirenboard.com/t/error-external-command-failed-cmd-stdoutpipe-failed-pipe2-too-many-open-files/23632>\
**Category:** Rule Engine\
**Created:** [December 3, 2024, 9:44am UTC](https://support.wirenboard.com/t/error-external-command-failed-cmd-stdoutpipe-failed-pipe2-too-many-open-files/23632 "2024-12-03T09:44:24Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![vepelnet](https://support.wirenboard.com/user_avatar/support.wirenboard.com/vepelnet/32/16248_2.png) [@vepelnet](https://support.wirenboard.com/u/vepelnet)\
**Post date:** [December 3, 2024, 9:44am UTC](https://support.wirenboard.com/t/error-external-command-failed-cmd-stdoutpipe-failed-pipe2-too-many-open-files/23632/1 "2024-12-03T09:44:24Z")

</div>

День добрый!  
В логе правил wb-rules встретил такую ошибку.

```auto
ERROR: external command failed: cmd.StdoutPipe() failed: pipe2: too many open files

```

Приложен архив диагностики.

_приложен диагностический архив, доступен только сотрудникам поддержки_
 (337,7 КБ)  
[wb-rules\_20241203T123547.log](https://support.wirenboard.com/uploads/short-url/ddClV90SIGjoW5aCumkXGPWd0eX.log) (26,9 КБ)

---

<div class="post-metadata">

**Author:** ![BrainRoot](https://avatars.discourse-cdn.com/v2/letter/b/c2a13f/32.png) [@BrainRoot](https://support.wirenboard.com/u/BrainRoot)\
**Post date:** [December 3, 2024, 12:35pm UTC](https://support.wirenboard.com/t/error-external-command-failed-cmd-stdoutpipe-failed-pipe2-too-many-open-files/23632/4 "2024-12-03T12:35:15Z")

</div>

Добрый день.  
Покажите пожалуйста вывод

```auto
cat /proc/sys/fs/file-nr

```

ну и

```auto
ulimit -u

```

и

```auto
ulimit -n

```

также покажите вывод

```auto
ls /proc/$(pidof wb-rules)/fd/ | wc -l

```

---

<div class="post-metadata">

**Author:** ![vepelnet](https://support.wirenboard.com/user_avatar/support.wirenboard.com/vepelnet/32/16248_2.png) [@vepelnet](https://support.wirenboard.com/u/vepelnet)\
**Post date:** [December 3, 2024, 1:11pm UTC](https://support.wirenboard.com/t/error-external-command-failed-cmd-stdoutpipe-failed-pipe2-too-many-open-files/23632/5 "2024-12-03T13:11:35Z")

</div>

```auto
cat /proc/sys/fs/file-nr

```

3040 0 2147483647

```auto
ulimit -u

```

7847

```auto
ulimit -n

```

1024

```auto
ls /proc/$(pidof wb-rules)/fd/ | wc -l

```

ls: cannot access ‘11613/fd/’: No such file or directory  
45

---

<div class="post-metadata">

**Author:** ![BrainRoot](https://avatars.discourse-cdn.com/v2/letter/b/c2a13f/32.png) [@BrainRoot](https://support.wirenboard.com/u/BrainRoot)\
**Post date:** [December 3, 2024, 1:23pm UTC](https://support.wirenboard.com/t/error-external-command-failed-cmd-stdoutpipe-failed-pipe2-too-many-open-files/23632/6 "2024-12-03T13:23:31Z")

</div>

А какой pid у процесса wb-rules?  
Проверьте и еще раз посмоотрите сколько открыто им объектов.  
Также, вероятно то что вызывается с помощью spawn - вызывается несколько раз подряд, выведите в лог вызовы, понятнее будет.

---

<div class="post-metadata">

**Author:** ![vepelnet](https://support.wirenboard.com/user_avatar/support.wirenboard.com/vepelnet/32/16248_2.png) [@vepelnet](https://support.wirenboard.com/u/vepelnet)\
**Post date:** [December 3, 2024, 1:47pm UTC](https://support.wirenboard.com/t/error-external-command-failed-cmd-stdoutpipe-failed-pipe2-too-many-open-files/23632/7 "2024-12-03T13:47:48Z")

</div>

```auto
ls /proc/26090/fd/ | wc -l

```

897

> **Спойлер**
>
> ![image](https://support.wirenboard.com/uploads/default/original/3X/e/9/e92a4a93cccc67f0e00fe1a9e7a5f36bac2c1b45.jpeg)

Поподробнее про

```auto
Также, вероятно то что вызывается с помощью spawn - вызывается несколько раз подряд, выведите в лог вызовы, понятнее будет.

```

---

<div class="post-metadata">

**Author:** ![BrainRoot](https://avatars.discourse-cdn.com/v2/letter/b/c2a13f/32.png) [@BrainRoot](https://support.wirenboard.com/u/BrainRoot)\
**Post date:** [December 3, 2024, 1:59pm UTC](https://support.wirenboard.com/t/error-external-command-failed-cmd-stdoutpipe-failed-pipe2-too-many-open-files/23632/8 "2024-12-03T13:59:05Z")

</div>

> [@vepelnet](#):
>
> 897

Проверьте количество открываемых файлов. Судя по потребелнию реурсов - возможно наличие циклов. Ну и количество открытых объектов близко к лимиту для процесса (1024).  
Если оно превышает лимит - в лог выводится про это сообщение.

---

<div class="post-metadata">

**Author:** ![vepelnet](https://support.wirenboard.com/user_avatar/support.wirenboard.com/vepelnet/32/16248_2.png) [@vepelnet](https://support.wirenboard.com/u/vepelnet)\
**Post date:** [December 4, 2024, 11:44am UTC](https://support.wirenboard.com/t/error-external-command-failed-cmd-stdoutpipe-failed-pipe2-too-many-open-files/23632/9 "2024-12-04T11:44:02Z")

</div>

Опять же, о каких файлах идет речь, если

```auto
ls /mnt/data/etc/wb-rules/

'Clear MQTT.js' MAP-toVirtual_WB-v-T1-1.js MAP-toVirtual_WB-v-T2-1.js WB-SMS-Center.js WB-V-CHOK1-1.js WB-V-HOLOD1-1.js WB-V-K2-1.js rules.js
 GC-Nasosnaya1.js MAP-toVirtual_WB-v-T1-2.js MAP-toVirtual_WB-v-T2-2.js WB-V-CH1-1.js WB-V-CHOK2-1.js WB-V-K1-1.js alarms.conf

```

Циклов нет, эти правила работают уже давно. Они бы убили контроллер очень быстро.  
Время работы контроллера на сейчас уже 43 дня.

Список открытых файлов. Большинство /dev/mem открыты wb-rules.  
[lsof-R.log](https://support.wirenboard.com/uploads/short-url/eVfEH1SwNKEBITK4cnGLOTWGR9V.log) (3,7 МБ)  
[lsof.log](https://support.wirenboard.com/uploads/short-url/x1DRCLIOOrJyIpYHgw5D83ZwfGv.log) (3,5 МБ)

---

<div class="post-metadata">

**Author:** ![BrainRoot](https://avatars.discourse-cdn.com/v2/letter/b/c2a13f/32.png) [@BrainRoot](https://support.wirenboard.com/u/BrainRoot)\
**Post date:** [December 4, 2024, 1:37pm UTC](https://support.wirenboard.com/t/error-external-command-failed-cmd-stdoutpipe-failed-pipe2-too-many-open-files/23632/10 "2024-12-04T13:37:12Z")

</div>

Нет, тут речь именно о файлах, то есть то что выводится `ls /proc/$(pidof wb-rules)/fd/ | wc -l`, имено открытые файлы.  
Но чувствую что моей компетенции мало, и прежде чем рекомендовать поменять (описать для wb-rules) в /etc/security/limits.conf лимит “побольше” Как в документации [limits.conf(5) — libpam-modules — Debian bullseye — Debian Manpages](https://manpages.debian.org/bullseye/libpam-modules/limits.conf.5.en.html)  
посоветуюсь с настоящими разрабочиками.

---

<div class="post-metadata">

**Author:** ![vepelnet](https://support.wirenboard.com/user_avatar/support.wirenboard.com/vepelnet/32/16248_2.png) [@vepelnet](https://support.wirenboard.com/u/vepelnet)\
**Post date:** [December 17, 2024, 11:38am UTC](https://support.wirenboard.com/t/error-external-command-failed-cmd-stdoutpipe-failed-pipe2-too-many-open-files/23632/11 "2024-12-17T11:38:06Z")

</div>

Слышно что-то по нашим баранам?

---

<div class="post-metadata">

**Author:** ![BrainRoot](https://avatars.discourse-cdn.com/v2/letter/b/c2a13f/32.png) [@BrainRoot](https://support.wirenboard.com/u/BrainRoot)\
**Post date:** [December 17, 2024, 11:57am UTC](https://support.wirenboard.com/t/error-external-command-failed-cmd-stdoutpipe-failed-pipe2-too-many-open-files/23632/12 "2024-12-17T11:57:51Z")

</div>

У меня подобное воспроизводится только если из правил запускаю несколько тысяч sh сессий.  
Проверьте, что именно из скриптов вызывается.

---

<div class="post-metadata">

**Author:** ![vepelnet](https://support.wirenboard.com/user_avatar/support.wirenboard.com/vepelnet/32/16248_2.png) [@vepelnet](https://support.wirenboard.com/u/vepelnet)\
**Post date:** [December 17, 2024, 12:48pm UTC](https://support.wirenboard.com/t/error-external-command-failed-cmd-stdoutpipe-failed-pipe2-too-many-open-files/23632/13 "2024-12-17T12:48:15Z")

</div>

Вот сейчас как раз 1024

```auto
ls /proc/$(pidof wb-rules)/fd/ | wc -l

```

Дополнил /etc/security/limits.conf строками

```auto
* soft nofile 4096
* hard nofile 65535

```

Но ничего не поменялось

> **Скрин**
>
> ![image](https://support.wirenboard.com/uploads/default/original/3X/1/9/191d8959301d2a93b722572e575a86e2382b96db.png)

---

<div class="post-metadata">

**Author:** ![BrainRoot](https://avatars.discourse-cdn.com/v2/letter/b/c2a13f/32.png) [@BrainRoot](https://support.wirenboard.com/u/BrainRoot)\
**Post date:** [December 17, 2024, 4:23pm UTC](https://support.wirenboard.com/t/error-external-command-failed-cmd-stdoutpipe-failed-pipe2-too-many-open-files/23632/14 "2024-12-17T16:23:22Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![vepelnet](https://support.wirenboard.com/user_avatar/support.wirenboard.com/vepelnet/32/16248_2.png) [@vepelnet](https://support.wirenboard.com/u/vepelnet)\
**Post date:** [December 18, 2024, 6:13am UTC](https://support.wirenboard.com/t/error-external-command-failed-cmd-stdoutpipe-failed-pipe2-too-many-open-files/23632/15 "2024-12-18T06:13:22Z")

</div>

А можно пояснить определение - вызов внешних процессов из скриптов?  
Чтобы мы поняли друг-друга.  
Или пример привести простой.

---

<div class="post-metadata">

**Author:** ![BrainRoot](https://avatars.discourse-cdn.com/v2/letter/b/c2a13f/32.png) [@BrainRoot](https://support.wirenboard.com/u/BrainRoot)\
**Post date:** [December 18, 2024, 6:57am UTC](https://support.wirenboard.com/t/error-external-command-failed-cmd-stdoutpipe-failed-pipe2-too-many-open-files/23632/16 "2024-12-18T06:57:41Z")

</div>

> [@vepelnet](#):
>
> А можно пояснить определение - вызов внешних процессов из скриптов?

Использование [GitHub - wirenboard/wb-rules: Rule engine for Wiren Board](https://github.com/wirenboard/wb-rules?tab=readme-ov-file#%D0%B7%D0%B0%D0%BF%D1%83%D1%81%D0%BA-%D0%B2%D0%BD%D0%B5%D1%88%D0%BD%D0%B8%D1%85-%D0%BF%D1%80%D0%BE%D1%86%D0%B5%D1%81%D1%81%D0%BE%D0%B2-spawn)  
То есть spawn, runShellCommand

---

<div class="post-metadata">

**Author:** ![vepelnet](https://support.wirenboard.com/user_avatar/support.wirenboard.com/vepelnet/32/16248_2.png) [@vepelnet](https://support.wirenboard.com/u/vepelnet)\
**Post date:** [December 19, 2024, 5:59am UTC](https://support.wirenboard.com/t/error-external-command-failed-cmd-stdoutpipe-failed-pipe2-too-many-open-files/23632/17 "2024-12-19T05:59:02Z")

</div>

Такой запрос есть только в одном скрипте с кнопкой, которая собирает данные с модулей.  
И она жмется очень редко. Поставил счетчик нажатий на кнопку. Но не думаю что проблема в этом.

> **Спойлер**
>
> ![image](https://support.wirenboard.com/uploads/default/original/3X/e/b/eb00eaf1431bde325305ec531bf882b96ef9a510.png)

---

<div class="post-metadata">

**Author:** ![BrainRoot](https://avatars.discourse-cdn.com/v2/letter/b/c2a13f/32.png) [@BrainRoot](https://support.wirenboard.com/u/BrainRoot)\
**Post date:** [December 19, 2024, 8:51am UTC](https://support.wirenboard.com/t/error-external-command-failed-cmd-stdoutpipe-failed-pipe2-too-many-open-files/23632/18 "2024-12-19T08:51:17Z")

</div>

А вот если сделать `systemctl restart wb-rules`  
и проверить количество - оно сразу большое или растет понемногу?  
Гипотезу с вызовом внешних процессов осталвляю, но приоритет ниже конечно, если вызывается редко.

---

<div class="post-metadata">

**Author:** ![vepelnet](https://support.wirenboard.com/user_avatar/support.wirenboard.com/vepelnet/32/16248_2.png) [@vepelnet](https://support.wirenboard.com/u/vepelnet)\
**Post date:** [January 9, 2025, 9:09am UTC](https://support.wirenboard.com/t/error-external-command-failed-cmd-stdoutpipe-failed-pipe2-too-many-open-files/23632/19 "2025-01-09T09:09:07Z")

</div>

Привет!  
За выходные, 22 дня, нажатий 0.  
А файлов открытых 1017.  
После перезапуска сразу 18, и, видимо, растет понемногу.

> **22 дня**
>
> ![Screenshot_439](https://support.wirenboard.com/uploads/default/original/3X/c/f/cf3b1c501463b9949d3650d8aa2dbe32308cf8ac.png)

> **ls /proc/$(pidof wb-rules)/fd/ | wc -l**
>
> ![Screenshot_440](https://support.wirenboard.com/uploads/default/original/3X/9/5/95f50570d3eefa2e7e4b2b4b4d0a38d71b993072.png)

---

<div class="post-metadata">

**Author:** ![BrainRoot](https://avatars.discourse-cdn.com/v2/letter/b/c2a13f/32.png) [@BrainRoot](https://support.wirenboard.com/u/BrainRoot)\
**Post date:** [January 9, 2025, 10:50am UTC](https://support.wirenboard.com/t/error-external-command-failed-cmd-stdoutpipe-failed-pipe2-too-many-open-files/23632/20 "2025-01-09T10:50:43Z")

</div>

> [@vepelnet](#):
>
> А файлов открытых 1017.

Так, значит не в этом (скорее всего) дело.  
У меня, что интересно, при аптайме 42 дня:

```auto
ls /proc/$(pidof wb-rules)/fd/ | wc -l
20

```

А если зайти в (каждое) правило, добавить что-то, пробел или комментарий и сохранить - после сохранения количество меняется? Если да - то, скорее всего найдется источник. и уже по этому скрипту можно будет попробовать воспроизвести чтобы отдать разработчикам.

---

<div class="post-metadata">

**Author:** ![vepelnet](https://support.wirenboard.com/user_avatar/support.wirenboard.com/vepelnet/32/16248_2.png) [@vepelnet](https://support.wirenboard.com/u/vepelnet)\
**Post date:** [January 13, 2025, 10:06am UTC](https://support.wirenboard.com/t/error-external-command-failed-cmd-stdoutpipe-failed-pipe2-too-many-open-files/23632/21 "2025-01-13T10:06:39Z")

</div>

Спустя 4 дня от моего сообщения ничего не поменялось.  
Так же 18.

```auto
ls /proc/$(pidof wb-rules)/fd/ | wc -l
18

```

НО у меня есть подозрения что все это связано с модемом.  
Правила связаны с модемом 100%. Через модем отправляются смс об ошибках.  
И через некоторое время после полной перезагрузки WB модем перестает работать.  
Он есть в системе, но оболочка его не видит.  
Есть подозрения что он генерит файлы, а когда лимит заканчивается - он отваливается.  
Как проверить?

> **Модем**
>
> ![Screenshot_441](https://support.wirenboard.com/uploads/default/original/3X/d/d/dd2c6737785880f57960db6c4981065a4980db5c.png)

> **Сети**
>
> ![Screenshot_442](https://support.wirenboard.com/uploads/default/original/3X/f/2/f2ab6d6836e92a09d1598b7dad12660abb58c1de.png)

> **Статус**
>
> ![Screenshot_443](https://support.wirenboard.com/uploads/default/original/3X/b/1/b17c9cfce4cb9c350162e292c5a878faa6552809.png)

---

<div class="post-metadata">

**Author:** ![BrainRoot](https://avatars.discourse-cdn.com/v2/letter/b/c2a13f/32.png) [@BrainRoot](https://support.wirenboard.com/u/BrainRoot)\
**Post date:** [January 13, 2025, 12:33pm UTC](https://support.wirenboard.com/t/error-external-command-failed-cmd-stdoutpipe-failed-pipe2-too-many-open-files/23632/22 "2025-01-13T12:33:56Z")

</div>

> [@vepelnet](#):
>
> Он есть в системе, но оболочка его не видит.  
> Есть подозрения что он генерит файлы, а когда лимит заканчивается - он отваливается.  
> Как проверить?

Это довольно подозрительно.  
А существует ли само соединение модема в NetworkManager? Его, соединения, файл в /etc/NetworkManager/system-connections

А через какое время? Ну и - если создайте выложите диагностический архив. После того как модем “пропадет”.

[Next page](https://support.wirenboard.com/t/error-external-command-failed-cmd-stdoutpipe-failed-pipe2-too-many-open-files/23632.md?page=2)
