Dengan kadar kerja dan kehidupan yang dipercepatkan, kita selalunya perlu menetapkan beberapa had masa dalam sistem Linux untuk mengawal tingkah laku kita. Sama ada untuk mengehadkan masa log masuk pengguna atau mengehadkan masa berjalan proses, sistem Linux menyediakan pelbagai kaedah untuk mencapai tujuan ini. Jadi, adakah anda tahu bagaimana untuk menetapkan had masa dalam sistem Linux? Artikel ini akan memperkenalkan beberapa kaedah biasa supaya anda boleh menguasainya dengan mudah.
masa tamat ialah utiliti baris arahan yang menjalankan arahan tertentu dan menamatkannya jika ia masih berjalan selepas tempoh masa tertentu. Perintah tamat masa adalah sebahagian daripada pakej utiliti teras GNU, yang dipasang dalam hampir semua pengedaran Linux
Cara penggunaan
Format tatabahasa:
timeout [OPTION] DURATION COMMAND [ARG]...
DURATION boleh menjadi integer positif atau nombor titik terapung, diikuti dengan akhiran pilihan:
Jika anda tidak menambah sebarang unit, lalainya ialah saat. Jika DURATION ialah 0, tamat masa yang berkaitan dilumpuhkan.
Instance
Tamatkan operasi ping selepas 5 saat:
[root@localhost ~]# timeout 5 ping www.baidu.com PING www.a.shifen.com (61.135.169.125) 56(84) bytes of data. 64 bytes from 61.135.169.125 (61.135.169.125): icmp_seq=1 ttl=55 time=16.3 ms 64 bytes from 61.135.169.125 (61.135.169.125): icmp_seq=2 ttl=55 time=16.0 ms 64 bytes from 61.135.169.125 (61.135.169.125): icmp_seq=3 ttl=55 time=16.7 ms 64 bytes from 61.135.169.125 (61.135.169.125): icmp_seq=4 ttl=55 time=16.0 ms 64 bytes from 61.135.169.125 (61.135.169.125): icmp_seq=5 ttl=55 time=17.6 ms
Tamatkan operasi ping selepas 5 minit:
[root@localhost ~]# timeout 5m ping www.baidu.com
Tamatkan operasi ping selepas 1 hari:
[root@localhost ~]# timeout 1d ping www.baidu.com
Tamatkan operasi ping selepas 2.5 saat:
[root@localhost ~]# timeout 2.5s ping www.baidu.com PING www.a.shifen.com (61.135.169.121) 56(84) bytes of data. 64 bytes from 61.135.169.121 (61.135.169.121): icmp_seq=1 ttl=55 time=14.9 ms 64 bytes from 61.135.169.121 (61.135.169.121): icmp_seq=2 ttl=55 time=15.6 ms 64 bytes from 61.135.169.121 (61.135.169.121): icmp_seq=3 ttl=55 time=15.6 ms
Hantar isyarat yang ditentukan
Jika tiada isyarat diberikan, tamat masa menghantar isyarat SIGTERM kepada arahan terurus apabila had masa dicapai. Isyarat yang akan dihantar boleh ditentukan menggunakan pilihan -s (-signal).
Hantar isyarat SIGKILL ke arahan ping, tamatkan selepas 5 saat:
[root@localhost ~]# sudo timeout -s SIGKILL 5s ping www.baidu.com PING www.a.shifen.com (61.135.169.125) 56(84) bytes of data. 64 bytes from 61.135.169.125 (61.135.169.125): icmp_seq=1 ttl=55 time=17.2 ms 64 bytes from 61.135.169.125 (61.135.169.125): icmp_seq=2 ttl=55 time=16.6 ms 64 bytes from 61.135.169.125 (61.135.169.125): icmp_seq=3 ttl=55 time=16.7 ms 64 bytes from 61.135.169.125 (61.135.169.125): icmp_seq=4 ttl=55 time=16.2 ms 64 bytes from 61.135.169.125 (61.135.169.125): icmp_seq=5 ttl=55 time=16.7 ms Killed
Isyarat boleh diberikan namanya atau nombor urutannya. Nombor siri SIGKILL yang digunakan di bawah akan menamatkan operasi selepas 5 saat:
[root@localhost ~]# sudo timeout -s 9 5s ping www.baidu.com PING www.a.shifen.com (61.135.169.121) 56(84) bytes of data. 64 bytes from 61.135.169.121 (61.135.169.121): icmp_seq=1 ttl=55 time=15.5 ms 64 bytes from 61.135.169.121 (61.135.169.121): icmp_seq=2 ttl=55 time=16.3 ms 64 bytes from 61.135.169.121 (61.135.169.121): icmp_seq=3 ttl=55 time=14.9 ms 64 bytes from 61.135.169.121 (61.135.169.121): icmp_seq=4 ttl=55 time=16.0 ms 64 bytes from 61.135.169.121 (61.135.169.121): icmp_seq=5 ttl=55 time=22.0 ms Killed
Untuk melihat semua isyarat yang tersedia, gunakan perintah kill -l untuk melihat semua isyarat.
[root@localhost ~]# kill -l 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM 16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP 21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ 26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR 31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3 38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8 43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13 48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12 53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7 58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2 63) SIGRTMAX-1 64) SIGRTMAX [root@localhost ~]#
Hentikan proses yang tersekat
SIGTERM, isyarat lalai yang dihantar apabila melebihi had masa, boleh ditangkap atau diabaikan oleh beberapa proses. Dalam kes ini, proses terus berjalan selepas menghantar isyarat penamatan.
Untuk memastikan arahan yang dilaksanakan ditamatkan, gunakan pilihan -k (–kill after) diikuti dengan masa. Ia akan terpaksa ditamatkan apabila had masa yang diberikan telah dicapai.
Dalam contoh di bawah, arahan tamat masa berjalan selama satu minit dan akan menamatkan arahan selepas 10 saat jika ia tidak tamat:
[root@localhost ~]# timeout -k 10s 1m sh test.sh
Berlari di latar depan
Secara lalai, tamat masa menjalankan perintah terurus di latar belakang. Jika anda ingin menjalankan arahan di latar depan, gunakan pilihan --foreground:
[root@localhost ~]# timeout --foreground 5m ./script.sh
Ringkasan
Artikel ini memperkenalkan beberapa kaedah biasa untuk menetapkan had masa dalam sistem Linux, termasuk menggunakan perintah ulimit, menggunakan modul pam_time, menggunakan tugas berjadual cron, dsb. Dengan memahami kaedah ini, anda boleh mengawal tingkah laku pengguna dengan lebih baik, mengoptimumkan prestasi sistem, mencegah pembaziran sumber, dsb. Saya harap pembaca boleh memilih kaedah yang sesuai dengan mereka berdasarkan keperluan sebenar dan mengaplikasikannya.
Atas ialah kandungan terperinci Kuasai kaedah ini untuk menetapkan had masa dengan mudah dalam sistem Linux anda. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!