update-motd
update-motd(5) File Formats Manual update-motd(5)
NAME
update-motd - dynamic MOTD generation
SYNOPSIS
/etc/update-motd.d/*
DESCRIPTION
UNIX/Linux system adminstrators often communicate important information
to console and remote users by maintaining text in the file /etc/motd,
which is displayed by the pam_motd(8) module on interactive shell lo-
gins.
Traditionally, this file is static text, typically installed by the
distribution and only updated on release upgrades, or overwritten by
the local administrator with pertinent information.
Ubuntu introduced the update-motd framework, by which the motd(5) is
dynamically assembled from a collection of scripts at login.
Executable scripts in /etc/update-motd.d/* are executed by pam_motd(8)
as the root user at each login, and this information is concatenated in
/run/motd.dynamic. The order of script execution is determined by the
run-parts(8) --lsbsysinit option (basically alphabetical order, with a
few caveats).
On Ubuntu systems, /etc/motd is typically a symbolic link to
/run/motd.dynamic.
BEST PRACTICES
MOTD fragments must be scripts in /etc/update-motd.d, must be exe-
cutable, and must emit information on standard out.
Scripts should be named named NN-xxxxxx where NN is a two digit number
indicating their position in the MOTD, and xxxxxx is an appropriate
name for the script.
Scripts must not have filename extensions, per run-parts(8) --lsb-
sysinit instructions.
Packages should add scripts directly into /etc/update-motd.d, rather
than symlinks to other scripts, such that administrators can modify or
remove these scripts and upgrades will not wipe the local changes.
Consider using a simple shell script that simply calls exec on the ex-
ternal utility.
Long running operations (such as network calls) or resource intensive
scripts should cache output, and only update that output if it is
deemed expired. For instance:
/etc/update-motd.d/50-news
#!/bin/sh
out=/run/foo
script="w3m -dump http://news.google.com/"
if [ -f "$out" ]; then
# Output exists, print it
echo
cat "$out"
# See if it's expired, and background update
lastrun=$(stat -c %Y "$out") || lastrun=0
expiration=$(expr $lastrun + 86400)
if [ $(date +%s) -ge $expiration ]; then
$script > "$out" &
fi
else
# No cache at all, so update in the background
$script > "$out" &
fi
Scripts should emit a blank line before output, and end with a newline
character. For instance:
/etc/update-motd/05-lsb-release
#!/bin/sh
echo
lsb-release -a
FILES
/etc/motd, /run/motd.dynamic, /etc/update-motd.d
SEE ALSO
motd(5), pam_motd(8), run-parts(8)
AUTHOR
This manpage and the update-motd framework was written by Dustin Kirk-
land <kirkland@canonical.com> for Ubuntu systems (but may be used by
others). Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU General Public License, Version 3
published by the Free Software Foundation.
On Debian systems, the complete text of the GNU General Public License
can be found in /usr/share/common-licenses/GPL.
update-motd 13 April 2010 update-motd(5)
Man Pages Copyright Respective Owners. Site Copyright (C) 1994 - 2024
Hurricane Electric.
All Rights Reserved.