Udhëzues i komandave të Linux time për fillestarët (me shembuj)
Ndonjëherë, kur jeni duke ekzekutuar një program, mund të dëshironi të dini përdorimin e burimeve të sistemit të tij. Për shembull, sa kohë kaloi procesi në modalitetin e kernelit dhe modalitetin e përdoruesit, dhe informacione të tjera.
Fatmirësisht, ekziston një mjet - i quajtur koha - i ndërtuar posaçërisht për këtë qëllim. Në këtë artikull, ne do të diskutojmë bazat e komandës time duke përdorur disa shembuj të lehtë për t'u kuptuar.
Por, përpara se ta bëjmë këtë, vlen të përmendet se të gjithë shembujt në këtë tutorial janë testuar në një makinë Ubuntu 18.04 LTS.
Komanda e kohës Linux
Komanda e kohës në Linux ju lejon të ekzekutoni programe dhe të përmbledhni përdorimin e burimeve të sistemit të tyre. Më poshtë është sintaksa e saj:
time [OPTIONS] COMMAND [ARGS]
Ja se si faqja e njeriut të mjeteve e përshkruan atë:
time run the program COMMAND with any given arguments ARG.... When COMMAND finishes, time displays
information about resources used by COMMAND (on the standard error output, by default).
If COMMAND exits with non-zero status, time displays a warning message and the exit status.
time determines which information to display about the resources used by the COMMAND from the
string FORMAT. If no format is specified on the command line, but the TIME environment variable
is set, its value is used as the format. Otherwise, a default format built into time is used.
Options to time must appear on the command line before COMMAND. Anything on the command line after
COMMAND is passed as arguments to COMMAND.
Më poshtë janë disa shembuj të stilit të pyetjeve dhe përgjigjeve që duhet t'ju japin një ide më të mirë se si funksionon komanda e kohës.
Q1. Si të përdorni komandën time?
Përdorimi bazë është i thjeshtë - thjesht ekzekutoni kohën me komandën/programin që dëshironi të ekzekutoni si hyrje.
Për shembull, kam përdorur komandën time në mënyrën e mëposhtme:
time ping linux-console.net
Dhe këtu është prodhimi:
PING linux-console.net (104.24.0.68) 56(84) bytes of data.
64 bytes from 104.24.0.68 (104.24.0.68): icmp_seq=1 ttl=59 time=93.8 ms
64 bytes from 104.24.0.68 (104.24.0.68): icmp_seq=2 ttl=59 time=91.5 ms
64 bytes from 104.24.0.68 (104.24.0.68): icmp_seq=3 ttl=59 time=93.1 ms
64 bytes from 104.24.0.68 (104.24.0.68): icmp_seq=4 ttl=59 time=102 ms
^C
--- linux-console.net ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3003ms
rtt min/avg/max/mdev = 91.510/95.249/102.490/4.267 ms
real 0m3.472s
user 0m0.000s
sys 0m0.004s
Tre rreshtat e fundit në dalje shtohen nga komanda time. Ndërsa real nënkupton kohën e orës së murit që komanda ping mori nga ekzekutimi deri në përfundim, përdoruesi dhe sys janë koha e marrë nga ping në hapësirën e përdoruesit dhe hapësirën e kernelit, respektivisht. Detajet për këto tre herë mund të gjenden këtu.
Q2. Si ta detyroni kohën të shkruajë rezultatin e saj në një skedar?
Nëse dëshironi që komanda time të shkruajë daljen e saj në një skedar në vend të terminalit, përdorni opsionin e linjës së komandës -o, e cila pret një emër/shteg skedari si hyrje.
Për shembull:
/usr/bin/time -o /home/himanshu/time-output.txt ping linux-console.net
Kjo komandë do të shfaqë daljen e ping në stdout, ndërsa dalja e komandës së kohës do të shkruhet në skedarin e tekstit.
SHËNIM: Ne përdorëm /usr/bin/time në vend të kohës sepse komanda e integruar e kohës nuk ofron opsionin -o.
Si parazgjedhje, sa herë që ekzekutoni këtë komandë, skedari i daljes do të mbishkruhet. Sidoqoftë, nëse dëshironi, mund të siguroheni që një dalje e re të shtohet duke përdorur opsionin e linjës së komandës -a.
Q3. Si ta bëni kohën të prodhojë rezultate të detajuara?
Kjo mund të bëhet duke përdorur opsionin e linjës së komandës -v. Për shembull, kur e përdora këtë opsion gjatë ekzekutimit të kohës me një komandë ping, detajet e mëposhtme u prodhuan në daljen e komandës së kohës:
Command being timed: "ping linux-console.net"
User time (seconds): 0.00
System time (seconds): 0.00
Percent of CPU this job got: 0%
Elapsed (wall clock) time (h:mm:ss or m:ss): 0:11.77
Average shared text size (kbytes): 0
Average unshared data size (kbytes): 0
Average stack size (kbytes): 0
Average total size (kbytes): 0
Maximum resident set size (kbytes): 3064
Average resident set size (kbytes): 0
Major (requiring I/O) page faults: 0
Minor (reclaiming a frame) page faults: 158
Voluntary context switches: 14
Involuntary context switches: 0
Swaps: 0
File system inputs: 0
File system outputs: 0
Socket messages sent: 0
Socket messages received: 0
Signals delivered: 0
Page size (bytes): 4096
Exit status: 0
Kështu që ju mund të shihni se komanda kohë prodhon shumë detaje të tjera në këtë modalitet.
Q4. Si të personalizoni daljen e komandës së kohës?
Komanda e kohës ofron gjithashtu një opsion të linjës së komandave të formatit që ju lejon të personalizoni daljen e këtij mjeti. Ai siguron një grup specifikuesish burimesh që mund t'i përdorni për të marrë çdo lloj informacioni të mbështetur nga komanda e kohës (shih seksionin e mëparshëm).
Për shembull, komanda time në ekzekutimin e mëposhtëm:
/usr/bin/time -f "\t%C [Command details],\t%K [Total memory usage],\t%k [Number of signals process received]" ping linux-console.net
prodhoi këtë rezultat:
ping linux-console.net [Command details], 0 [Total memory usage], 0 [Number of signals process received]
Faqja e personit të komandës së kohës përmban detaje që lidhen me opsionin e linjës së komandës të formatit.
konkluzioni
Komanda e kohës përdoret kryesisht nga zhvilluesit dhe testuesit e softuerit. Megjithatë, nuk ka asnjë të keqe ta njohësh atë edhe nëse nuk je një nga ata, sepse nuk e di kurrë se kur mund ta kërkosh. Më shumë informacion në lidhje me këtë komandë mund të arrihet përmes faqes njerëzore të veglave.