BlogBlog ÜbersichtjailscriptportsoptFreeBSDLinksThermoskanne

Terminal zurücksetzen

Gibt man versehentlich binäre Daten in einem Terminal aus, kann es vorkommen das die Terminaleinstellungen verändert werden, so dass die Schrift nicht mehr lesbar ist oder das Terminal mit clear nicht mehr geleert werden kann. In diesem Falle können die Terminaleinstellungen wie folgt zurückgesetzt werden:

# tput init 
# clear
Comments (1)  Permalink

Lock-Datei erstellen während ein Befehl ausgeführt wird

Mit Hilfe von lockf kann eine Lock-Datei erstellt werden während ein Befehl ausgeführt wird, so dass zum Beispiel der gleiche Befehl nicht gleichzeitig nochmals ausgeführt wird. Im folgenden Beispiel wird die Datei /tmp/lock als Lock-Datei verwendet während der Befehl sleep 5 ausgeführt wird:

# lockf /tmp/lock sleep 5

Startet man nun einen zweiten Befehl mit lockf und der gleichen Lock-Datei so wird mit der Ausführung des zweiten Befehles solange gewartet bis die Lock-Datei nicht mehr vorhanden ist:

# /usr/bin/time -h lockf /tmp/lock whoami
beat
        4.60s real              0.00s user              0.00s sys

Mit Hilfe der -t Option kann angegeben werden wieviele Sekunden lockf maximal wartet. Ist nach Ablauf dieser Zeit die Lock-Datei noch vorhanden bricht lockf ab:

# lockf -t 1 /tmp/lock whoami
lockf: /tmp/lock: already locked

Auf FreeBSD ist lockf standardmässig im Basissystem vorhanden. Mehr Informationen zu lockf findet man in der Manpage lockf(1).

 Permalink

rc.d-Skripte mit Hilfe von service ausführen

Seit FreeBSD 7.3 und 8.1 können die rc.d-Skripte auch mit Hilfe von service ausgeführt werden. Im folgenden Beispiel wird getestet ob der Apache-Webserver läuft:

# service apache22 status
apache22 is running as pid 8052.

Desweiteren können Services auch gestartet, gestoppt oder neugestartet werden. Mit Hilfe der -e Option werde alle Services angezeigt, welche beim Systemstart automatisch gestartet werden:

# service -e
/etc/rc.d/hostid
/etc/rc.d/hostid_save
/etc/rc.d/ip6addrctl
/etc/rc.d/cleanvar
/etc/rc.d/devd
/etc/rc.d/pflog
/etc/rc.d/pf
/etc/rc.d/newsyslog
/etc/rc.d/syslogd
/etc/rc.d/dmesg
/etc/rc.d/virecover
/etc/rc.d/motd
/etc/rc.d/ntpd
/usr/local/etc/rc.d/mysql-server
/usr/local/etc/rc.d/tinderd
/usr/local/etc/rc.d/apache22
/etc/rc.d/sshd
/etc/rc.d/sendmail
/etc/rc.d/cron
/etc/rc.d/jail
/etc/rc.d/mixer
/etc/rc.d/bgfsck

Auf FreeBSD ist service seit FreeBSD 7.3 und 8.1 standardmässig im Basissystem vorhanden. Mehr Informationen zu service findet man in der Manpage service(1).

 Permalink

Wörter von zwei Dateien vergleichen

Mit Hilfe von wdiff lassen sich die einzelnen Wörter von zwei Dateien vergleichen. Im FreeBSD-Portbaum findet man wdiff unter textproc/wdiff:

# cd /usr/ports/textproc/wdiff && make install clean

Werden nun zwei Dateien mit wdiff verglichen, wird angezeigt welche Wörter hinzugekommen und welche entfernt wurden:

