Ik Van Linux

Bestanden Bekijken


We kennen al een aantal commando’s waarmee we de inhoud van bestanden kunnen bekijken. Vooral het less commando is een zeer krachtig stukje gereedschap waarmee je dwars door het bestand kunt bladeren, en zelfs naar stukjes tekst in het bestand kunt zoeken.

Maar wat nu als je alleen maar geïnteresseerd bent in het eerste stukje van een bestand. Dat kan bijvoorbeeld nuttig zijn wanneer je op zoek bent naar een bepaald bestand in de broncode van een programma. Het is een goed gebruik om in die eerste regels een stukje commentaar te plaatsen over wat de bedoeling van het programma is.
Daar kun je het head commando voor gebruiken. Kijk maar:

head /etc/bash.bashrc
# System-wide .bashrc file for interactive bash(1) shells.

# To enable the settings / commands in this file for login shells as well,
# this file has to be sourced in /etc/profile.

# If not running interactively, don't do anything
[ -z "$PS1" ] && return

# check the window size after each command and, if necessary,
# update the values of LINES and COLUMNS.

Ik gebruik hier even een willekeurig bestand als voorbeeld. Standaard laat het head commando de eerste 10 regels van een bestand zien. Dat is doorgaans voldoende om in te kunnen schatten dat dit ook werkelijk het bestand is waar je naar op zoek bent. Maar met de -n parameter kun je dat aantal regels ook zelf nog aanpassen.

head -n4 /etc/bash.bashrc
# System-wide .bashrc file for interactive bash(1) shells.

# To enable the settings / commands in this file for login shells as well,
# this file has to be sourced in /etc/profile.

Het tail commando is eigenlijk veel interessanter, vooral tijdens het foutzoeken. Met tail worden de laatste regels van een bestand afgedrukt. Kijk maar:

tail /var/log/auth.log
Dec 27 06:25:15 raspberrypi CRON[10398]: pam_unix(cron:session): session closed for user root
Dec 27 07:17:01 raspberrypi CRON[10784]: pam_unix(cron:session): session opened for user root by (uid=0)
Dec 27 07:17:01 raspberrypi CRON[10784]: pam_unix(cron:session): session closed for user root
Dec 27 08:17:02 raspberrypi CRON[11054]: pam_unix(cron:session): session opened for user root by (uid=0)
Dec 27 08:17:02 raspberrypi CRON[11054]: pam_unix(cron:session): session closed for user root
Dec 27 09:17:01 raspberrypi CRON[11352]: pam_unix(cron:session): session opened for user root by (uid=0)
Dec 27 09:17:01 raspberrypi CRON[11352]: pam_unix(cron:session): session closed for user root
Dec 27 09:43:34 raspberrypi sshd[11507]: Accepted password for pi from 192.168.59.101 port 35384 ssh2
Dec 27 09:43:34 raspberrypi sshd[11507]: pam_unix(sshd:session): session opened for user pi by (uid=0)
Dec 27 09:43:34 raspberrypi systemd-logind[224]: New session c51 of user pi.

Niet schrikken van de inhoud van dit bestand. Het systeem houdt in dit bestand bij wie er allemaal inloggen in het systeem. Je ziet daarbij heel vaak dat de gebruiker root iets doet. Dat zijn taken die op gezette tijden gestart worden om het systeem draaiende te houden. In de laatste regel zie je dat wij zelf zijn ingelogd.

Het wordt pas echt interessant wanneer we de -f switch aan het tail commando toevoegen. Dat is de follow switch, waarmee je aan tail de opdracht geeft om het einde van het bestand te blijven volgen. Type maar eens tail -f /var/log/auth.log en je zult zien dat de output van het commando hetzelfde is als daarnet, met dit verschil dat je nu de Prompt niet terug krijgt.
Open nu eens een nieuwe terminal, terwijl je zicht blijft houden op de huidige terminal (indien mogelijk). Wanneer je dat met ssh deed zul je al meteen een nieuwe regel zien verschijnen. Doe je dat op de Raspberry Pi zelf dan kun je bijvoorbeeld het commando sudo apt update geven om tijdelijk root te worden. Deze actie wordt namelijk ook gelogd.

En je weet vast nog wel dat je met Ctrl-C het tail -f commando kunt stoppen als je er genoeg van hebt, toch?

Vaak worden foutmeldingen in het bestand /var/log/syslog gelogd. Of wanneer je de foutmeldingen van je webserver wilt bekijken dan moet je bij het bestand /var/log/nginx/error.log zijn bijvoorbeeld. Met het tail commando kun je dan die bestanden in de gaten houden om te zien of er geen rare dingen gebeuren tijdens jouw programmeer kunsten.

Kleine Toegift

Het less commando kent ook een follow mogelijkheid. Stel voor dat je een bestand aan het bekijken bent met het less commando en je komt aan het einde van het bestand als blijkt dat er nog meer zou moeten komen. Een ander programma is bijvoorbeeld nog bezig om dat bestand verder aan te vullen. Je hoeft less dan niet te sluiten om de groei van het bestand in de gaten te houden. Druk gewoon op de F (hoofdletter F van follow) om het bestand te blijven volgen.