Kernelmeldungen temporär nach xterminal umleiten
Kernelmeldungen temporär nach xterminal umleiten
Hallo,
bei diversen Linux-SetTopBoxen, die busybox nutzen, gibt es den Befehl 'setconsole', um die Kernelmeldungen z.B. live auf eine telnet-Konsole ausgeben zu lassen. Also man verbindet sich via telnet, gibt éinmal 'setconsole' ein und bekommt die Kernel/Syslog-Meldungen in Echtzeit zu sehen.
Mit apt-file habe ich 'setconsole' nicht im debian repository gefunden. Wie kann ich mal eben die Systemmeldungen in einem gnome-terminal in Echtzeit ausgeben lassen (ohne sie natürlic von vornherein als dauerhafte Systemkonsole zu konfigurieren, sofern das möglich ist).
bei diversen Linux-SetTopBoxen, die busybox nutzen, gibt es den Befehl 'setconsole', um die Kernelmeldungen z.B. live auf eine telnet-Konsole ausgeben zu lassen. Also man verbindet sich via telnet, gibt éinmal 'setconsole' ein und bekommt die Kernel/Syslog-Meldungen in Echtzeit zu sehen.
Mit apt-file habe ich 'setconsole' nicht im debian repository gefunden. Wie kann ich mal eben die Systemmeldungen in einem gnome-terminal in Echtzeit ausgeben lassen (ohne sie natürlic von vornherein als dauerhafte Systemkonsole zu konfigurieren, sofern das möglich ist).
- towo
- Beiträge: 4546
- Registriert: 27.02.2007 19:49:44
- Lizenz eigener Beiträge: GNU Free Documentation License
Re: Kernelmeldungen temporär nach xterminal umleiten
tail -f /var/log/foo.log
Re: Kernelmeldungen temporär nach xterminal umleiten
So werden die Meldungen aber nur sehr indirekt ausgegeben. Denn /var/log muss weiterhin vorhanden/beschreibbar sein und syslogd muss auch noch laufen.towo hat geschrieben:tail -f /var/log/foo.log
Re: Kernelmeldungen temporär nach xterminal umleiten
Besagtes setconsole verschraubt die /etc/inittab und wirkt reichlich veraltet. Die Version aus einem setconsole-1.0-8.noarch.rpm [1] habe ich mal auf NoPaste 37592 [2] gepackt, aber es sieht nicht nach dem aus, wonach du suchst.
Warum guckst du dir nicht mal diese Programme an, die du meintest? Sind das Binaries? Skripte?
Gruss Cae
[1] http://rpmfind.net/linux/rpm2html/searc ... setconsole
[2] die Lizenz davon ist unklar, in der Manpage aus dem Paket steht etwas von BSD, im Source gar nix. Wer etwas gegen die Veroffentlichung hat, moege sich bitte melden.
Warum guckst du dir nicht mal diese Programme an, die du meintest? Sind das Binaries? Skripte?
Gruss Cae
[1] http://rpmfind.net/linux/rpm2html/searc ... setconsole
[2] die Lizenz davon ist unklar, in der Manpage aus dem Paket steht etwas von BSD, im Source gar nix. Wer etwas gegen die Veroffentlichung hat, moege sich bitte melden.
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.
—Bruce Schneier
Re: Kernelmeldungen temporär nach xterminal umleiten
Hallo,
wie ich im ersten Beitrag schon fast angedeutet habe, ist der Befehl setconsole ein symlink auf busybox und somit binary. Ich bin aber jetzt auch kein Programmierer, der Sourcen liest/durchstöbert.
Ich dachte, es gibt vielleicht bei debian einen anderen Weg, um den Kernel mitzuteilen, auf welche Konsole er seine Meldungen ausgibt. Auf der Textkonsole scheint der (debian)-Kernel automatisch mitzuwechseln. Also wenn ich von tty1 auf tty2 wechsele, bekomme ich die akutellen Meldungen auf diese Konsole. Das finde ich eigentlich auch nicht so toll: Wenn ich auf tty1 mit Kernelmeldungen zugemüllt werde, kann ich nicht nach tty2 wechseln um dort Ruhe zu haben
Ich weiß auch nicht, welcher Prozess für die Ausgaben der Meldungen zuständig ist? init? oder der Kernel selber? rsyslogd ist es zumindest nicht, da ich beim beenden des daemons immer noch die Meldungen erhalte. Ich vermute der Kernel gibt die selber auf der aktuellen Textkonsole aus, denn die Meldungen beginnen ja schon beim Booten. Irgendwie konnte man auch nach einen Debuglevel setzen, wie geschwätzig der sein soll. Ich weiß nicht, ob das fest einkompiliert ist oder als bootparameter angegeben werden kann oder sogar noch im laufenden System (über /proc) geändert werden kann...
Da muss ich mich wohl noch einmal weiter mit beschäftigen...
Nachtrag: Hier mal ein Link zu setconsole der busybox:
Nachtrag2: Ich habe mal busybox aus dem debian-repository installiert und ein symblink namens 'setconsole' erststellt. Geht leider nicht:
offenbar fehlt das setconsole-Kommando bei der debian-binary
wie ich im ersten Beitrag schon fast angedeutet habe, ist der Befehl setconsole ein symlink auf busybox und somit binary. Ich bin aber jetzt auch kein Programmierer, der Sourcen liest/durchstöbert.
Ich dachte, es gibt vielleicht bei debian einen anderen Weg, um den Kernel mitzuteilen, auf welche Konsole er seine Meldungen ausgibt. Auf der Textkonsole scheint der (debian)-Kernel automatisch mitzuwechseln. Also wenn ich von tty1 auf tty2 wechsele, bekomme ich die akutellen Meldungen auf diese Konsole. Das finde ich eigentlich auch nicht so toll: Wenn ich auf tty1 mit Kernelmeldungen zugemüllt werde, kann ich nicht nach tty2 wechseln um dort Ruhe zu haben
Ich weiß auch nicht, welcher Prozess für die Ausgaben der Meldungen zuständig ist? init? oder der Kernel selber? rsyslogd ist es zumindest nicht, da ich beim beenden des daemons immer noch die Meldungen erhalte. Ich vermute der Kernel gibt die selber auf der aktuellen Textkonsole aus, denn die Meldungen beginnen ja schon beim Booten. Irgendwie konnte man auch nach einen Debuglevel setzen, wie geschwätzig der sein soll. Ich weiß nicht, ob das fest einkompiliert ist oder als bootparameter angegeben werden kann oder sogar noch im laufenden System (über /proc) geändert werden kann...
Da muss ich mich wohl noch einmal weiter mit beschäftigen...
Nachtrag: Hier mal ein Link zu setconsole der busybox:
Nachtrag2: Ich habe mal busybox aus dem debian-repository installiert und ein symblink namens 'setconsole' erststellt. Geht leider nicht:
Code: Alles auswählen
./setconsole
setconsole: applet not found
`--# /bin/busybox
BusyBox v1.21.1 (Debian 1:1.21.0-1) multi-call binary.
BusyBox is copyrighted by many authors between 1998-2012.
Licensed under GPLv2. See source distribution for detailed
copyright notices.
Usage: busybox [function [arguments]...]
or: busybox --list[-full]
or: busybox --install [-s] [DIR]
or: function [arguments]...
BusyBox is a multi-call binary that combines many common Unix
utilities into a single executable. Most people will create a
link to busybox for each function they wish to use and BusyBox
will act like whatever it was invoked as.
Currently defined functions:
[, [[, adjtimex, ar, arp, arping, ash, awk, basename, blockdev, brctl,
bunzip2, bzcat, bzip2, cal, cat, chgrp, chmod, chown, chroot, chvt,
clear, cmp, cp, cpio, cttyhack, cut, date, dc, dd, deallocvt, depmod,
df, diff, dirname, dmesg, dnsdomainname, dos2unix, du, dumpkmap,
dumpleases, echo, egrep, env, expand, expr, false, fgrep, find, fold,
free, freeramdisk, ftpget, ftpput, getopt, getty, grep, groups, gunzip,
gzip, halt, head, hexdump, hostid, hostname, httpd, hwclock, id,
ifconfig, init, insmod, ionice, ip, ipcalc, kill, killall, klogd, last,
less, ln, loadfont, loadkmap, logger, login, logname, logread, losetup,
ls, lsmod, lzcat, lzma, md5sum, mdev, microcom, mkdir, mkfifo, mknod,
mkswap, mktemp, modinfo, modprobe, more, mount, mt, mv, nameif, nc,
netstat, nslookup, od, openvt, patch, pidof, ping, ping6, pivot_root,
poweroff, printf, ps, pwd, rdate, readlink, realpath, reboot, renice,
reset, rev, rm, rmdir, rmmod, route, rpm, rpm2cpio, run-parts, sed,
seq, setkeycodes, setsid, sh, sha1sum, sha256sum, sha512sum, sleep,
sort, start-stop-daemon, stat, strings, stty, swapoff, swapon,
switch_root, sync, sysctl, syslogd, tac, tail, tar, taskset, tee,
telnet, test, tftp, time, timeout, top, touch, tr, traceroute,
traceroute6, true, tty, udhcpc, udhcpd, umount, uname, uncompress,
unexpand, uniq, unix2dos, unlzma, unxz, unzip, uptime, usleep,
uudecode, uuencode, vconfig, vi, watch, watchdog, wc, wget, which, who,
whoami, xargs, xz, xzcat, yes, zcat
Re: Kernelmeldungen temporär nach xterminal umleiten
Von einem Boot-Parameter weiss ich nix, aber SysRq+[1..9] kann die Geschwaetzikeit anpassen. Analog funktioniertKermit24 hat geschrieben:Irgendwie konnte man auch nach einen Debuglevel setzen, wie geschwätzig der sein soll. Ich weiß nicht, ob das fest einkompiliert ist oder als bootparameter angegeben werden kann oder sogar noch im laufenden System (über /proc) geändert werden kann...
Code: Alles auswählen
# echo [1..9] >/proc/sysrq-trigger
Code: Alles auswählen
./chtty: ioctl failed: Operation not permitted
Code: Alles auswählen
./chtty: ioctl failed: Device or resource busy
Code: Alles auswählen
/* MIT License, author <cae@debianforum.de> */
#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>
#include <sys/ioctl.h>
#include <errno.h>
#include <string.h>
int main(int argc, char **argv) {
if (2 != argc) {
fprintf(stderr, "Usage: %s {tty}\n", argv[0]);
return 2;
}
int fd;
char *dev = argv[1];
if (-1 == (fd = open(dev, O_WRONLY))) {
fprintf(stderr, "%s: can't open %s: %s\n", argv[0], dev, strerror(errno));
return 1;
}
if (0 != ioctl(fd, TIOCCONS, NULL)) {
fprintf(stderr, "%s: ioctl failed: %s\n", argv[0], strerror(errno));
return 1;
}
close(fd);
return 0;
}
Gruss Cae
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.
—Bruce Schneier
Re: Kernelmeldungen temporär nach xterminal umleiten
Habe nun mal die busybox-1.22.0 von Dez 2013 selbst gebaut. Mit 'make menuconfig' alles abgewählt, außer setconsole. Bei mir klappt es auch nicht:
Irgendwas scheint auf den SetTop-Boxen also anders zu sein als beim Debian-System. Dort funktioniert 'setconsole' über telnet einwandfrei.
Nachtrag: In der man-page von tty_ioctl steht:
Scheinbar ist die Ausgabe schon umgeleitet und man muss sie irgendwie stoppen? Ich verstehe den letzten Satz ehrlich gesagt nicht richtig. Auf den SetTop-Boxen laufen wohl auch überwiegend ältere Kernel (2.4er).
Nachtrag2: Hm, jetzt habe ich es kapiert. Man muss erst ein "./setconsole /dev/console" oder "./setconsole /dev/tty0" ausführen. Danach kommt die busy-Meldung dann nicht mehr bei './setconsole'. Allerdings funktioniert es dennoch nicht. In meinem gnome-terminal erscheinen keine Ausgaben beim Ziehen/Stecken von USB-Geräten, auf tty[0-6] aber weiterhin.
Auch ein "./setconsole `tty`" (in meinem Fall /dev/pts/10) brachte leider keinen Erfolg
Code: Alles auswählen
./setconsole
setconsole: TIOCCONS: Device or resource busy
Nachtrag: In der man-page von tty_ioctl steht:
Code: Alles auswählen
Redirecting console output
TIOCCONS void
Redirect output that would have gone to /dev/console or
/dev/tty0 to the given terminal. If that was a pseudo-terminal
master, send it to the slave. In Linux before version 2.6.10,
anybody can do this as long as the output was not redirected
yet; since version 2.6.10, only root (a process with the
CAP_SYS_ADMIN capability) may do this. If output was redirected
already EBUSY is returned, but redirection can be stopped by
using this ioctl with fd pointing at /dev/console or /dev/tty0.
Nachtrag2: Hm, jetzt habe ich es kapiert. Man muss erst ein "./setconsole /dev/console" oder "./setconsole /dev/tty0" ausführen. Danach kommt die busy-Meldung dann nicht mehr bei './setconsole'. Allerdings funktioniert es dennoch nicht. In meinem gnome-terminal erscheinen keine Ausgaben beim Ziehen/Stecken von USB-Geräten, auf tty[0-6] aber weiterhin.
Auch ein "./setconsole `tty`" (in meinem Fall /dev/pts/10) brachte leider keinen Erfolg
Re: Kernelmeldungen temporär nach xterminal umleiten
Noch zwei kleine Dinge:
1. Dass die Kernelmeldungen immer zur aktuellen Textkonsole gesendet werden, lässt sich mit "setlogcons [0..6]" (hier: logge nur zu /dev/tty1) ändern. Mit der Grafikkonsole (i.d.R. 7) und xterminals funktioniert das leider nicht.
=> man setlogcons
2. Der Loglevel (=die Geschwätzigkeit) lässt sich auch über "dmesg -n [1..9]" festlegen
=> man dmesg
1. Dass die Kernelmeldungen immer zur aktuellen Textkonsole gesendet werden, lässt sich mit "setlogcons [0..6]" (hier: logge nur zu /dev/tty1) ändern. Mit der Grafikkonsole (i.d.R. 7) und xterminals funktioniert das leider nicht.
=> man setlogcons
2. Der Loglevel (=die Geschwätzigkeit) lässt sich auch über "dmesg -n [1..9]" festlegen
=> man dmesg