Paano Mag-timeout ng Command sa Bash Nang Walang Hindi Kailangang Pagkaantala

Paano Mag Timeout Ng Command Sa Bash Nang Walang Hindi Kailangang Pagkaantala



Sa Bash, kung minsan ay maaaring kailanganin mong magpatakbo ng isang utos na tumatagal ng mahabang panahon upang makumpleto, at maaaring hindi mo nais na hintayin itong matapos nang walang katapusan. Ang isang solusyon sa problemang ito ay ang paggamit ng timeout command na naglilimita sa dami ng oras na maaaring tumakbo ang isang command. Ang artikulong ito, ay tatalakayin kung paano mag-timeout ng isang command sa Bash nang walang hindi kinakailangang pagkaantala.

Mag-timeout ng isang command sa Bash

Upang mag-timeout ng isang command sa Bash, maaari naming gamitin ang 'timeout' utos. Ang command na 'timeout' ay hindi available bilang default sa lahat ng system, ngunit maaari itong mai-install gamit ang package manager sa karamihan ng mga distribusyon ng Linux, narito ang syntax ng command na 'timeout':







timeout [ OPTION ] DURATION COMMAND [ ARG ]


Dito ang 'OPTION' ay isang opsyonal na argumento na tumutukoy sa gawi ng timeout na command, 'DURATION' ang limitasyon sa oras para tumakbo ang command, at ang 'COMMAND [ARG]' ay ang command at ang mga argumento nito na gusto nating patakbuhin.



Halimbawa, sabihin nating gusto naming patakbuhin ang command na 'sleep' sa loob ng limang segundo, ngunit gusto naming i-timeout ang command pagkatapos ng tatlong segundo at narito ang halimbawa ng script ng shell:



#!/bin/bash
echo 'Sisimulan ang sleep command na may timeout na 3 segundo...'
timeout 3s matulog 5s
echo 'Tapos na ang utos ng pagtulog.'


Dito ko tinukoy ang tagal ng timeout bilang 3 segundo, at ang tagal ng command na 'sleep' bilang 5 segundo. Ihihinto ng command na 'timeout' ang command na 'sleep' pagkalipas ng 3 segundo, kahit na karaniwang tatakbo ang command na 'sleep' sa loob ng 5 segundo.






Upang maiwasan ang hindi kinakailangang pagkaantala kapag ginagamit ang command na 'timeout', maaari naming gamitin ang opsyong '-k'. Ang '-k' na opsyon ay tumutukoy sa isang senyas na ipapadala sa command kung ito ay lumampas sa limitasyon ng timeout. Ang signal na ito ay magiging sanhi ng pagwawakas kaagad ng command, sa halip na hintayin itong matapos nang maganda.

Halimbawa, sabihin nating gusto naming patakbuhin ang command na 'sleep' sa loob ng limang segundo, ngunit gusto naming i-timeout ang command pagkatapos ng tatlong segundo at ipadala ang signal ng SIGINT kung lumampas ito sa limitasyon ng timeout. Magagawa natin ito sa pamamagitan ng pagpapatakbo ng sumusunod na command:



#!/bin/bash
echo 'Pagsisimula ng sleep command na may timeout na 3 segundo at SIGINT signal pagkatapos ng 2 segundo'
timeout -k 2s 3s tulog 5s
echo'
Matulog utos tapos na. '


Dito ko tinukoy ang tagal ng timeout bilang 3 segundo at ang signal na ipapadala bilang SIGINT kung ito ay lumampas sa timeout na limitasyon. Tinutukoy ng opsyong ā€œ-k 2sā€ na dapat ipadala ang signal ng SIGINT pagkatapos ng dalawang segundo ng limitasyon sa timeout.

Konklusyon

Timeout ang isang command sa Bash ay isang kapaki-pakinabang na tool na makakatulong sa iyong magpatakbo ng mga command nang mas mahusay at maiwasan ang mga hindi kinakailangang pagkaantala. Sa pamamagitan ng paggamit ng command na 'timeout' at ang opsyong '-k', maaari mong limitahan ang tagal ng oras na maaaring tumakbo ang isang command at magpadala ng signal upang wakasan ito kaagad kung lumampas ito sa limitasyon ng timeout. Makakatulong ito sa iyong makatipid ng oras at patakbuhin ang iyong mga script nang mas mahusay.