12-30-2008
Panos' "tail" implementation is the best way to go for your problem. It simple clears the EOF from the stream so calls to fgets() (or any other function) won't stop.
/dev/log is a unix socket used to create messages, not to read them. If you wish to read messages from dmesg, you could use the syslog() (kernel function) glibc wrapper klogctl() with type 3 (which doesn't clear the kernel ring buffer).
Another solution is creating a "man-in-middle" situation by modifying syslog's daemon configuration so it operates on a different unix socket than /dev/log (say /whatever/new_socket). In other words, your program would read /dev/log for requests and forward them to syslog daemon unix socket (/whatever/new_socket).
Yet another solution would be to use ptrace() PTRACE_ATTACH/PTRACE_PEEKTEXT to intercept syslog's daemon read()'s from /dev/log.
10 More Discussions You Might Find Interesting
1. UNIX for Dummies Questions & Answers
Which programm, deamon or script is responsible for filling the file /var/log/messages ? (1 Reply)
Discussion started by: Cozmic
1 Replies
2. Solaris
hi sirs
can u tell the difference between /var/log/syslogs and /var/adm/messages
in my working place i am having two servers.
in one servers messages file is empty and syslog file is going on increasing..
and in another servers message file is going on increasing but syslog file is... (2 Replies)
Discussion started by: tv.praveenkumar
2 Replies
3. UNIX for Advanced & Expert Users
The /var/adm/messages in Solaris seem to log more system messages/errors compared to /var/log/messages in Linux.
I checked the log level in Linux and they seem OK.
Is there any other log file that contains the messages or is it just that Linux doesn't log great many things? (2 Replies)
Discussion started by: gomes1333
2 Replies
4. Solaris
Hi,
Is the contents in /var/log/syslog and /var/adm/messages are same??
Regards (3 Replies)
Discussion started by: vks47
3 Replies
5. Shell Programming and Scripting
How can view log messages between two time frame from /var/log/message or any type of log files.
when logfiles are very big and especially many messages with in few minutes, I would like to display log messages between 5 minute interval.
Could you pls give me the command? (1 Reply)
Discussion started by: johnveslin
1 Replies
6. UNIX for Dummies Questions & Answers
Whenever a user uses su I get the following error messages in /var/log/messages:
Nov 23 04:24:55 <REMOVED> abrt: saved core dump of pid 26141 (/usr/libexec/fprintd) to /var/spool/abrt/ccpp-1322018695-26141.new/coredump (753664 bytes)
Nov 23 04:24:55 <REMOVED> abrtd: Directory... (3 Replies)
Discussion started by: JakesHat
3 Replies
7. SuSE
How are you?
SUSE V10 and 11.
In /var/log/messages I see these lines in some servers. I'd like to know what causes these errors and how to fix them.
Thank you,
error: PAM: Authentication failure for root from XXXXXXXX
Did not receive identification string from XXXXXXX
Invalid user suse-gm... (2 Replies)
Discussion started by: JDBA
2 Replies
8. Shell Programming and Scripting
Below is my script to log all the command input by any user to /var/log/messages. But I cant achieve the desired output that i want. PLease see below.
function log2syslog
{
declare COMMAND
COMMAND=$(fc -ln -0)
logger -p local1.notice -t bash -i -- "$USER:$COMMAND"
}
trap... (12 Replies)
Discussion started by: invinzin21
12 Replies
9. Shell Programming and Scripting
I have been searching and reading about syslog. I would like to know how to Transfer the logs being thrown into /var/log/messages into another file example /var/log/volumelog.
tail -f /var/log/messages
dblogger: msg_to_dbrow: no logtype using missing
dblogger: msg_to_dbrow_str: val ==... (2 Replies)
Discussion started by: kenshinhimura
2 Replies
10. Red Hat
I am getting a lot of message as follows in /var/log/message files as follows.
messages.1:559:May 4 20:01:56 SERVER2 kernel: session_stat: sync=0 async=33 aretr=0
messages.1:560:May 4 20:02:42 SERVER2 kernel: session_stat: dev=fd:5 state=6 blksize=4096 mmapsize=262144
messages.1:561:May 4... (2 Replies)
Discussion started by: Anjan Ganguly
2 Replies
DMESG(1) User Commands DMESG(1)
NAME
dmesg - print or control the kernel ring buffer
SYNOPSIS
dmesg [options]
dmesg --clear
dmesg --read-clear [options]
dmesg --console-level level
dmesg --console-on
dmesg --console-off
DESCRIPTION
dmesg is used to examine or control the kernel ring buffer.
The default action is to read all messages from kernel ring buffer.
OPTIONS
The --clear, --read-clear, --console-on, --console-off and --console-level options are mutually exclusive.
-C, --clear
Clear the ring buffer.
-c, --read-clear
Clear the ring buffer contents after printing.
-D, --console-off
Disable printing messages to the console.
-d, --show-delta
Display the timestamp and time delta spent between messages. If used together with --notime then only the time delta without the
timestamp is printed.
-e, --reltime
Display the local time and delta in human readable format.
-E, --console-on
Enable printing messages to the console.
-F, --file file
Read log from file.
-f, --facility list
Restrict output to defined (comma separated) list of facilities. For example
dmesg --facility=daemon
will print messages from system daemons only. For all supported facilities see dmesg --help output.
-H, --human
Enable human readable output. See also --color, --reltime and --nopager.
-h, --help
Print a help text and exit.
-k, --kernel
Print kernel messages.
-L, --color
Colorize important messages.
-l, --level list
Restrict output to defined (comma separated) list of levels. For example
dmesg --level=err,warn
will print error and warning messages only. For all supported levels see dmesg --help output.
-n, --console-level level
Set the level at which logging of messages is done to the console. The level is a level number or abbreviation of the level name.
For all supported levels see dmesg --help output.
For example, -n 1 or -n alert prevents all messages, except emergency (panic) messages, from appearing on the console. All levels
of messages are still written to /proc/kmsg, so syslogd(8) can still be used to control exactly where kernel messages appear. When
the -n option is used, dmesg will not print or clear the kernel ring buffer.
-P, --nopager
Do not pipe output into a pager, the pager is enabled for --human output.
-r, --raw
Print the raw message buffer, i.e., do not strip the log level prefixes.
Note that the real raw format depends on method how dmesg(1) reads kernel messages. The /dev/kmsg uses different format than sys-
log(2). For backward compatibility dmesg(1) returns data always in syslog(2) format. The real raw data from /dev/kmsg is possible
to read for example by command 'dd if=/dev/kmsg iflag=nonblock'.
-S, --syslog
Force to use syslog(2) kernel interface to read kernel messages. The default is to use /dev/kmsg rather than syslog(2) since kernel
3.5.0.
-s, --buffer-size size
Use a buffer of size to query the kernel ring buffer. This is 16392 by default. (The default kernel syslog buffer size was 4096 at
first, 8192 since 1.3.54, 16384 since 2.1.113.) If you have set the kernel buffer to be larger than the default then this option
can be used to view the entire buffer.
-T, --ctime
Print human readable timestamps. The timestamp could be inaccurate!
The time source used for the logs is not updated after system SUSPEND/RESUME.
-t, --notime
Do not print kernel's timestamps.
-u, --userspace
Print userspace messages.
-V, --version
Output version information and exit.
-w, --follow
Wait for new messages. This feature is supported on systems with readable /dev/kmsg only (since kernel 3.5.0).
-x, --decode
Decode facility and level (priority) number to human readable prefixes.
SEE ALSO
syslogd(8)
AUTHORS
Karel Zak <kzak@redhat.com>
Theodore Ts'o <tytso@athena.mit.edu>
AVAILABILITY
The dmesg command is part of the util-linux package and is available from Linux Kernel Archive <ftp://ftp.kernel.org/pub/linux/utils/util-
linux/>.
util-linux July 2012 DMESG(1)