Нет содержимого журнала с хвостом, но при завершении процесса я вижу содержимое с меньшим количеством

Я предполагаю, что у вас нет правильного динамического компоновщика в системе Busybox.

В своей системе Arch сделайте следующее: ldd ./simplestprogram

Я полагаю, ldd выдаст примерно такой результат:

linux-vdso.so.1 =>  (0x00007fff9b34f000)
libc.so.6 => /lib64/libc.so.6 (0x0000003b19e00000
/lib64/ld-linux-x86-64.so.2 (0x0000003b19a00000)

Последняя строка, / lib64 / ld-linux-x86-64.so.2 - динамический компоновщик. Бьюсь об заклад, этого нет в вашей системе Busybox.

Я скомпилировал программу "hello, world" на своем ноутбуке Arch, использовал vim в двоичном режиме для изменения /lib64/ld-linux-x86-64.so.2 в /lib65/ld-linux-x86-64.so.2 , сохранил его и попытался выполнить. У меня такое же сообщение "файл не найден", что и у вас.

Возможно, у вас даже нет файла libc.so в вашей системе Busybox. Возможно, простое копирование файлов libc.so и динамического компоновщика из систем Arch в системы Busybox (с сохранением каталогов!) Может сработать, но может и не работать. Я просто не уверен.

Одна вещь, которую стоит попробовать: установить musl на свой компьютер Arch. Скомпилируйте вашу простую программу с помощью musl-gcc -static -o simple simple.c , переместите этот исполняемый файл, который не имеет ничего динамически связанного, и попробуйте его в системе Busybox.

4
16.09.2018, 11:21
2 ответа

Ваш исполняемый файл использует буферизованный вывод, поэтому вы увидите что-то с tail, только если создается более одного блока вывода. Размер такого блока будет 4k и более.

Если вы написали исполняемый файл самостоятельно, измените вывод на строковый буфер или на небуферизованный.

4
27.01.2020, 20:48

Запустите вашу программу как:

nohup stdbuf -oL./executable &> /tmp/out.log &

stdbuf может изменить буферизацию по умолчанию.

6
27.01.2020, 20:48

Теги

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