Да, -exec
является предикатом, таким же, как и -name
, и find
будет учитывать статус выхода команды и рассматривать его как ложный, если он не равен -нулю.
Но обратите внимание, что a)это относится только к форме -exec... \;
, а не к форме -exec.. {} +
(, которая всегда верна )и b)разветвление отдельного процесса для каждого файла или каталога медленно .
Например, будут пропущены все каталоги, содержащие файл с именемfoo.txt
:
find. -type d -exec test -f {}/foo.txt \; -prune -or -print
$ mkdir -p a/{1,2,3}/{x,y,z}; touch a/{1,2,3}/{x,y,z}/a.txt
$ find. -type d -exec test -f {}/foo.txt \; -prune -or -print
... lots of files...
$ touch a/{1,2}/foo.txt a/3/{x,y}/foo.txt
$ find. -type d -exec test -f {}/foo.txt \; -prune -or -print
.
./a
./a/3
./a/3/z
./a/3/z/a.txt
Конечно, вместо статической команды test -f...
можно использовать, например. path/to/some/script {}...
. С GNU find (по умолчанию в Linux )вы можете использовать -execdir
вместо -exec
.
У вас нет ограничения по порядку, указывающего кластеру запускать файловую систему только после того, как устройство DRBD будет повышено до главного. Добавьте следующее ограничение порядка:
# pcs constraint order promote data then start drbd-FS