Как в Mac OSX открыть удаленный файл, который все еще открыт каким-либо процессом?

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

Если там ничего нет, попробуйте снова использовать флешку. Если и это не сработает, следует заподозрить аппаратное обеспечение и проверить на плохие контакты модули оперативной памяти, платы PCI/PCIe и так далее.

Кстати: Тот факт, что машина может запускать Windows, но не может загружать Linux, не означает, что все в идеальном рабочем состоянии с точки зрения аппаратного обеспечения. У меня были подобные случаи, которые я в конце концов объяснил тем, что Windows использует разные команды для инициализации, скажем, контроллера шины PCI. YMMV.

5
10.06.2018, 16:10
2 ответа

Si esto fuera Linux, también podría usar un truco gdb. Pero resulta que podemos descartar ese truco en OS X, porque se basa en el comportamiento específico de Linux -de/dev/fd/(/proc/self/fd/).

Eso es todo lo que sé, no tengo una sugerencia positiva.

Podría salir terriblemente mal, pero ¿ha considerado gdb? ¡Dos milagros en un paquete :un intérprete de C y una forma de inyectar código en el proceso de su elección! Aparentemente, también puede usarlo para depurar.

Afortunadamente, la biblioteca estándar de C también incluye una función que interpreta scripts. El lenguaje de secuencias de comandos en su plataforma puede ser más conveniente para escribir que C...

Pensé en un script que usa lesspara OS X. Este es un truco frágil para volver al inicio del archivo de registro basado en OS X, bash :funciona menos en descriptores de archivos abiertos, cat no Después de leer todo el archivo de registro con less, la posición de FD debería estar al final del archivo, que con suerte es la posición original antes de que nos entrometiéramos con él.

Pero solo funciona si el archivo también se abrió para lectura. De acuerdo con su salida lsof, el archivo solo estaba abierto para escritura.

gdb -p 264 <<EOF
call (int) system("exec </dev/null >/tmp/log 2>&1; less /dev/fd/20")
EOF

Lancé el tipo de devolución porque, de lo contrario, mi sistema se quejó de que no conocía el tipo de devolución de system(). Presumiblemente, esto también significa que tampoco estaba seguro de los tipos de argumento, por lo que ya suena como una gran idea.

El uso de system()para manipular los descriptores de archivos funcionó de alguna manera cuando lo probé en mi caja de Linux... una vez. No prometo que siempre funcionará :). Por ejemplo, técnicamente no se garantiza que esto sea seguro si el programa está ejecutando un controlador de señales, o de hecho system()en sí mismo.(system()no es una de las pocas funciones que se garantiza que sea "re -participante" ).

4
27.01.2020, 20:40

No he verificado que icatse comporte correctamente cuando opera en un dispositivo de bloqueo, ni que Mac OS tenga dispositivos de bloqueo, ni si hacer lo siguiente CONSUMIRÁ SUS DATOS.

Podría ser posible usar icat /dev/MY-DEVICE 14883372. El comando icatlo proporciona The Sleuth Kit® (TSK ).

https://github.com/sleuthkit/sleuthkit/wiki/HFS

(Ya mencionaste Linux. Esta idea se inspiró en debugfs, que tiene un comando para hacer lo mismo con los sistemas de archivos de Linux ext2/ext3/ext4 ).

0
27.01.2020, 20:40

Теги

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