Dalam mengelola server linux, terkadang kita perlu untuk menjalankan sebuah aplikasi di belakang layar (background process) agar pekerjaan utama tidak terganggu. Linux memudahkan kita untuk melakukan hal tersebut, caranya hanya dengan menambahkan beberapa directive di belakang command yang sedang berjalan, tepatnya directive “> /dev/null 2>/dev/null &” setelah command yang ingin kita jalankan di belakang layar.
Contohnya:
rsync -azv /local/directory/ /remote/directory > /dev/null 2>/dev/null &
Penjelasan Command
Command di atas mendapatkan tiga tambahan directive, yakni:
- > /dev/null, ini gunanya untuk membuat output process normal (>) dari layar menjadi hilang (/dev/null)
- 2>/dev/null, ini gunanya untuk membuat output process error (2>) dari layar menjadi hilang (/dev/null)
- &, ini gunanya untuk membuat output process berjalan di belakang layar
Untuk menjalankan process di belakang layar pada script bash, hanya perlu directive terakhir (&), adapun pada scripts php yang melakukan fungsi exec () ketiganya harus dipakai agar hasil proses benar-benar berjalan di atas layar
Setting Timeout
Adapun jika kita ingin process yang berjalan di belakang layar hanya berjalan dalam beberapa waktu tertentu, kita bisa gunakan command “timeout [detik]” di depan process yg akan kita lakukan.
Kita ambil lagi contoh command di atas:
timeout 3600 rsync -azv /local/directory/ /remote/directory > /dev/null 2>/dev/null &
Perhatikan ada command “timeout 3600” di depan command rsync. Hal ini menyebabkan command di belakangnya (rsync) menjadi hanya akan berjalan selama maksimal 3600 detik (1 jam) dan berjalan di belakang layar
Mengecek Proses Yang Berjalan dengan Pgrep
Gunakan saja command pgrep, misalnya command rsync
pgrep -l 'rsync'
Atau untuk melihat list process rsync dari user tertentu, gunakan:
pgrep -l -G thisuser namacommand
Referensi
https://stackoverflow.com/questions/12842767/php-background-process-using-exec-function
Leave a Reply