Dhibiti Ujumbe wa Kumbukumbu Chini ya Systemd Ukitumia Journalctl [Mwongozo Kamili]
Systemd ni mfumo wa kisasa na kidhibiti cha huduma kwa mifumo ya Linux: uingizwaji wa daemon ya init unaokusudiwa kuanza michakato sambamba kwenye kuwasha mfumo. Sasa inaauniwa katika idadi ya usambazaji wa kawaida wa sasa ikiwa ni pamoja na Fedora, Debian, Ubuntu, OpenSuSE, Arch, RHEL, CentOS, nk.
Hapo awali, tulielezea hadithi nyuma ya 'init' na 'systemd'; ambapo tulijadili daemons mbili ni nini, kwa nini 'init' kiufundi inahitajika kubadilishwa na 'systemd' na vile vile sifa kuu za systemd.
Moja ya faida kuu za systemd juu ya mifumo mingine ya kawaida ya init ni, usaidizi wa usimamizi wa kati wa mfumo na ukataji miti kwa kutumia jarida. Katika makala haya, tutajifunza jinsi ya kudhibiti na kutazama ujumbe wa kumbukumbu chini ya systemd kwa kutumia journalctl amri katika Linux.
Muhimu: Kabla ya kusonga zaidi katika mwongozo huu, unaweza kutaka kujifunza jinsi ya kudhibiti kuunda na kuendesha vitengo vipya vya huduma katika mfumo kwa kutumia hati za shell katika Linux. Walakini, ikiwa uko sawa na yote hapo juu, endelea kusoma.
Inasanidi Iliyoandikwa kwa Kukusanya Ujumbe wa Kumbukumbu Chini ya Systemd
Journald ni daemon ambayo inakusanya na kuandika maingizo ya jarida kutoka kwa mfumo mzima; hizi kimsingi ni jumbe za uanzishaji, jumbe kutoka kwa kernel na kutoka kwa syslog au programu-tumizi mbalimbali na huhifadhi jumbe zote katika eneo la kati - faili ya jarida.
Unaweza kudhibiti tabia ya jarida kupitia faili yake chaguo-msingi ya usanidi: /etc/systemd/journald.conf ambayo inatolewa kwa wakati wa kukusanya. Faili hii ina chaguo ambazo thamani zake unaweza kubadilisha ili kuendana na mahitaji ya mazingira yako ya ndani.
Ifuatayo ni sampuli ya jinsi faili inavyoonekana, inayotazamwa kwa kutumia amri ya paka.
$ cat /etc/systemd/journald.conf
# See journald.conf(5) for details. [Journal] #Storage=auto #Compress=yes #Seal=yes #SplitMode=uid #SyncIntervalSec=5m #RateLimitInterval=30s #RateLimitBurst=1000 #SystemMaxUse= #SystemKeepFree= #SystemMaxFileSize= #SystemMaxFiles=100 #RuntimeMaxUse= #RuntimeKeepFree= #RuntimeMaxFileSize= #RuntimeMaxFiles=100 #MaxRetentionSec= #MaxFileSec=1month #ForwardToSyslog=yes #ForwardToKMsg=no #ForwardToConsole=no #ForwardToWall=yes #TTYPath=/dev/console #MaxLevelStore=debug #MaxLevelSyslog=debug #MaxLevelKMsg=notice #MaxLevelConsole=info #MaxLevelWall=emerg
Kumbuka kuwa vifurushi mbalimbali husakinishwa na kutumia dondoo za usanidi katika /usr/lib/systemd/*.conf.d/ na usanidi wa wakati wa kukimbia unaweza kupatikana katika /run/systemd/journald.conf.d/*.conf ambayo si lazima kutumia.
Idadi ya usambazaji wa Linux ikiwa ni pamoja na Ubuntu na derivatives yake kama Linux Mint haiwashi uhifadhi unaoendelea wa ujumbe wa boot kwenye diski kwa chaguo-msingi.
Inawezekana kuwezesha hili kwa kuweka chaguo la \Hifadhi kuwa \kudumu kama inavyoonyeshwa hapa chini. Hii itaunda saraka ya /var/log/journal na faili zote za jarida zitahifadhiwa chini yake.
$ sudo vi /etc/systemd/journald.conf OR $ sudo nano /etc/systemd/journald.conf
[Journal] Storage=persistent
Kwa mipangilio ya ziada, pata maana ya chaguo zote ambazo zinafaa kusanidiwa chini ya sehemu ya [Jarida] kwa kuandika.
$ man journald.conf
Kwa usimamizi unaotegemewa wa kumbukumbu chini ya mfumo kwa kutumia huduma ya majarida, hakikisha kuwa mipangilio ya saa ikijumuisha saa za eneo ni sahihi kwenye mfumo.
Ili kuona mipangilio ya sasa ya tarehe na saa kwenye mfumo wako, chapa.
$ timedatectl OR $ timedatectl status Local time: Thu 2017-06-15 13:29:09 EAT Universal time: Thu 2017-06-15 10:29:09 UTC RTC time: Thu 2017-06-15 10:29:09 Time zone: Africa/Kampala (EAT, +0300) Network time on: yes NTP synchronized: yes RTC in local TZ: no
Ili kuweka saa za eneo sahihi na ikiwezekana wakati wa mfumo, tumia amri zilizo hapa chini.
$ sudo timedatectl set-timezone Africa/Kampala $ sudo timedatectl set-time “13:50:00”
journalctl ni shirika linalotumiwa kutazama yaliyomo kwenye jarida la systemd (ambalo limeandikwa na huduma ya jarida).
Ili kuonyesha kumbukumbu zote zilizokusanywa bila kuchuja, chapa.
$ journalctl
-- Logs begin at Wed 2017-06-14 21:56:43 EAT, end at Thu 2017-06-15 12:28:19 EAT Jun 14 21:56:43 tecmint systemd-journald[336]: Runtime journal (/run/log/journal Jun 14 21:56:43 tecmint kernel: Initializing cgroup subsys cpuset Jun 14 21:56:43 tecmint kernel: Initializing cgroup subsys cpu Jun 14 21:56:43 tecmint kernel: Initializing cgroup subsys cpuacct Jun 14 21:56:43 tecmint kernel: Linux version 4.4.0-21-generic ([email ) Jun 14 21:56:43 tecmint kernel: Command line: BOOT_IMAGE=/boot/vmlinuz-4.4.0-21- Jun 14 21:56:43 tecmint kernel: KERNEL supported cpus: Jun 14 21:56:43 tecmint kernel: Intel GenuineIntel Jun 14 21:56:43 tecmint kernel: AMD AuthenticAMD Jun 14 21:56:43 tecmint kernel: Centaur CentaurHauls Jun 14 21:56:43 tecmint kernel: x86/fpu: xstate_offset[2]: 576, xstate_sizes[2] Jun 14 21:56:43 tecmint kernel: x86/fpu: Supporting XSAVE feature 0x01: 'x87 flo Jun 14 21:56:43 tecmint kernel: x86/fpu: Supporting XSAVE feature 0x02: 'SSE reg Jun 14 21:56:43 tecmint kernel: x86/fpu: Supporting XSAVE feature 0x04: 'AVX reg Jun 14 21:56:43 tecmint kernel: x86/fpu: Enabled xstate features 0x7, context si Jun 14 21:56:43 tecmint kernel: x86/fpu: Using 'eager' FPU context switches. Jun 14 21:56:43 tecmint kernel: e820: BIOS-provided physical RAM map: Jun 14 21:56:43 tecmint kernel: BIOS-e820: [mem 0x0000000000000000-0x00000000000 Jun 14 21:56:43 tecmint kernel: BIOS-e820: [mem 0x0000000000090000-0x00000000000 Jun 14 21:56:43 tecmint kernel: BIOS-e820: [mem 0x0000000000100000-0x000000001ff Jun 14 21:56:43 tecmint kernel: BIOS-e820: [mem 0x0000000020000000-0x00000000201 Jun 14 21:56:43 tecmint kernel: BIOS-e820: [mem 0x0000000020200000-0x00000000400
Unaweza kuonyesha orodha ya nambari za kuwasha (ikilinganishwa na kianzio cha sasa), vitambulisho vyake, na mihuri ya muda ya ujumbe wa kwanza na wa mwisho unaolingana na kuwasha kwa chaguo la --list-boots
.
$ journalctl --list-boots -1 9fb590b48e1242f58c2579defdbbddc9 Thu 2017-06-15 16:43:36 EAT—Thu 2017-06-15 1 0 464ae35c6e264a4ca087949936be434a Thu 2017-06-15 16:47:36 EAT—Thu 2017-06-15 1
Kutazama maingizo ya jarida kutoka kwa kianzishaji cha sasa (nambari 0), tumia ubadilishaji wa -b
kama hii (sawa na sampuli ya matokeo hapo juu).
$ journalctl -b
na kuona shajara kutoka kwenye buti iliyotangulia, tumia -1
pointer jamaa yenye chaguo la -b
kama ilivyo hapo chini.
$ journalctl -b -1
Vinginevyo, tumia kitambulisho cha boot kama hii.
$ journalctl -b 9fb590b48e1242f58c2579defdbbddc9
Ili kutumia muda katika umbizo la Coordinated Universal Time (UTC), ongeza chaguo za --utc
kama ifuatavyo.
$ journalctl --utc
Kuona maingizo yote tangu tarehe na wakati mahususi, k.m. Tarehe 15 Juni, 2017 saa 8:15 AM, andika amri hii.
$ journalctl --since "2017-06-15 08:15:00" $ journalctl --since today $ journalctl --since yesterday
Ili kutazama jumbe 10 za kumbukumbu (chaguo-msingi 10), tumia alama ya -n
kama inavyoonyeshwa hapa chini.
$ journalctl -n $ journalctl -n 20
Ili kuona ujumbe wa kernel pekee, sawa na pato la amri ya dmesg, unaweza kutumia -k
bendera.
$ journalctl -k $ journalctl -k -b $ journalctl -k -b 9fb590b48e1242f58c2579defdbbddc9
Ili kuona maingizo yote ya jarida la kitengo fulani, tumia swichi ya -u
kama ifuatavyo.
$ journalctl -u apache2.service
Ili sifuri chini kwa buti ya sasa, chapa amri hii.
$ journalctl -b -u apache2.service
Ili kuonyesha kumbukumbu kutoka kwa buti iliyopita, tumia hii.
$ journalctl -b -1 -u apache2.service
Chini ni amri zingine muhimu:
$ journalctl -u apache2.service $ journalctl -u apache2.service --since today $ journalctl -u apache2.service -u nagios.service --since yesterday
Ili kutazama kumbukumbu zinazozalishwa na mchakato maalum, taja ni PID kama hii.
$ journalctl _PID=19487 $ journalctl _PID=19487 --since today $ journalctl _PID=19487 --since yesterday
Ili kuona kumbukumbu zilizotolewa na mtumiaji au kikundi fulani, bainisha kitambulisho cha mtumiaji au kikundi kama hiki.
$ journalctl _UID=1000 $ journalctl _UID=1000 --since today $ journalctl _UID=1000 -b -1 --since today
Kuonyesha kumbukumbu zote zinazotolewa na faili (labda inayoweza kutekelezwa), kama vile D-Bus inayoweza kutekelezwa au utekelezaji wa bash, chapa tu.
$ journalctl /usr/bin/dbus-daemon $ journalctl /usr/bin/bash
Unaweza pia kuchuja matokeo kulingana na vipaumbele vya ujumbe au safu za kipaumbele kwa kutumia alama ya -p
. Thamani zinazowezekana ni: 0 - kuibuka, 1 - tahadhari, 2 - crit, 3 - makosa, 4 - onyo, 5 - ilani, 6 - maelezo, 7 - utatuzi):
$ journalctl -p err
Ili kubainisha masafa, tumia umbizo lililo hapa chini (tokeza kwenye onyo).
$ journalctl -p 1..4 OR $ journalctl -p emerg..warning
Unaweza kutazama kumbukumbu jinsi zinavyoandikwa kwa chaguo la -f
(sawa na utendakazi wa tail -f).
$ journalctl -f
Ikiwa unataka kudhibiti uumbizaji wa matokeo ya maingizo ya jarida, ongeza -o
bendera na utumie chaguo hizi: cat, export, json, json-pretty, json-sse, short, short-iso, short-monotonic, short-sahihi na verbose(angalia maana ya chaguzi katika ukurasa wa mtu:
Chaguo la paka linaonyesha ujumbe halisi wa kila ingizo la jarida bila metadata yoyote (muhuri wa muda na kadhalika).
$ journalctl -b -u apache2.service -o cat
Ili kuangalia faili ya jarida kwa uwiano wa ndani, tumia chaguo la --verify
. Ikiwa yote ni sawa, matokeo yanapaswa kuonyesha PASS.
$ journalctl --verify PASS: /run/log/journal/2a5d5f96ef9147c0b35535562b32d0ff/system.journal 491f68: Unused data (entry_offset==0) PASS: /run/log/journal/2a5d5f96ef9147c0b35535562b32d0ff/[email 9866c3d4d.journal PASS: /run/log/journal/2a5d5f96ef9147c0b35535562b32d0ff/[email 5d8945a9e.journal PASS: /run/log/journal/2a5d5f96ef9147c0b35535562b32d0ff/[email 1becab02f.journal PASS: /run/log/journal/2a5d5f96ef9147c0b35535562b32d0ff/[email 01cfcedff.journal
Unaweza pia kuonyesha matumizi ya sasa ya diski ya faili zote za jarida kwa chaguzi za --disk-usage
. Inaonyesha jumla ya matumizi ya diski ya faili zote za kumbukumbu na kazi za jarida:
$ journalctl --disk-usage
Ili kufuta faili za jarida za zamani (zilizohifadhiwa) endesha amri hapa chini:
$ sudo journalctl --vacuum-size=50M #delete files until the disk space they use falls below the specified size $ sudo journalctl --vacuum-time=1years #delete files so that all journal files contain no data older than the specified timespan $ sudo journalctl --vacuum-files=4 #delete files so that no more than the specified number of separate journal files remain in storage location
Mwisho kabisa, unaweza kuelekeza jarida kuzungusha faili za jarida kwa chaguo la --rotate
. Kumbuka kuwa agizo hili halirudi hadi operesheni ya kuzunguka ikamilike:
$ sudo journalctl --rotate
Kwa mwongozo wa kina wa matumizi na chaguo, tazama ukurasa wa mtu wa journalctl kama ifuatavyo.
$ man journalctl
Angalia baadhi ya makala muhimu.
- Kusimamia Mchakato na Huduma za Kuanzisha Mfumo (SysVinit, Systemd na Upstart)
- Petiti - Zana ya Uchambuzi wa Kumbukumbu ya Chanzo Huria kwa Linux SysAdmins
- Jinsi ya Kuweka na Kudhibiti Mzunguko wa Kumbukumbu kwa Kutumia Logrotate katika Linux
- lnav - Tazama na Uchanganue Kumbukumbu za Apache kutoka kwa Kituo cha Linux
Ni hayo kwa sasa. Tumia maoni kutoka hapa chini kuuliza maswali yoyote au kukuongezea mawazo kuhusu mada hii.