Как очистить содержимое файла, заблокированного запущенным процессом?

Я получил несколько советов, которые помогли мне исправить ошибку. Некоторые могут счесть это обходным путем.

Я отредактировал команду, чтобы скрипт запускался от имени пользователя Pi:

void sendFile()
{
    string command = "su pi -c \"/home/pi/emailscript " + lastFile + " " + emailAddress + "\"";
    system(command.c_str());
}

«Правильным» решением могло бы быть включение конфигурации mutt в /root, но мне это не помогло.

1
04.07.2020, 22:26
2 ответа

Sudo не работает так, как вы ожидаете, с переадресацией и конвейерами. Если вы sudo свою команду, это будет sudo только часть до > . Либо выполните sudo bash - c "full command", либо временно станьте пользователем root с помощью sudo -sи выполните свою команду.

Открытый файл не мешает вам редактировать его содержимое. Однако он не удаляет файл после его удаления.

Также обратите внимание на параметр copytruncateдля logrotate

1
18.03.2021, 23:22

Попробуйте:

sudo tee thefile </dev/null

или:

sudo truncate -s 0 thefile
1
18.03.2021, 23:22

Теги

Похожие вопросы