Можно проверить то, что смонтировано путем издания плоскости mount
команда. Это также говорит Вам "исходное устройство" каждой точки монтирования.
Если Вы используете устройства в /dev/disk/by-id
для монтирования тома NTFS затем у Вас будет фиксированное имя, по которому можно проверить в сценариях, в противоположность /dev/sd*
имена, которые могут измениться между перезагрузками и управлять событиями подключения.
Таким образом, что-то вроде этого может проверить на присутствие подсоединенного внешнего диска в bash
:
if mount | grep -q "/dev/disk/by-id/$DEVICE_WITH_NTFS_FILESYSTEM"; then
# device is mounted
;; # do nothing
else
# device is not mounted, let's mount it
mount $DEVICE_WITH_NTFS_FILESYSTEM $MOUNT_POINT
fi
От man gzip
:
-k, --keep Keep (don't delete) input files during compression or
decompression.
Так gzip -k log.txt
должен добиться цели.
(Но обычно, реальное решение для входа, т.е. некоторые syslog
демон, возможно, с использованием log4j
, могло возможно быть предпочтительным.)
gzip
удаленный файл log.txt
в то время как процесс Java все еще имел его открытый. Удаление файла на самом деле означает удалять название того файла. (Когда файл имеет несколько имен, он, как говорят, имеет несколько жестких ссылок.) Данные файла только удалены, когда все имена файлов были удалены, и файл не открыт никаким процессом. Таким образом после того, как файл исчез, это было все еще на диске; файл был только на самом деле удален, когда процесс Java, из которого выходят или, закрыл файл.
Обратите внимание, что процесс Java все еще пишет в теперь удаленный файл. Не имеет значения при создании нового файла с тем же именем: это - другой файл.
Если файл не имеет имени в запасе на большинстве нельдов, Вы не можете воссоздать жесткую ссылку на него, даже если файл все еще открыт. Был предложенный патч для представления a flink
системный вызов, чтобы сделать это на Linux, но это было подстрелено.
Можно все еще считать содержание файла (удобно на Linux, и возможно менее удобно на большинстве нельдов). Каталог /proc/1234/fd
то, где 1234 является PID процесса Java, содержит символьные ссылки на файлы, которые процесс имеет открытый. Если один из этих файлов удален, символьная ссылка свисает, но это может все еще быть открыто для чтения.
Это позволит Вам извлекать все строки журнала из процесса. Выполненный
tail -c +$(($(zcat log.txt.gz | wc -c) + 1)) -f </proc/1234/fd >more-log.txt
пока процесс Java не умер.