Jadi mengadaptasi SO ini jawaban sedikit sangat dekat dengan solusi:

ln -s target-directory/`ls -rt target-directory | grep .log | tail -n1` latest

Tetapi bagaimana saya sebenarnya terus memperbarui sym-link ketika file baru muncul di direktori?

Bisakah ini diarsipkan dengan menggunakan inotifywait? Bagaimana saya bisa menginstal pekerjaan seperti itu di sistem saya yang menangani di latar belakang?

0
gies0r 11 April 2020, 22:06

1 menjawab

Jawaban Terbaik

Perhatikan bahwa parsing ls keluaran dapat rawan kesalahan. Lihat FAQ bash 99.

Jika alat inotifywait tersedia, Anda dapat melakukan sesuatu seperti memperbarui symlink.

#!/bin/bash

function newest_log
{
    files=(*.log)
    newest=${files[0]}
    for f in "${files[@]}"; do
        if [[ $f -nt $newest ]]; then
            newest=$f
      fi
    done

    echo $newest
}

while inotifywait -e modify target-directory; do
    ln -s target-directory/$(newest_log) latest
done

Anda dapat menjalankan skrip ini secara langsung atau menyiapkan layanan seperti layanan systemd.

1
P.P 11 April 2020, 19:40