Я использовал вместо mv
команду cp
, чтобы вы могли иметь некоторые файлы журналов прямо там, где программное обеспечение это работает. Возможно, в другом домашнем каталоге пользователя или в каталоге приложения и иметь все журналы в одном месте в виде жестких ссылок. Если вы используете команду mv
, вы потеряете жесткую ссылку. Если вместо этого вы используете команду cp
, вы сохраните эту жесткую ссылку.
мой код выглядит примерно так:
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
Итак, если файлы находятся в одной и той же файловой системе, вы также можете предоставить пользователям разные права, а в ${LOGFILE_DIR}
вы изменяете длину, например Я делаю.
Если это команда mv
, вы теряете жесткую связь между файлами, и поэтому ваш второй файл больше не связан с первым - возможно, он находится где-то еще.
Если в другом месте вы не позволяете кому-либо стирать файл, ваши журналы остаются вместе и хорошо контролируются с помощью вашего собственного скрипта.
logrotate
может быть лучше. Но я доволен этим решением.
Не беспокойтесь о «», но в моем случае есть несколько файлов с пробелами и другими специальными буквами, и если я не использую «» или {}, все работает плохо. .
Например, существует каталог, в котором старые файлы автоматически заархивируются в OLDFILE.zip
, и все, что заархивировано, также указано в файле .zip_log
, поэтому .zip_log
также находится в этом каталоге, но в LOGFILE_DIR
у меня есть:
ln .zip_log "${LOGFILE_DIR}/USER_ZIP_log"
аналогичный файл, так как это жесткая ссылка.
Чтобы создать любой ярлык, вам просто нужно создать файл .desktop для программного обеспечения, как показано ниже:
[Desktop Entry]
Version=1.0
Type=Application
Terminal=false
Icon[en_CA]=gnome-panel-launcher Exec=/usr/bin/gnome-desktop-item-edit ~/Desktop/ --create-new
Name[en_CA]=Create Desktop Shortcut Name=Create Desktop Shortcut Icon=gnome-panel-launcher