
Perintah timeout
adalah utilitas baris perintah yang menjalankan perintah tertentu dan menghentikannya jika masih berjalan setelah jangka 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 di hampir semua distribusi Linux.
Perintah ini berguna saat Anda ingin menjalankan perintah yang tidak memiliki opsi batas waktu bawaan, atau menghentikan proses setelah beberapa waktu berjalan.
Pada artikel ini, kami akan menjelaskan cara menggunakan perintah timeout
di Terminal Linux.
Cara Menggunakan Perintah Timeout
Sintaks untuk perintah timeout adalah sebagai berikut:
timeout [OPTIONS] DURATION COMMAND [ARG]…
DURATION
dapat berupa bilangan bulat positif atau bilangan floating-point, diikuti dengan akhiran unit opsional:
s
– detik (detik) (ini adalah opsi default)m
– menit (menit)h
– jam (jam)d
– hari (hari)
Bila tidak ada unit yang digunakan, defaultnya adalah detik. Jika durasi disetel ke nol, batas waktu terkait akan dinonaktifkan.
Opsi perintah harus diberikan sebelum argumen.
Berikut adalah beberapa contoh dasar yang menunjukkan cara menggunakan perintah timeout
:
- Hentikan perintah
ping
setelah lima detik::waktu habis 5 ping 8.8.8.8 - Hentikan perintah setelah lima menit:batas waktu 5m ping 8.8.8.8
- Hentikan perintah setelah satu menit enam detik:batas waktu 1.1m ping 8.8.8.8
Jika Anda ingin menjalankan perintah yang memerlukan hak istimewa seperti tcpdump
, tambahkan awalan sudo
sebelum perintah timeout
:
sudo timeout 300 tcpdump -n -w data.pcap
Mengirim Sinyal Tertentu
Jika tidak ada sinyal yang diberikan, timeout
akan menggunakan sinyal SIGTERM ke perintah yang ditentukan ketika batas waktu tercapai. Anda dapat menentukan sinyal mana yang akan digunakan menggunakan -s
( --signal
) pilihan .
Misalnya, untuk mengirim SIGKILL
ke perintah ping
setelah satu menit, Anda dapat menggunakan perintah:
sudo timeout -s SIGKILL ping 8.8.8.8
Sinyal dapat ditentukan dengan namanya seperti SIGKILL
atau angka 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
Hentikan proses yang macet
SIGTERM
, sinyal default yang dikirim saat 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
) diikuti dengan periode waktu. Ketika opsi ini digunakan setelah batas waktu yang diberikan tercapai, perintah timeout
mengirimkan sinyal SIGKILL
ke program yang sesuai dengan input pengguna.
Dalam contoh berikut, timeout
menjalankan perintah selama satu menit, dan jika tidak dihentikan, itu akan "membunuh" program setelah sepuluh detik:
sudo timeout -k 10 1m ping 8.8.8.8
timeout -k “./test.sh”
Proses akan dihentikan setelah batas waktu yang diberikan tercapai meskipun macet.
Mempertahankan Status Keluar
timeout
akan mengembalikan 124
ketika batas waktu telah tercapai. Jika tidak, perintah timeout
akan mengembalikan status keluar dari perintah terkelola.
Untuk mengembalikan status keluar dari perintah bahkan ketika batas waktu tercapai, gunakan opsi --preserve-status
:
timeout --preserve-status 5 ping 8.8.8.8
Menjalankan perintah di Latar Depan
Secara default, ini timeout
menjalankan perintah di latar belakang. Jika ingin menjalankan perintah di Foreground, gunakan opsi --foreground
:
timeout --foreground 5m ./script.sh
Opsi ini berguna saat Anda ingin menjalankan perintah interaktif yang memerlukan input pengguna.
Kesimpulan
Perintah adalah timeout
digunakan untuk menjalankan perintah tertentu dengan batas waktu sesuai keinginan pengguna.
Perintah timeout
adalah perintah sederhana yang tidak memiliki banyak pilihan. Biasanya Anda akan menggunakan perintah timeout
dengan hanya dua argumen, durasi, dan perintah yang akan terjadi.