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. findBen kullanacağı konusunda komut:
find /var/log/crashes -name app-\*\.log -mmin -5
Bunu doğru bir ififadeyle 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.
testYönetmeliğe mi ihtiyacım var yoksa doğrudan find komutunun sonuçlarına karşı mı işlem yapacağım, yoksafind... | wc -lsatır sayımı almak için mi kullanmalıyım?- Bu soruyu cevaplamak için% 100 gerekli değil, fakat
testgeri 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?manSayfayı okudum, ancak ne zaman kullanılacağıtestve 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