Suatu hari saya mentransfer file besar menggunakan rsync ke sistem lain di jaringan area lokal saya. Karena ini adalah file yang sangat besar, Butuh sekitar 20 menit untuk menyelesaikannya. Saya tidak ingin menunggu lebih lama lagi, dan saya juga tidak ingin menghentikan proses secara manual dengan menekan CTRL+C juga. Saya hanya ingin tahu apakah ada cara mudah untuk menjalankan perintah untuk waktu tertentu dan mematikannya secara otomatis setelah waktu habis di sistem operasi mirip Unix - maka posting ini. Baca terus.
Jalankan Perintah Untuk Waktu Tertentu di Linux
Kita dapat melakukannya dengan dua metode.
Metode 1 - Menggunakan perintah "batas waktu"
Metode yang paling umum adalah menggunakan batas waktu perintah untuk tujuan ini. Bagi mereka yang tidak tahu, perintah timeout akan secara efektif membatasi waktu eksekusi absolut dari suatu proses. Perintah timeout adalah bagian dari paket GNU coreutils, jadi perintah ini sudah diinstal sebelumnya di semua sistem GNU/Linux.
Katakanlah, Anda ingin menjalankan perintah hanya untuk waktu tertentu, dan kemudian mematikannya secara otomatis setelah waktu berlalu. Untuk melakukannya, kami menggunakan:
$ timeout <time-limit-interval> <command>
Misalnya, perintah berikut akan berhenti setelah 10 detik.
$ timeout 10s tail -f /var/log/pacman.log
Anda juga tidak perlu menentukan akhiran "s" untuk detik. Perintah berikut sama seperti di atas.
$ timeout 10 tail -f /var/log/pacman.log
Sufiks lain yang tersedia adalah:
- 'm' selama beberapa menit,
- 'h' selama berjam-jam
- 'd' selama berhari-hari.
Jika Anda menjalankan tail -f /var/log/pacman.log . ini perintah, itu akan terus berjalan sampai Anda mengakhirinya secara manual dengan menekan CTRL + C. Namun, jika Anda menjalankannya bersama dengan batas waktu perintah, itu akan dimatikan secara otomatis setelah interval waktu yang diberikan.
Untuk berjaga-jaga jika perintah masih berjalan bahkan setelah waktu habis, Anda dapat mengirim kill sinyal seperti di bawah ini.
$ timeout -k 20 10 tail -f /var/log/pacman.log
Dalam hal ini, jika Anda perintah ekor masih berjalan setelah 10 detik, perintah batas waktu akan mengirimkannya sinyal mematikan setelah 20 detik dan mengakhirinya.
Perintah Tmeout dapat sangat berguna saat memecahkan masalah perangkat keras. Misalnya, jalankan perintah berikut untuk menampilkan semua pesan dari buffer ring kernel, tetapi hanya 10 detik.
$ timeout 10 dmesg -w
Untuk detail lebih lanjut, periksa halaman manual.
$ man timeout
Terkadang, program tertentu mungkin membutuhkan waktu lama untuk diselesaikan dan akhirnya membekukan sistem Anda. Dalam kasus seperti itu, Anda dapat menggunakan trik ini untuk mengakhiri proses secara otomatis setelah waktu tertentu.
Juga, pertimbangkan untuk menggunakan Cpulimit , aplikasi sederhana untuk membatasi penggunaan CPU dari suatu proses. Untuk lebih jelasnya, periksa tautan berikut.
- Cara Membatasi Penggunaan CPU Suatu Proses Di Linux
Metode 2 - Menggunakan program "Batas Waktu"
Utilitas Timelimit mengeksekusi perintah yang diberikan dengan argumen yang diberikan dan menghentikan proses yang muncul setelah waktu tertentu dengan sinyal yang diberikan. Pertama, ini akan melewati peringatan sinyal dan kemudian setelah waktu habis, itu akan mengirim membunuh sinyal.
Berbeda dengan utilitas batas waktu, Timelimit memiliki lebih banyak opsi. Anda dapat memberikan sejumlah argumen seperti killsig, warnsig, killtime, warntime, dll.
Ini tersedia di repositori default sistem berbasis Debian. Jadi, Anda dapat menginstalnya menggunakan perintah:
$ sudo apt-get install timelimit
Untuk sistem berbasis Arch, tersedia di AUR. Jadi, Anda dapat menginstalnya menggunakan program pembantu AUR seperti Pacaur , Pengemas , Yay , Yaourt dll.
Untuk distribusi lainnya, unduh sumber dari sini dan menginstalnya secara manual.
Setelah menginstal program Timelimit, jalankan perintah berikut untuk waktu tertentu, misalnya 10 detik:
$ timelimit -t10 tail -f /var/log/pacman.log
Jika Anda menjalankan batas waktu tanpa argumen apa pun, itu akan menggunakan nilai default:warntime=3600 detik , warnsig=15 , waktu membunuh=120 , killsig=9 .
Untuk detail lebih lanjut, lihat halaman manual dan situs web proyek yang diberikan di akhir panduan ini.
$ man timelimit
Dan, itu saja untuk hari ini. Saya harap ini berguna. Lebih banyak barang bagus akan datang. Tetap disini!
Semangat!