# cat datei1
I like FreeBSD.
# cat datei2
I love FreeBSD.
http://www.FreeBSD.org/
# wdiff datei1 datei2
I [-like-] {+love+} FreeBSD.
{+http://www.FreeBSD.org/+}

Mit der -s Option wird zusätzlich eine Statistik über die Veränderungen angezeigt:

# wdiff -s datei1 datei2
I [-like-] {+love+} FreeBSD.
{+http://www.FreeBSD.org/+}
datei1: 3 words  2 66% common  0 0% deleted  1 33% changed
datei2: 4 words  2 50% common  1 25% inserted  1 25% changed

Mehr Informationen zu wdiff findet man in der Manpage wdiff(1).

 Permalink

PDF-Dateien durchsuchen

Mit Hilfe von pdfgrep kann eine PDF-Datei wie mit grep(1) durchsucht werden. Im FreeBSD-Portbaum findet man pdfgrep unter textproc/pdfgrep:

# cd /usr/ports/textproc/pdfgrep && make install clean

Nun kann die PDF-Datei nach Wörtern oder regulären Ausdrücken durchsucht werden und alle Zeilen welche den Suchbegriff beinhalten werden ausgegeben:

# pdfgrep "zpool upgrade" zfsadmin.pdf
Upgrading ZFS Storage Pools (zpool upgrade) .............21
Upgrading ZFS Storage Pools (zpool upgrade)
Upgrading ZFS Storage Pools (zpool upgrade)
version to take advantage of the latest features by using the zpool upgrade command. In
you can upgrade your pools with the zpool upgrade command to take advantage of the pool
action: Upgrade the pool using âzpool upgradeâ. Once this is done, the
# zpool upgrade -v
Then, you can run the zpool upgrade command to upgrade your pools. For example:
# zpool upgrade -a
zpool upgrade, 78

Mit der -n Option wird die Seitezahl angezeigt auf welcher Seite im Dokument man die angezeigte Zeile findet:

# pdfgrep -n "zpool upgrade" zfsadmin.pdf 
3: Upgrading ZFS Storage Pools (zpool upgrade) .............21
13: Upgrading ZFS Storage Pools (zpool upgrade)
21: Upgrading ZFS Storage Pools (zpool upgrade)
21: version to take advantage of the latest features by using the zpool upgrade command. In
78: you can upgrade your pools with the zpool upgrade command to take advantage of the pool
78: action: Upgrade the pool using âzpool upgradeâ. Once this is done, the
78: # zpool upgrade -v
79: Then, you can run the zpool upgrade command to upgrade your pools. For example:
79: # zpool upgrade -a
192: zpool upgrade, 78

Mehr Informationen zu pdfgrep findet man in der Manpage pdfgrep(1).

Comments (2)  Permalink

Mehrere Dateien zeilenweise zusammenführen

Mit Hilfe von lam lassen sich die Zeilen von mehreren Dateien zusammenführen. Im folgenden Beispiel werden drei verschiedene Dateien verwendet:

# cat datei1 
1
2
3
4
5
# cat datei2
a
b
c
d
e
# cat datei3
z
y
x
w
v

Nun lassen sich mit lam die jeweiligen Zeilen zusammenführen:

# lam datei1 datei2 datei3
1az
2by
3cx
4dw
5ev

Mit der -S Option kann ein Trennzeichen definiert werden, welches zwischen die Zeilen der verschiedenen Dateien dargestellt wird:

# lam datei1 -S " " datei2 datei3
1 a z
2 b y
3 c x
4 d w
5 e v
# lam datei1 -S "\
" datei2 datei3
1
a
z
2
b
y
3
c
x
4
d
w
5
e
v

Auch lassen sich jeweils zwei Zeilen einer einzelnen Datei zu einer verbinden:

# lam - - < datei1 
12
34
5

Auf FreeBSD ist lam standardmässig im Basissystem vorhanden. Mehr Informationen zu lam findet man in der Manpage lam(1).

Comments (2)  Permalink

Informationen über Systembenutzer anzeigen

Mit Hilfe von logins lassen sich Informationen über lokale Systembenutzer auslesen. Mit der -d Option kann herausgefunden werden welche Benutzer identische Benutzer-IDs haben:

# logins -d
root            0       wheel           0       Charlie &
toor            0       wheel           0       Bourne-again Superuser

Möchte man auslesen, welche Benutzer der gleichen Gruppen angehören, so kann die -g Option verwerdet werden:

# logins -g wheel
root            0       wheel           0       Charlie &
beat            1001    users           1001    Beat Gätzi

Informationen über einen Benutzer erhält man mit der -l Option:

# logins -l beat
beat            1001    users           1001    Beat Gätzi

Für Informationen über die sekundären Gruppen der Benutzer verwendet man die -m Option. Durch die -t Option wird die Ausgabe nicht nach der Benutzer-ID sondern nach dem Benutzernamen sortiert:

# logins -m -t
_dhcp           65      _dhcp           65      dhcp programs
_pflogd         64      _pflogd         64      pflogd privsep user
avahi           558     avahi           558     Avahi Daemon User
beat            1001    users           1001    Beat Gätzi
                        wheel           0      
                        vboxusers       920    
bin             3       bin             7       Binaries Commands and Source
bind            53      bind            53      Bind Sandbox
clamav          106     clamav          106     Clam Antivirus
                        mail            6      
daemon          1       daemon          1       Owner of many system processes
games           7       games           13      Games pseudo-user
haldaemon       560     haldaemon       560     HAL Daemon User
kmem            5       nogroup         65533   KMem Sandbox
mailnull        26      mailnull        26      Sendmail Default User
man             9       man             9       Mister Man Pages
messagebus      556     messagebus      556     D-BUS Daemon User
minbif          926     minbif          926     Minbif Daemon User
news            8       news            8       News Subsystem
nobody          65534   nobody          65534   Unprivileged user
operator        2       operator        5       System &
polkit          562     polkit          562     PolicyKit Daemon User
pop             68      mail            6       Post Office Owner
proxy           62      proxy           62      Packet Filter pseudo-user
pulse           563     pulse           563     PulseAudio System User
root            0       wheel           0       Charlie &
                        operator        5      
smmsp           25      smmsp           25      Sendmail Submission User
sshd            22      sshd            22      Secure Shell Daemon
test            1002    test            1002    Testbenutzer
toor            0       wheel           0       Bourne-again Superuser
tty             4       nogroup         65533   Tty Sandbox
uucp            66      uucp            66      UUCP pseudo-user
www             80      www             80      World Wide Web Owner

Informationen über das home-Verzeichnis und die verwendete Shell erhält man mit der -x Option. Verwendet man die -u Option werden keine Systembenutzer angezeigt:

# logins -x -u
beat            1001    users           1001    Beat Gätzi
                        /home/beat
                        /bin/csh
test            1002    test            1002    Testbenutzer
                        /home/test
                        /bin/tcsh

Auf FreeBSD ist logins standardmässig im Basissystem vorhanden. Mehr Informationen zu logins findet man in der Manpage logins(1).

 Permalink

Loginnamen anzeigen

Mit Hilfe von logname lässt sich anzeigen mit welchem Benutzer man sich angemeldet hat:

# logname
beat

Dies funktioniert auch, wenn der Benutzer mit su(1) gewechselt oder die LOGNAME oder USER Umgebungsvariablen verändert wurden:

# su -
# id
uid=0(root) gid=0(wheel) groups=0(wheel),5(operator)
# logname
beat
 Permalink

Benutzer sperren

Möchte man einen lokalen Benutzer sperren so kann dazu pw lock als root verwendet werden:

# pw lock <Benutzernamen>

Soll der Benutzer danach wieder entsperrt werden, kann dies mit pw unlock gemacht werden:

# pw unlock <Benutzernamen>
 Permalink

Unterbrochener fetch-Transfer wiederaufnehmen

Lädt man eine grössere Datei mit fetch herunter, kann durch das verwenden der -R Option verhindert werden, dass die heruntergeladene Datei bei einem Transferunterbruch gelöscht wird:

# fetch -R ftp://ftp.ch.freebsd.org/pub/FreeBSD/releases/i386/ISO-IMAGES/8.1/FreeBSD-8.1-RELEASE-i386-disc1.iso
FreeBSD-8.1-RELEASE-i386-disc1.iso             23% of  645 MB 1988 kBps 04m16s
/tmp: write failed, filesystem is full
FreeBSD-8.1-RELEASE-i386-disc1.iso             23% of  645 MB 1986 kBps 04m14s
fetch: FreeBSD-8.1-RELEASE-i386-disc1.iso: No space left on device

Mit der -r Option kann danach ein allfällig abgebrochener Transfer fortgesetzt werden:

# fetch -r ftp://ftp.ch.freebsd.org/pub/FreeBSD/releases/i386/ISO-IMAGES/8.1/FreeBSD-8.1-RELEASE-i386-disc1.iso
 Permalink
Next1-10/84