Как определить тип файловой системы NTFS / exFAT из сценария

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

Создайте cronjob, который каждую минуту трогает файл, доступный для чтения веб-браузером, например:

* * * * *   www-data touch /var/www/cron-testfile

и проверьте временную метку с помощью php:

<?php
if(time() - filemtime('/var/www/cron-testfile') > 600) {
   echo "warning, cron not running";
}
?>
0
20.03.2019, 11:40
3 ответа

Спасибо другим авторам за ответы/предложения. Вот мое полное решение.

df -Pможно использовать для получения устройства из пути, и его можно передать в lsblk --fsдля получения точной файловой системы. Таким образом, один -лайнер — это:

fs=$( lsblk --fs --noheadings $( df -P $path | awk 'END{print $1}' ) | awk 'END{print $2}' )

Если все, что вам нужно знать, это то, что файловая системаfuseblk---охватывает как ntfs, так и exfatи оказывается достаточной для моих целей, в конце концов ---это можно определить с помощью гораздо проще:

fs=$( stat -f -c '%T' $path )
7
28.01.2020, 02:30

а как насчет df.и mount?

сначала найдем точку монтирования

 cd /a/dir
 mp=$(df. | awk 'NR==2 { print $1}')
  • $mpпри сохранении имени устройства/a/dir

теперь точка монтирования

mount | awk -v mp=$mp '$1 == mp { print $5}'

это должно возвращать тип монтирования (, будь то xfs, etx3,...)

редактировать:

  • Я вижу, что мой ответ описан в одной из ссылок, вы можете изучить строку, возвращаемую mount, а не только$5
2
28.01.2020, 02:30

Я не уверен, что полностью понимаю ваш вопрос, поэтому предлагаю его как «отправную точку». Если это поможет вам приблизиться, я уверен, что вы сможете настроить его, чтобы получить то, что вам нужно:

$ lsblk --fs | grep / | awk '{print $1, $2}'  
4
28.01.2020, 02:30

Теги

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