Kilitlenme günlükleri olan bir dizine sahibim ve bir koşul komutunu bir find komutuna dayanarak bash betiğinde kullanmak istiyorum.
Günlük dosyaları bu biçimde saklanır:
/var/log/crashes/app-2012-08-28.log
/var/log/crashes/otherapp-2012-08-28.log
İf ifadesinin yalnızca son 5 dakikada değiştirilen belirli bir uygulamanın kilitlenme günlüğü varsa doğru dönmesini istiyorum. find
Ben kullanacağı konusunda komut:
find /var/log/crashes -name app-\*\.log -mmin -5
Bunu doğru bir if
ifadeyle nasıl birleştireceğimi bilmiyorum . Bunun işe yarayabileceğini düşünüyorum:
if [ test `find /var/log/crashes -name app-\*\.log -mmin -5` ] then
service myapp restart
fi
Belirsiz olduğum birkaç alan var:
- İf bayraklarına baktım ama hangisini kullanmam gerektiğinden emin değilim.
test
Yönetmeliğe mi ihtiyacım var yoksa doğrudan find komutunun sonuçlarına karşı mı işlem yapacağım, yoksafind... | wc -l
satır sayımı almak için mi kullanmalıyım?- Bu soruyu cevaplamak için% 100 gerekli değil, fakat
test
geri dönüş komutlarını geri dönüş kodlarına karşı test etmek için mi? Ve de bunlar görünmez vardır - dışstdout
/ 'stderr
?man
Sayfayı okudum, ancak ne zaman kullanılacağıtest
ve nasıl hata ayıklanacağı konusunda hala belirsizim .
... -exec command ';' -quit
, ancak sonuncusu için sonuç ayrıştırma dışında herhangi bir çözüm olduğuna inanmıyorum. Ayrıca, her iki durumda da find
(örneğin sınırlayıcıları dosya adlarındaki karakterlerden ayırt edememe) sonucunun ayrıştırılmasıyla ilgili temel sorun , bu durumlarda sınırlayıcıları bulmanız gerekmediğinden geçerli değildir.
find ... -exec
. Ayrıca neden