Более чистым и портативным решением будет проверка временной метки файла, который вы создадите с помощью cron специально для этой цели.
Создайте cronjob, который каждую минуту трогает файл, доступный для чтения веб-браузером, например:
* * * * * www-data touch /var/www/cron-testfile
и проверьте временную метку с помощью php:
<?php
if(time() - filemtime('/var/www/cron-testfile') > 600) {
echo "warning, cron not running";
}
?>
Спасибо другим авторам за ответы/предложения. Вот мое полное решение.
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 )
а как насчет 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
,...)
редактировать:
$5
Я не уверен, что полностью понимаю ваш вопрос, поэтому предлагаю его как «отправную точку». Если это поможет вам приблизиться, я уверен, что вы сможете настроить его, чтобы получить то, что вам нужно:
$ lsblk --fs | grep / | awk '{print $1, $2}'