update-motd(5) File Formats Manual update-motd(5)
update-motd - dynamic MOTD generation
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
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
On Ubuntu systems, /etc/motd is typically a symbolic link to
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-
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
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:
script="w3m -dump http://news.google.com/"
if [ -f "$out" ]; then
# Output exists, print it
# 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" &
# No cache at all, so update in the background
$script > "$out" &
Scripts should emit a blank line before output, and end with a newline
character. For instance:
/etc/motd, /run/motd.dynamic, /etc/update-motd.d
motd(5), pam_motd(8), run-parts(8)
This manpage and the update-motd framework was written by Dustin Kirk-
land <email@example.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 - 2022
All Rights Reserved.