SystemdDoctor
служба не работает скрипты файлы

Argument list too long в службе или скрипте

Сообщение Argument list too long (номер 7, E2BIG) означает, что суммарный размер аргументов и окружения превысил предел ядра. Обычно это следствие подстановки имён файлов в каталоге с десятками тысяч файлов.

Вероятные причины

По порядку: сверху то, что встречается чаще.

  1. Подстановка имён файлов дала слишком много аргументов

    Запись вида rm /var/spool/app/* в скрипте разворачивается в список всех файлов. В каталоге с сотнями тысяч файлов предел исчерпывается.

  2. Очень большое окружение

    Переменные окружения входят в тот же предел. Служба с сотнями переменных или огромным значением может упереться в него.

Диагностика

Команды идут в том порядке, в котором их стоит выполнять: каждая следующая проверяет то, что осталось после предыдущей.

Предел суммарного размера аргументов и окружения.

getconf ARG_MAX

Подтверждение и контекст вызова.

journalctl -u myapp.service -n 30 --no-pager | grep -i "too long"

Решение

Решение своё для каждой причины. Сначала определите, какая из них ваша, — иначе правки наложатся друг на друга.

1. Подстановка имён файлов дала слишком много аргументов
Почему происходит
Запись вида rm /var/spool/app/* в скрипте разворачивается в список всех файлов. В каталоге с сотнями тысяч файлов предел исчерпывается.
Как проверить
Посчитайте файлы в каталоге.
ls -1 /var/spool/app | wc -l
getconf ARG_MAX
Как исправить
Перепишите вызов через поиск с передачей аргументов порциями — это работает при любом числе файлов.
find /var/spool/app -maxdepth 1 -type f -delete
2. Очень большое окружение
Почему происходит
Переменные окружения входят в тот же предел. Служба с сотнями переменных или огромным значением может упереться в него.
Как проверить
Посмотрите размер окружения службы.
systemctl show myapp.service -p Environment | wc -c
Как исправить
Перенесите объёмные данные в файл и передавайте путь, а не содержимое. Для секретов есть механизм учётных данных.

Пример вывода

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

cleanup.sh[4200]: /usr/local/bin/cleanup.sh: line 4: /bin/rm: Argument list too long
systemd[1]: cleanup.service: Main process exited, code=exited, status=1/FAILURE

Связанные ошибки

Источники

  • execve(2): ошибка E2BIG документация программы
    сверено 15 сентября 2026
  • Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)
    Воспроизведено на каталоге с 300 тысячами файлов.
    собственная проверка, systemd 255
    сверено 15 сентября 2026