Saya memiliki proses yang telah melahirkan dari shell. Ini berjalan sebagai proses latar belakang dan mengekspor DB ke file CSV di /tmp
.
Bagaimana saya bisa tahu ketika proses latar belakang telah selesai (selesai / keluar) atau jika kunci file CSV telah ditutup? Saya berencana untuk FTP file ke host lain setelah ditulis, tetapi saya perlu file lengkap sebelum saya memulai transfer file.
Jawaban:
Di Linux, file tidak terkunci bahkan ketika sebuah program menulis ke sana (tidak seperti windows).
Untuk memeriksa apakah prosesnya selesai, gunakan:
Untuk memeriksa apakah proses membuka file, Anda dapat menggunakan
lsof <file>
itu akan mencantumkan proses yang dibuka<file>
ls -l /proc/$(pgrep db-process)/fd
daftar deskriptor file yang terbuka oleh prosesdb-process
sumber
Anda dapat menggunakan
wait
shell bawaan untuk melakukannya.The
wait
builtin hanya menyebabkan shell untuk berhenti sejenak menunggu pekerjaan latar belakang lengkap. Anda bisa memberikannya pekerjaan tertentu untuk ditunggu, atau minta menunggu semua pekerjaan.Sebagai contoh:
Yang mengakibatkan:
sumber