LINUX.ORG.RU

Скрипт запускается рекурсивно

 , ,


0

1

Начну с того что у меня есть скрипт i3statusmorestuff.sh, который после недавних правок (добавления функции uptime) начал запускаться рекурсивно и съедать всю память и весь swap + htop показывает что 6 ядер загружены на ~90%. Также htop говорит что i3statusmorestuff.sh делает потомков а они своих. Скрипт нужен что бы добавить свой вывод к выводу i3status и отобразить это в i3bar. Идею нашел на просторах интернетов.

В i3config у меня есть такая строка:

status_command $HOME/dotfiles/i3statusmorestuff.sh

ps -A спустя 5 секунд после входа через lightdm. Ядро убивает i3statusmorestuff.sh (наверное, ибо память освобождается), а оно продолжает размножаться...

bash -x i3statusmorestuff.sh делает потомков как и i3statusmorestuff.sh.

Всё что я сделал перед тем как сломать: нанёс термопасту и добавил uptime() в скрипт.

P.S. — Если что-то в скрипте можно сделать более простым/менее_затратным способом — всегда рад выслушать.



Последнее исправление: nsynced (всего исправлений: 1)
-local uptime=$(uptime -p | awk '{printf "| Uptime: %s |",$0}')
+local uptime=$(command uptime -p | awk '{printf "| Uptime: %s |",$0}')

command подавит использование функции с этим же именем. А вообще можно просто функцию переименовать (скажем, get_uptime).

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

Да куда там баг ядра. Обычная рекурсия, дающая эффект форк-бомбы. Ну и ещё наличие конвеера ситуацию немного запутало.

А скрипт повторно не запускался, это оболочка просто форкалась, при этом командная строка остаётся нетронутой.

xaizek ★★★★★
()
Последнее исправление: xaizek (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.