timeout
adalah utilitas baris perintah yang menjalankan perintah tertentu dan menghentikannya jika masih berjalan setelah jangka waktu tertentu. Dengan kata lain, timeout
memungkinkan Anda untuk menjalankan perintah dengan batas waktu. timeout
command adalah bagian dari paket utilitas inti GNU, yang diinstal pada hampir semua distribusi Linux.
Ini berguna saat Anda ingin menjalankan perintah yang tidak memiliki opsi batas waktu bawaan.
Pada artikel ini, kami akan menjelaskan cara menggunakan Linux timeout
perintah.
Cara Menggunakan timeout
Perintah #
Sintaks untuk timeout
perintahnya adalah sebagai berikut:
timeout [OPTIONS] DURATION COMMAND [ARG]…
DURATION
dapat berupa bilangan bulat positif atau angka floating-point, diikuti dengan akhiran unit opsional:
s
- detik (default)m
- menith
- jamd
- hari
Ketika 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 timeout
perintah:
-
Mengakhiri perintah setelah lima detik:
timeout 5 ping 8.8.8.8
-
Mengakhiri perintah setelah lima menit:
timeout 5m ping 8.8.8.8
-
Mengakhiri perintah setelah satu menit enam detik:
timeout 1.1m ping 8.8.8.8
Jika Anda ingin menjalankan perintah yang memerlukan hak istimewa yang lebih tinggi seperti tcpdump
, tambahkan sudo
sebelum timeout
:
sudo timeout 300 tcpdump -n -w data.pcap
Mengirim Sinyal Spesifik #
Jika tidak ada sinyal yang diberikan, timeout
mengirimkan SIGTERM
sinyal ke perintah yang dikelola ketika batas waktu tercapai. Anda dapat menentukan sinyal mana yang akan dikirim menggunakan -s
(--signal
) pilihan.
Misalnya, untuk mengirim SIGKILL
ke ping
perintah setelah satu menit, Anda akan menggunakan:
sudo timeout -s SIGKILL ping 8.8.8.8
Anda dapat menentukan sinyal dengan nama, 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 kill -l
perintah:
kill -l
Membunuh Proses yang Terjebak #
SIGTERM
, sinyal default yang dikirim ketika batas waktu terlampaui, dapat ditangkap atau diabaikan oleh beberapa proses. Dalam situasi tersebut, proses terus berjalan setelah sinyal terminasi dikirim.
Untuk memastikan perintah yang dipantau dimatikan, gunakan -k
(--kill-after
) pilihan diikuti dengan jangka waktu. Ketika opsi ini digunakan setelah batas waktu yang diberikan tercapai, timeout
perintah mengirimkan SIGKILL
sinyal ke program terkelola yang tidak dapat ditangkap atau diabaikan.
Pada contoh berikut, timeout
menjalankan perintah selama satu menit, dan jika tidak dihentikan, perintah akan dimatikan setelah sepuluh detik:
sudo timeout -k 10 1m ping 8.8.8.8
batas waktu -k “./test.sh”
dibunuh setelah batas waktu yang diberikan tercapai
Mempertahankan Status Keluar #
timeout
mengembalikan 124
ketika batas waktu tercapai. Jika tidak, ia mengembalikan status keluar dari perintah terkelola.
Untuk mengembalikan status keluar dari perintah bahkan ketika batas waktu tercapai, gunakan --preserve-status
pilihan:
timeout --preserve-status 5 ping 8.8.8.8
Berlari di Latar Depan #
Secara default, timeout
menjalankan perintah terkelola di latar belakang. Jika Anda ingin menjalankan perintah di latar depan, gunakan --foreground
pilihan:
timeout --foreground 5m ./script.sh
Opsi ini berguna saat Anda ingin menjalankan perintah interaktif yang memerlukan input pengguna.
Kesimpulan #
timeout
perintah digunakan untuk menjalankan perintah yang diberikan dengan batas waktu.
timeout
adalah perintah sederhana yang tidak memiliki banyak opsi. Biasanya Anda akan memanggil timeout
hanya dengan dua argumen, durasi dan perintah terkelola.
Jika Anda memiliki pertanyaan atau masukan, jangan ragu untuk memberikan komentar.