Когда я должен обнаружить изменения файла и сделать что-то другое, чем какой tail -f filename
делает, я использовал inotifywait
в сценарии, чтобы обнаружить изменение и реагировать на него. Пример использования показывают ниже. Посмотрите man inotifywait
для других имен события и переключателей. Вы, возможно, должны установить inotify-tools
пакет, например, через sudo apt-get install inotify-tools
.
Вот сценарий в качестве примера, названный exec-on-change
:
#!/bin/sh
# Detect when file named by param $1 changes.
# When it changes, do command specified by other params.
F=$1
shift
P="$*"
# Result of inotifywait is put in S so it doesn't echo
while S=$(inotifywait -eMODIFY $F 2>/dev/null)
do
# Remove printf if timestamps not wanted
printf "At %s: \n" "$(date)"
$P
done
В двух консолях я ввел команды следующим образом (где A> запись средств в консоли A и B> означает запись в консоли B.)
A> rm t; touch t
B> ./exec-on-change t wc t
A> date >>t
A> date -R >>t
A> date -Ru >>t
A> cat t; rm t
Следующий вывод от cat t
появившийся в консоли A:
Thu Aug 16 11:57:01 MDT 2012
Thu, 16 Aug 2012 11:57:04 -0600
Thu, 16 Aug 2012 17:57:07 +0000
Следующий вывод от exec-on-change
появившийся в консоли B:
At Thu Aug 16 11:57:01 MDT 2012:
1 6 29 t
At Thu Aug 16 11:57:04 MDT 2012:
2 12 61 t
At Thu Aug 16 11:57:07 MDT 2012:
3 18 93 t
exec-on-change
сценарий, завершенный, когда я rm
'd t
.
Это - существующая ошибка, которая была обсуждена здесь на форумах ArchLinux.
Можно определить, которые упаковывают исполняемый файл, член с этой командой:
$ rpm -qf /usr/bin/vmtoolsd
Я полагаю, что этот исполняемый файл является частью open-vm-tools
пакет, который является пакетом, это - часть VMware. Это - проект с открытым исходным кодом что VMware, отделенный для содержания "Инструментов VMware".
В зависимости от которой версии open-vm-tools Вы используете, Ваша проблема могла бы быть устранена обновлением. Они в настоящее время в 9.2.3 с 04/2013.
open-vm-tools.x86_64 0:9.2.3-5.fc19
, спасибо. – yanglifu90 04.08.2013, 07:44