我想知道 /etc/motd 是如何自动更新的(我使用的是 Ubuntu 10.04 服务器版)。我通过网络搜索找到了 update-motd 手册页,但该程序未安装在我的计算机上。但是,/etc/motd 文件会定期更新。我只是不知道如何更新以及更新频率。执行 时locate motd
,会列出以下文件:
/etc/motd
/etc/update-motd.d
/etc/update-motd.d/00-header
/etc/update-motd.d/10-help-text
/etc/update-motd.d/20-cpu-checker
/etc/update-motd.d/50-landscape-sysinfo
/etc/update-motd.d/90-updates-available
/etc/update-motd.d/91-release-upgrade
/etc/update-motd.d/98-reboot-required
/etc/update-motd.d/99-footer
/home/me/.cache/motd.legal-displayed
/lib/security/pam_motd.so
/usr/bin/motd+shell
/usr/lib/update-manager/release-upgrade-motd
/usr/lib/update-notifier/update-motd-cpu-checker
/usr/lib/update-notifier/update-motd-reboot-required
/usr/lib/update-notifier/update-motd-updates-available
/usr/share/base-files/motd.md5sums
/usr/share/man/man1/motd+shell.1.gz
/usr/share/man/man5/motd.5.gz
/usr/share/man/man5/motd.tail.5.gz
/usr/share/man/man5/update-motd.5.gz
/usr/share/man/man8/pam_motd.8.gz
/usr/share/ubuntu-serverguide/html/C/pam_motd.html
答案1
pam_motd
登录后会更新。更新动作手册页描述了这一点:
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
/var/run/motd. 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
/var/run/motd.
答案2
上面接受的答案是正确的,但不完整。我希望这能为原帖提供更多信息。
基本上,在全新安装中,motd 从三个地方生成:
- 脚本
/etc/update-motd.d/
- 编译后的二进制文件由
/etc/pam.d/login
- 文件
/etc/legal
那里的数字 3 指的是 motd 末尾的一段文本,其中包含“Ubuntu 绝对不提供任何保证...”,这就是文件/etc/legal
。但是,您不会在下面找到任何/etc/update-motd.d/
提到它的内容,文件中也没有出现“合法”一词/etc/pam.d/login
。它的包含已经变得模糊不清,我真的不知道它是如何进入那里的。我的意思是,我知道有一个,{$HOME}/.cache/motd.legal-displayed
但我也不知道它从哪里来的(目前)。
该/etc/pam.d/login
文件负责通知待处理的电子邮件,但这并不晦涩难懂。有一个很好的评论描述:
成功登录后打印用户邮箱的状态
...就在文件中。我认为从技术上讲,这实际上不是 motd 的一部分,但它会在登录时显示,如果你是新手,可能不会注意到这种细微的区别。
在全新安装的 14.04 中没有 /etc/motd
文件。如果您创建一个(或创建一个 motd.static 并将其符号链接到 motd),则该文件的内容将附加到脚本生成的文本中,update-motd.d
但内容/etc/legal
将停止显示。去想想吧。电子邮件通知仍然出现,因此这不会中断脚本,/etc/pam.d/login
所以我怀疑/etc/legal
是从那里拉进来的。它的来源对读者来说仍然是个谜。我注意到,当我删除链接/etc/motd
(或文件)时,法律免责声明不会立即恢复。这需要几分钟。我不想经常看到免责声明,所以我从该文件中删除了文本。
干杯。
答案3
稍微扩展一下戴维·库尔回答:
全新安装的 Ubuntu Server 14.04.1 LTS 显然不会安装 Landscape-common 或 Update-Notifier-common 软件包。因此,以下脚本未安装:
/etc/update-motd.d/50-landscape-sysinfo
/etc/update-motd.d/90-updates-available
因此,要获取从 12.04 LTS 迁移的服务器的所有 ssh 登录信息,必须手动安装上述软件包:
sudo apt-get install landscape-common update-notifier-common