2020-06-26

Fedora'ya VirtualBox kurmak

Virtualbox'ı Fedora'ya kurmanın birkaç yolu var. Ama gördüğüm kadarıyla doğru yolu şu:

Öncelikle root olalım:

$ sudo -i

Sonra
cd /etc/yum.repos.d/
klasörünün altına gidelim. Buraya
http://download.virtualbox.org/virtualbox/rpm/fedora/virtualbox.repo
altından virtualbox deposunu indirelim.
wget http://download.virtualbox.org/virtualbox/rpm/fedora/virtualbox.repo
Ardından bir dnf update yapalım:
# dnf update
Şimdi de şu bağımlılıkları kuralım:
# dnf install binutils gcc make patch libgomp glibc-headers glibc-devel kernel-headers kernel-devel dkms qt5-qtx11extras libxkbcommon
Nihayet Virtualbox-6.1 paketini kurabiliriz. Dikkat! VirtualBox paketi değil, sonunda sürüm numarası yazan.
# dnf install VirtualBox-6.1
Bu aşamadan sonra vboxusers grubu yaratılmış olur. VirtualBox'ı kullanacak kullanıcımız bu grubun üyesi olmalı.
# usermod -aG vboxusers metin
Ayrıca ilgili çekirdek modülleri de derlenmiş olmalı. İlerde tekrar derleme (bir çekirdek sürümü güncellemsi sonrasında) gerektiği durumlarda şu script çalıştırılabilir:
# /usr/lib/virtualbox/vboxdrv.sh setup
Daha fazla ayrıntı için [1]'e bakılabilir.

---
[1] https://www.if-not-true-then-false.com/2010/install-virtualbox-with-yum-on-fedora-centos-red-hat-rhel/

Opera'da oynatılamayan videolar

Her ne kadar sonuna kadar Firefox'u desteklesem de Opera'nın bazı avantajları yok değil. Ama maalesef videoları oynatması için gereken codecler eksik geliyor. En azından linux altında.

Şu bilgileri buldum:
- Opera ile birlikte gelen /usr/lib64/opera klasörü altında libffmpeg.so modülü kısıtlı bir sürüm. Bunun tam sürümü çeşitli yazılımlarla birlikte geliyor. Anladığım kadarıyla debian ve türevleri için (hatta belki ArchLinux ve türevleri için de) kullanılabilecek chromium-codecpack paketi bunun tam sürümünü içeriyor. Ama Fedora'da böyle bir paket yok maalesef.
- Visual Studio Code kuruluysa bunun altında
/usr/share/code/libffmpeg.so
da iş yapar.
- Ama bu yoksa mecburen libffmpeg.so'nun tam sürümünü bir yerlerden edinmek gerek. Bu amaçla yine Reddit'te bir uzman demiş ki; https://github.com/iteufel/nwjs-ffmpeg-prebuilt/releases sayfasından ilgili binary'leri indirerek bir yere kaydedin. Sonra da bunu /usr/share/code/libffmpeg.so üzerine kopyalayın.
Yalnız şöyle bir durum var; bu her güncelleme sonrası tekrarlanmalı. Yoksa Opera, her yeni sürümle yine eski kısıtlı sürüm dosyasını getirerek bizim tam sürümün üzerine yazacak. Daha iyisini bulamadım :/

2020-06-25

Fedora'ya çevrimiçi duvar kağıtları

Manjaro'da kullandığım günlük otomatik internetten duvar kağıdı indirme özelliğinin benzerini Fedora'da uygulamak istedim. Youtube'da denk geldiğim şu video üzerinde çalışmaya başladım. Videonun yorumlarında bağlantısı verilen zip dosyasını indirerek işe başladım. Süreç otomatik değil; yönergeleri en azından Fedora 32'de uygulayınca olmadı, ama ufak değişikliklerle çalıştırmayı başardım.

İşin özü bir shell scripti tarafından gerçekleştiriliyor. Adım adım anlatmaya çalışacağım.

