Bunun yerine, bir Yazılımın çalıştığı yerde bazı günlük dosyalarına sahip olabileceğinizi başarmak mviçin cpkomutu kullandım. Belki farklı Kullanıcı ana dizininde veya uygulama dizininde ve tüm günlükleri sabit olarak tek bir yerde bulundurun. mvKomutu kullanırsanız sabit bağlantıyı kaybedersiniz. Eğer kullanırsanız cpkomutu yerine bu sert linki tutacak.
kodum gibi bir şey:
TMP_FILE="$(mktemp "${TMPFILENAME}.XXX")"
for FILE in "${LOGFILE_DIR}"/* ; do
tail -n $MAXLINES "${FILE}" > "${TMP_FILE}"
if [ $(ls -g "${TMP_FILE}" | awk '{print $4}') -lt $(ls -g "${FILE}" | awk '{print $4}') ] ; then
cp "${TMP_FILE}" "${FILE}"
fi
done
Bu yüzden dosyalar aynı Dosya Sistemindeyse, kullanıcılara bazı farklı haklar verebilirsiniz ve ${LOGFILE_DIR}siz de benim yaptığım gibi uzunluğu değiştirebilirsiniz.
mvKomut buysa , dosyalar arasındaki bağlantıyı kaybedersiniz ve böylece ikinci dosyanız birincisine daha fazla bağlı değildir - belki başka bir yere yerleştirilmiş olabilir.
Diğer yerde, birinin dosyayı silmesine izin vermezseniz, günlükleriniz bir arada kalır ve kendi komut dosyanızla iyi kontrol edilir.
logrotatebelki daha güzel. Ama bu çözümden memnunum.
Rahatsız etmeyin "" ama benim durumumda boşluklar ve diğer özel harfler içeren bazı dosyalar var ve "" yapmazsam ya da {} tüm işler iyi çalışmaz.
Örneğin, eski dosyaların otomatik olarak sıkıştırılmış olduğu bir Dir vardır OLDFILE.zipve sıkıştırılmış olan her şey Dosya'da da listelenir, .zip_logbu yüzden .zip_logbu Dir'de de var ama LOGFILE_DIRbende var:
ln .zip_log "${LOGFILE_DIR}/USER_ZIP_log"
sabit bir bağlantı olduğu için eşit dosya.
logrotatezarif bir çözümdür