Perintah timeout
adalah utilitas baris perintah yang menjalankan perintah yang ditentukan dan menghentikannya jika masih berjalan setelah periode waktu tertentu. Dengan kata lain, perintah timeout
memungkinkan Anda menjalankan perintah dengan batas waktu yang Anda tentukan. Perintah timeout
adalah bagian dari paket utilitas inti GNU yang diinstal pada hampir semua distribusi Linux.
Perintah ini berguna ketika Anda ingin menjalankan perintah yang tidak memiliki opsi batas waktu bawaan, atau menghentikan proses setelah sekian waktu berjalan.
Pada artikel ini, kami akan menjelaskan cara menggunakan perintah timeout
di Linux Terminal.
Cara Menggunakan Perintah timeout
Sintaks untuk perintah timeout adalah sebagai berikut:
timeout [OPTIONS] DURATION COMMAND [ARG]…
DURATION
dapat berupa bilangan bulat positif atau angka floating-point, diikuti oleh akhiran unit opsional:
s
– seconds (detik) (ini adalah opsi default)m
– minutes (menit)h
– hours (jam)d
– days (hari)
Ketika tidak ada unit yang digunakan, standarnya adalah detik. Jika durasinya diatur ke nol, batas waktu yang terkait dinonaktifkan.
Opsi perintah harus disediakan sebelum argumen.
Berikut adalah beberapa contoh dasar yang menunjukkan cara menggunakan perintah timeout
:
- Hentikan perintah
ping
setelah lima detik::timeout 5 ping 8.8.8.8
- Hentikan perintah setelah lima menit:
timeout 5m ping 8.8.8.8
- Hentikan perintah setelah satu menit enam detik:
timeout 1.1m ping 8.8.8.8
Jika Anda ingin menjalankan perintah yang memerlukan hak istimewa seperti tcpdump
, tambahkan dulu awalan sudo
sebelum perintah timeout
:
sudo timeout 300 tcpdump -n -w data.pcap
Mengirim Signal Tertentu
Jika tidak ada signal yang diberikan, timeout
akan menggunakan signal SIGTERM ke perintah tertentu ketika batas waktu tercapai. Anda dapat menentukan signal mana yang akan di gunakan menggunakan opsi-s
(--signal
).
Misalnya, untuk mengirim SIGKILL
ke perintah ping
setelah satu menit, Anda dapat menggunakan perintah :
sudo timeout -s SIGKILL ping 8.8.8.8
Signal dapat ditentukan dengan namanya seperti SIGKILL
atau nomornya seperti 9
. Perintah berikut ini identik dengan yang sebelumnya:
sudo timeout -s 9 ping 8.8.8.8
Untuk mendapatkan daftar semua sinyal yang tersedia, gunakan perintah kill -l
:
kill -l
Kill Proses yang Macet
SIGTERM
, sinyal default yang dikirim ketika batas waktu terlampaui dapat ditangkap atau diabaikan oleh beberapa proses. Dalam situasi itu, proses terus berjalan setelah sinyal terminasi dikirim.
Untuk memastikan perintah yang dipantau telah berhenti, gunakan opsi -k
(--kill-after
) yang diikuti oleh periode waktu. Ketika opsi ini digunakan setelah batas waktu yang diberikan tercapai, perintah timeout
mengirim signal SIGKILL
ke program yang sesuai dengan input user.
Dalam contoh berikut, timeout
menjalankan perintah selama satu menit, dan jika tidak dihentikan, ia akan “kill” program setelah sepuluh detik:
sudo timeout -k 10 1m ping 8.8.8.8
timeout -k “./test.sh”
Proses akan di kill setelah batas waktu yang diberikan tercapai meski macet.
Mempertahankan Status Exit
timeout
akan return 124
ketika batas waktu telah tercapai. Jika tidak, perintah timeout
akan mengembalikan status exit dari perintah yang dikelola.
Untuk return status exit dari perintah bahkan ketika batas waktu tercapai, gunakan opsi --preserve-status
:
timeout --preserve-status 5 ping 8.8.8.8
Menjalankan perintah di Foreground
Secara default, timeout
menjalankan suatu perintah di latar belakang. Jika Anda ingin menjalankan perintah di Foreground (latar depan), gunakan opsi --foreground
:
timeout --foreground 5m ./script.sh
Opsi ini berguna ketika Anda ingin menjalankan perintah interaktif yang membutuhkan input user.
Kesimpulan
Perintah timeout
digunakan untuk menjalankan suatu perintah tertentu dengan batas waktu yang sesuai dengan kehendak user.
Perintah timeout
adalah perintah sederhana yang tidak memiliki banyak opsi. Biasanya Anda akan menggunakan perintah timeout
hanya dengan dua argumen, duration (durasi), dan perintah yang akan terjadi.