Öncelikle bing adresini bir değişkene atalım:
bing="www.bing.com"
Arkasından Bing'de günlük duvar kağıdını almak için kullanılacak adres bir değişkende toplanmış:
xmlURL="http://www.bing.com/HPImageArchive.aspx?format=xml&idx=0&n=1&mkt=en-US"
Bing'in günlük duvar kağıdının kaydedileceği yeri /Resimler klasörümün altındaki bingwallpapers olarak belirledim ve bunu da bir değişkene atalım:
saveDir=$HOME'/Resimler/bingwallpapers/'
Bu klasör -yoksa bile- yaratmak için aşağıdaki komudu çalıştıralım:
mkdir -p $saveDir
Geçerli seçeneklerin arasında

none
wallpaper
centered
scaled
stretched
zoom
spanned

olan resim seçenekleri için varsayılan olarak zoom seçilmiş:
picOpts="zoom"
Kullanmak istediğimiz resim uzantısını (farklı seçenekleri denemedim) seçelim:
picExt=".jpg"
Ekranımıza göre resim çözünürlüğünü belirliyoruz:
desiredPicRes="_1920x1080"
Burada string'in ilk karakterinin bir alt-tire olduğuna dikkat. Resim çözünürlüğü olarak örneğin "_1366x768" de kullanabilirdik.

Her resmin her çözünürlükte kopyası bulunmuyor sanırım. Bu sebeple eğer istediğimiz çözünürlük yoksa varsayılan çözünürlüğü kullanacağız.

Şimdi yukarıda xmlURL olarak verilen URL'deki içeriğin ilk birkaç satırını inceleyelim:
<images>
<image>
<startdate>20200625</startdate>
<fullstartdate>202006250000</fullstartdate>
<enddate>20200626</enddate>
<url>
/th?id=OHR.GorchFock_EN-US6157323134_1920x1080.jpg&rf=LaDigue_1920x1080.jpg&pid=hp
</url>

<urlBase>/th?id=OHR.GorchFock_EN-US6157323134</urlBase>
<copyright>
German navy tall ship Gorch Fock in waters off Reykjavík, Iceland (© DEEPOL by plainpicture/Henn Photography)
</copyright>
Burada dikkat edilecek bölümleri kalın olarak yazmaya çalıştım:

