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

Text file busy при обновлении программы

Сообщение Text file busy (номер 26, ETXTBSY) появляется при попытке записать в файл программы, которая сейчас выполняется. Классика при выкладке новой версии поверх работающей службы.

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

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

  1. Файл программы перезаписывается во время работы

    Ядро не позволяет менять содержимое выполняющегося файла. Копирование поверх него даёт эту ошибку.

  2. Файл занят другим процессом

    Кто-то запустил программу вручную, и она работает в обход службы.

Диагностика

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

Кто держит файл открытым.

sudo fuser -v /путь/к/программе

Работающие процессы этой программы.

pgrep -a имя-программы

Решение

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

1. Файл программы перезаписывается во время работы
Почему происходит
Ядро не позволяет менять содержимое выполняющегося файла. Копирование поверх него даёт эту ошибку.
Как проверить
Найдите процессы, использующие файл.
sudo fuser -v /usr/local/bin/myapp
pgrep -a myapp
Как исправить
Выкладывайте новую версию рядом и заменяйте файл переименованием: замена ссылки атомарна и не требует остановки. Либо останавливайте службу перед заменой.
sudo install -m 755 myapp.new /usr/local/bin/myapp.tmp && sudo mv /usr/local/bin/myapp.tmp /usr/local/bin/myapp && sudo systemctl restart myapp
2. Файл занят другим процессом
Почему происходит
Кто-то запустил программу вручную, и она работает в обход службы.
Как проверить
Посмотрите все процессы по имени и их контрольные группы.
ps -eo pid,user,cmd | grep -v grep | grep myapp
systemd-cgls --no-pager | grep -B3 myapp
Как исправить
Завершите лишний процесс. Запускать службу вручную в обход systemd не стоит: он о таком процессе ничего не знает.

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

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

$ sudo cp myapp.new /usr/local/bin/myapp
cp: cannot create regular file '/usr/local/bin/myapp': Text file busy

$ sudo fuser -v /usr/local/bin/myapp
                     USER        PID ACCESS COMMAND
/usr/local/bin/myapp: app        1200 ....e myapp

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

Источники

  • open(2): ошибка ETXTBSY документация программы
    сверено 15 сентября 2026
  • Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)
    Воспроизведено копированием поверх файла работающей службы.
    собственная проверка, systemd 255
    сверено 15 сентября 2026