url tag'ının içindeki kısım varsayılan çözünürlükteki resmin kısmi yolu (başına bing eklenecek). Bu amaçla aşağıdaki değişkeni yaratıyoruz:
defaultPicURL=$bing$(echo $(curl -s $xmlURL) | grep -oP "<url>(.*)</url>" | 
cut -d ">" -f 2 | cut -d "<" -f 1)
urlBase tag'ının içindeki kısım ise bizim istediğimiz çözünürlükteki resmi elde etmek için kullanacağımız kısmi yol. Bu amaçla da aşağıdaki değişkeni yaratıyoruz:
desiredPicURL=$bing$(echo $(curl -s $xmlURL) | grep -oP "<urlBase>(.*)</urlBase>" | 
cut -d ">" -f 2 | cut -d "<" -f 1)$desiredPicRes$picExt
Sonra istediğimiz çözünürlükte resim URL'i geçerli mi diye bir if koşulu içinde gerekli denetimi gerçekleştirip geçerli ise bu adresi, geçerli değilse varsayılanı indirmeyi gerçekleştiriyoruz (çok fazla hata denetimi yok).
if wget --quiet --spider "$desiredPicURL"
then
    picName=${desiredPicURL##*OHR.}
    curl -s -o $saveDir$picName $desiredPicURL
else
    picName=${defaultPicURL##*OHR.}
    picName=${picName%%&*}
    curl -s -o $saveDir$picName $defaultPicURL
fi
Burada indirdiğimi resmin adını da picName değişkeninde depoladık. Şimdi bu indirdiğimiz resmi gsettings aracını kullanarak duvar kağıdı olarak değiştirelim:
gsettings set org.gnome.desktop.background picture-uri "$saveDir$picName"
Sonra da resmin duvar kağıdı olarak nasıl ölçeklendirileceğini seçelim:
gsettings set org.gnome.desktop.background picture-options $picOpts
Şimdi bir tek bu script'i oturum açışta çalıştırmak kaldı. Bunu yapmak için de Youtube videosındaki Laberinto kullanıcısı ev klasörünün altındaki .config klasörünün altında autostart alt klasörü oluşturup, içine daha önce indirdiğimiz zi dosyasının içinden çıkan  bingwallpapers.desktop dosyasını yapıştırmış. Bu iki dosya için de çalıştırma yetkileri vermeyi unutmayalım.

Bu şekilde bing.com'un günlük resimlerini duvarkağıdı olarak kullanabiliriz :)

2020-06-22

Robocopy

Çoğu durumlarda grafik arayüzün dosya kopyalama yetenekleri ile yetiniyoruz. Bunun dezavantajlarından biri olabilecekler hakkında önceden karar verilemiyor olması. Oluşan sıra dışı durumlar veya hatalar (dosya üzerine yazma, hedefteki dosyanın kaynaktakinden yeni olması vs) ile ilgili oluştuğu anda soru sorar. Bu da tüm süreç boyunca klavyenin başında oturulmasını gerektirir. Düz komut satırı aracı copy ise daha az şeyler sunar.

Bunun alternatifi, yine bir Windows aracı olan Robocopy olabilir.

C:\Klasor1 klasörü kaynak, D:\Klasor2 de hedef konumumuz olsun.

Düz kopyalama
C:\robocopy C:\Klasor1 D:\Klasor2
Bu yöntem ile boş klasörler kopyalanmaz.

Boş klasörleri de hedefte yarat
C:\robocopy C:\Klasor1 D:\Klasor2 /E
Taşı
C:\robocopy C:\Klasor1 D:\Klasor2 /E /MOVE
Bu şekilde C:\Klasor1 de silinir, tüm içerik D:\Klasor2 içine taşınmış olur.

Taşı ama klasör yapısını silme
C:\robocopy C:\Klasor1 D:\Klasor2 /E /MOV
Sadece MOVE anahtarının son harfini silerek kaynak konumun klasör yapısını bozmadan taşıma işleminin yapılmasını sağlar. Bu şekilde kaynaktaki klasör yapısının var olmasını bekleyen başka programların çalışması olumsuz etkilenmez.

Aynalama
C:\robocopy C:\Klasor1 D:\Klasor2 /E /MIR 
Kaynak klasörün tüm dosya yapısının aynısı hedefte oluşturulur. Eğer tüm dosyalar mevcutsa ve robocopy işlemi tekrarlanıyorsa kaynaktaki yeni oluşturulan dosyalar hedefe ilave edilir, veya kaynakta silinmiş dosyalar hedeften de silinir.

Hariç Tutma
Bir klasörü hariç tutarak taşımayı tamamlamak için /XD anahtarı kullanılır.
C:\robocopy C:\Klasor1 D:\Klasor2 /E /XD "C:\Klasor1\temp"
Burada klasör ismi yukarıdaki gibi tam yol ile verilebileceği gibi wildcard'lar ile de verilebilir:
C:\robocopy C:\Klasor1 D:\Klasor2 /E /XD "*temp*"
Benzer şekilde dosya hariç tutma için /XF anahtarı kullanılır.
C:\robocopy C:\Klasor1 D:\Klasor2 /E /XF "C:\Klasor1\bilgi.txt"
Burada da dosya adı tam yol veya wildcard'larla belirtilebilir.

    C:\robocopy C:\Klasor1 D:\Klasor2 /E /XF "*.txt"

Yenileri hariç tutarak taşı. Hedefte daha yeni dosya varsa hariç tut:

C:\robocopy C:\klasor1 D:\klasor2 /E /XN

Değişen dosyaları hariç tut. Burada değişiklik dosya boyutu bazında. Son değişitirme tarihi aynı olup boyutu farklı olan dosyaları da taşıma kapsamında tut:

C:\robocopy C:\klasor1 D:\klasor2 /E /XC
 
Kayıt tut
Yaptıklarının kaydını tut
 
C:\robocopy C:\klasor1 D:\klasor2 /E /LOG:D:\robolog.txt

Ya da hem kaydını tut, hem de ekrana yaz: 

C:\robocopy C:\klasor1 D:\klasor2 /E /TEE /LOG:D:\robolog.txt

Yedekleme modunda başla

Tek bir dosya kopyalıyoruz. Garip bir şey ama, yetkiniz olmasına rağmen korumalı bir dosya üzerine yazmak istiyorsanız bunu yapabileceğiniz bir anahtarı var:

C:\robocopy C:\klasor1 D:\klasor2 sistemdosyasi.dll /E /B

Devam ettirilebilir kipte kopyala

Ara sıra kesilen bir ağ bağlantısı üzerinden büyük bir dosya kopyalıyoruz. Bağlantısı kesildikten sonra tekrar bağlandığında kopyalamaya baştan başlamasını değil de kaldığımız yerden devam etmesini istiyoruz. Bu durumda:

C:\robocopy C:\klasor1 D:\klasor2 /E /Z

Bir de devam ettirilebilir kipte başlayıp, yetki sorunu çıkarması durumunda yedekleme kipine geçmesi var:

C:\robocopy C:\klasor1 D:\klasor2 /E /ZB

 ---
[1] https://www.youtube.com/watch?v=gTzTeHmKMKw

Farklı dağıtımlardaki grub komutları

Grub komutları her dağıtımda farklılık gösterebiliyor. Örneğin Ubuntu'da

$ sudo update-grub
komutu ile grub menüsü güncellenebiliyor. Ama bakınca aslında grub-mkconfig'i kullanan basit bir script'ten başka birşey değil. İçeriği kabaca şöyle:

grub-mkconfig -o /boot/grub/grub.cfg

Hatta update-grub2 de, update-grub'a bir kısayol.

Grub diskin başına yazmak için kullanılan komutsa Ubuntu'da şöyle:

$ sudo grub-install /dev/sda
Fedora'da ise update-grub ya da update-grub2 gibi bir şey söz konusu değil. Grub menüsünü yeniden oluşturmak için kullanılacak komut şöyle:

$ sudo grub2-mkconfig -o /boot/efi/EFI/grub.cfg
Benzer şekilde grub'ı diskin başına yazmak için ise

$ sudo grub2-install /dev/sda
kullanılıyor.

Fedora'da grub menüsünü düzenlemek için kullanılan grubby adında diğer dağıtımlarda bulamadığım bir araç da var.

Yine Fedora'da rescue çekirdeği ve initramfs'i tutuluyor. Bunları silmeniz durumunda tekrar yaratmak için dracut kullanılıyor. Var olanların üzerine yazmak için --force parametresi kullanılabilir.

Arch / Manjaro'da da Ubuntu'ya benzer şekilde update-grub var ki o da arka planda grub-mkconfig'i kullanan bir script. Ama burada update-grub2 gibi bir kısayol söz konusu değil.

$ sudo update-grub
Grub'ı diskin başına yazmak içinse yine

$ sudo grub-install /dev/sda
kullanılıyor. Tüm grub-install'ları BIOS sistemler için yazdım. UEFI sistemlerde ise kullanılacak komut şöyle:

$ grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=manjaro --recheck

Systemd zamanlayıcıları (timers)

Uzun yıllardır linux dünyasındaki cron görevlerinin yerini systemd ile birlikte zamanlayıcılar almaya başlıyor. Yeni bir zamanlayıcı yaratmaya çalışacağım.

Örnek olarak her pazar gecesi çalışması gereken bir "eski dosyaları silme" görevimiz olsun. Bu iş için eski_dosyalari_sil.sh dosyasının içeriği şöyle olabilir:

#!/bin/bash
find /user/metin/ -mtime -180 -exec rm -rf {} -

Bu dosyayı örneğin profilimizin altına kaydedip, çalıştırma yetkisi vermeyi unutmamak gerek:

$ chmod +x /home/metin/eski_dosyalari_sil.sh

Yapılması gereken 2 adımlı işimizin ilk adımı bir service birimi oluşturmak.

/usr/lib/systemd/system/temizlik.service

gibi bir yol ile kaydedeceğimiz dosyanın içeriği şöyle olabilir:

[Unit]
Description=Eski Dosyalari Silme

[Service]
Type=simple
ExecStart=/home/metin

[Install]

WantedBy=multi-user.target

İkinci adımda da bir zamanlayıcı (timer) birimi oluştırmalıyız. Bunun için de

/usr/lib/systemd/system/backup.timer

yolu ile şöyle bir dosya oluşturabiliriz:

[Unit]
Description=Execute backup every night

[Timer]
OnCalendar=*-*-* 00:00:00
Unit=temizlik.service

[Install]
WantedBy=multi-user.target

Bu adımdan sonra yapılacak tek şey zamanlayıcı birimini systemctl ile etkinleştirip başlatmak:

$ sudo systemctl enable temizlik.timer
$ sudo systemctl start temizlik.timer

temizlik.timer birim dosyası içinde OnCalendar satırında ne zaman çalışacağı belirtiliyor. Yukarıdaki örnekte yazılan

Calendar=*-*-* 00:00:00

UTC'ye göre 00:00:00 her gün demek. cron görevlerindeki zamanlama gibi buradaki sıra da yıl *-*-* için yıl-ay-gün şeklinde. Bundan sonraki 00:00:00 günün saati anlamında. Bunun yerine

Calendar=daily

de kullanılabilirdi.
Daha fazla örnek için [3] veya [4]'e bakılabilir. Persistent=true gibi bir komutla sistem açıldığında kaçırlmış görevlerin de çalıştırılması sağlanabilir.

service veya timer dosyalarında bir değişiklik yaptıktan sonra etkili olabilmesi için hizmetleri tekrar çalıştırma veya aşağıdaki gibi tekrar yüklemeliyiz:

# systemctl daemon-reload

Mevcut sistemdeki tüm aktif zamanlayıcıları görmek için

$ systemctl list-timers

kullanılabilir. Pasif olanları da görmek için --all anahtarı eklenebilir.

---

2020-06-09

journalctl ile loglara erişmek

systemd ile gelen başka bir araç da journalctl komutu. Varsayılan olarak çıkışını less komutu ile sayfalandırıyor (tüm less kısayolları geçerli). Sayfalama yapmamaması için --no-pager kullanılabilir, ama bu ciddi miktarda çıktı üreteceğinden sadece --no-pager ile kullanmak mantıklı/pratik değil. Hiçir parametre kullanmadan çalıştırınca varsayılan olarak en eski kayıtlar yukarıda, aşağıya gittikçe daha yenileri gösterecek şekilde listeleme yapar.

$ journalctl
-- Logs begin at Mon 2018-05-21 18:00:03 +03, end at Tue 2020-06-09 17:38:48 +03. --
May 21 20:59:27 localhost.localdomain kernel: Linux version 4.16.3-301.fc28.x86_64 (mockbuild@bkerne>
May 21 20:59:27 localhost.localdomain kernel: Command line: BOOT_IMAGE=/vmlinuz-4.16.3-301.fc28.x86_

Varsayılan olarak tarih kısmında yıl gösterilmez. Tarih bilgisini göstermek için --output=short-iso parametresi kullanılabilir.

$ journalctl -b --output=short-iso
2020-04-09T10:23:01+0000 localhost.localdomain solr[860]: Started Solr server on port 8983 (pid=999). Happy searching!
2020-04-09T10:23:01+0000 localhost.localdomain su[866]: pam_unix(su-l:session): session closed for user solr


Sırayı tersine çevirmek (en yeni kayıtlar yukarıda, aşağıya doğru daha eski kayıtları gösterecek şekilde) göstermesi için -r (reverse) kullanılabilir. Bu durumda yine sayfalama yapacaktır.

Eğer kayıtlar silinmemişse işletim sisteminin kurulduğu ilk günden bugüne kadar kayıtları gösterecektir. Bunun yerine herhangi bir tarihten sonrası, ya da herhangi bir açılıştan sonrası gösterilebilir. Öncelikle sistemdeki açılışları bilmek için tüm açılışları --list-boots parmetresiyle görebiliriz.

$ journalctl --list-boots
-63 b98547c039284c9dbd71c029316c09e4 Mon 2018-05-21 20:59:27 +03—Mon 2018-05-21 18:17:11 +03
-62 160231536b4148cfb98ed0b37a301813 Wed 2018-07-04 16:07:22 +03—Wed 2018-07-04 16:46:48 +03
-61 0e8d3a7031924ed3a4a8b47fdd30107e Wed 2018-08-15 16:07:10 +03—Wed 2018-08-15 16:27:05 +03
-60 ccf2109a7ec54f2a949eb156a95adb79 Tue 2018-09-25 14:27:04 +03—Wed 2018-09-26 08:13:28 +03
-59 37577ce61f3a44ac96c32ee35824263e Mon 2018-10-15 09:40:47 +03—Mon 2018-10-15 13:17:31 +03
-58 d9805c69dc0d4a72a185e256a284a299 Mon 2018-10-22 09:25:03 +03—Mon 2018-10-22 12:08:36 +03

Burada listelenecek açılışlar last reboot komutuyla eşleşir. Yukarıdaki satır (en küçün negatif ID) en eski açılış olup şu anki açılış 0 ID'si ile en altta listelenir. ID'si ile herhangi bir açılışın kayıtlarına erişmek için örneğin -b -63 şeklinde en eski açılışa ait loglar listelenebilir. Mevcut açılış için -b 0 ya da sadece -b kullanılabilir. Sistemin şuanki açılışından önceki açılışına ait kayıtlar için -b -1, ondan bir önceki için de -b -2 kullanılabilir.

Kayıtların içinde anahtar kelimesi araması yapmak için bu komutun çıktısı grep'e aktarılabileceği gibi -g parametresi ile bu iş arka planda da yapılabilir (büyük küçük harf duyarlı olmadan, aynen grep ile -i kullanılmış gibi).

$ journalctl -b -g usb

Sadece bir birimin (unit) ya da hizmetin kayıtlarını görmek için -u ile birlikte birim adı yazılabilir.

$ journalctl -b -u lightdm

Unit isimleri için

$ systemctl list-units

kullanılabilir.

Sadece çekirdek (kernel) kayıtları için -k anahtarı kullanılır.

$ journalctl -b -k
Haz 09 16:59:19 localhost.localdomain kernel: Linux version 5.3.16-300.fc31.x86_64 (mockbuild>
Haz 09 16:59:19 localhost.localdomain kernel: Command line: BOOT_IMAGE=(hd0,msdos1)/vmlinuz-5>
Haz 09 16:59:19 localhost.localdomain kernel: Disabled fast string operations

Çıkış formatını değiştirmek için -o ile birlikte short, verbose, json, json-pretty ve cat kullanılabilir.

$ journalctl -b -u lightdm -o cat
Starting Light Display Manager...
Started Light Display Manager.
pam_unix(lightdm-greeter:session): session opened for user lightdm by (uid=0)
gkr-pam: unable to locate daemon control file

Tüm journalctl logları /var/log/journal konumunda depolanır. journald hizmetinin ayarları da /etc/systemd/journald.conf dosyasında tutulur. Örneğin logları dosya boyutu kısıtlaması olmaksızın tutmak için başındaki # sembolü kaldırılarak Storage=persistent yapılabilir. Bundan sonra systemd-journald unit'i tekrar başlatılmalıdır.

$ sudo systemd restart systemd-journald

Mevcut boyutlar hakkında bilgi için

$ journalctl -b -u systemd-journald

ve

$ journalctl --disk-usage

kullanılabileceği gibi

$ du /var/log/journal -h

de kullanılabilir. Çok yer kaplayan logları silerek yer kazanmak istersek

$ journalctl --vacuum-size=2G

ya da

$ journalctl --vacuum-time=1years

ve hatta

$ journalctl --vacuum-files=10

kullanılabilir. Ayrıca conf dosyasındaki şu ayarlar da işe yarayabilir:

Storage: persistent ise geriye dönük kayıtlar hatırlanır. Auto olursa
SystemMaxUse : kayıtlar için kullanılabilecek azami disk alanı
SystemKeepFree : kayıtlar yazılırken bırakılması gereken asgari boş disk alanı
SystemMaxFileSize : Yeni dosyaya geçmeden her kayıt dosyasının en fazla ne kadar büyüyebileceği (persistent modu)
RuntimeMaxUse: Persistent olmayan mod volatile (uçucu, geçici) mod olarak isimlendiriliyor. Bu modda en fazla ne kadar disk alanı kullanılabileceği (/run/log/journal içinde)
RuntimeKeepFree : Uçucu modda asgari boş bırakılması gereken disk alanı boyutu (/run/log/journal içinde).
RuntimeMaxFileSize : Uçucu modda bir kayıt dosyasının yeni bir dosyaya geçmeden ne kadar büyüyebileceği (/run/log/journal içinde)

Varsayılan olarak sıkıştırma kullanılır denmiş, 512 byte'tan büyük girişler için [3]. Değiştirmek için Compress=1k gibi bir değerin girilebileceğinden bahsedilmiş.

journal kayıtlarının hata seviyeleri (log levels) öncelikler (priority) olarak bilinir. Şu öncelikler vardır:
  1. "emerg" (0)
  2. "alert" (1)
  3. "crit" (2)
  4. "err" (3)
  5. "warning" (4)
  6. "notice" (5)
  7. "info" (6)
  8. "debug" (7)
Sadece hata mesajlarını görmek için
$ journalctl -b -p 3
veya anahtar kelime kullanarak
$ journalctl -b -p err
kullanılabilir. Ayrıca acil alamr (alert), kritik (crit) ve hata (err) mesajlarını görmek istiyorsak aralık da belirtebiliriz:
$ journalctl -b -p 1..3
Bir zaman aralığında oluşan kayıtlarla ilgileniyorsak --since ve --until parametereleri aşağıdaki gibi kullanılabilir.

$ journalctl --since "2015-06-01 15:00" --until "2015-06-31 23:59"

Varsayılan olarak zaman bilgileri yerel sistem saati olarak kabul edilir. Ayrıca aşağıdaki gibi kelimeler de kullanılabilir:

$ journalctl --since yesterday
$ journalctl --since 09:00 --until "1 hour ago"

Bir kullanıcı tarafından çalıştırılan süreçlere ait hata kayıtları için kullanıcı id'si kullanılarak sorgu yapılabilir. Öncelikle ilgili kullanıcı hesabının id'sini elde etmek gerek. Örneğin rtkit hesabı için
$ id rtkit
ile uid bilgisi öğrenilir, daha sonra aşağıda kullanılır:
$ journalctl _UID=133
En son 20 kaydı göstermek için (bu arada 10 varsayılan değer, son 10 kayıt için sadece -n yazmak yeterli)

$ journalctl -n 20

Bir sistemin güvenli bir şekilde kapatılıp kapatılmadını görmek için bir önceki açılışa ait son 10 kayda bakmak için şu faydalı bir komut:

$ journalctl -b -1 -n

Hizmetlerden birini başlatırken oluşan hata mesajlarında kayıtlara
 
$ journalctl -xe
 
ile bakmamız önerilir. Burada -x anahtarı açıklamaları eklemesini, -e ise doğrudan en sona gitmesini söyler.

Canlı olarak oluşan loglara bağlanmak için de -f anahtarı kullanılabilir.

$ journalctl -f

---