Show Custom Message to Users Before Linux Server Shutdown



In a multi-user Linux environment, it's crucial to notify users before shutting down or rebooting the server. This allows them to save their work, log out gracefully, and avoid data loss. Simply powering off the server without warning can lead to frustration and potential problems.

In this comprehensive tutorial, we will explore various methods for displaying custom messages to users before a Linux server shutdown, ensuring a smooth and professional shutdown process.

Why Notify Users Before Shutdown?

Notifying the users before a server shutdown is essential for several reasons ?

  • Preventing Data Loss ? Users might have unsaved work or ongoing processes that need to be completed before the shutdown.
  • Avoiding Frustration ? Unexpected shutdowns can disrupt user workflows and cause frustration.
  • Maintaining Professionalism ? Providing advance notice demonstrates good system administration practices and respect for users.
  • Scheduled Maintenance ? For planned maintenance, notifications allow users to prepare and schedule their work accordingly.

Methods for Displaying Shutdown Messages

Several methods can be used to notify users of an impending shutdown ?

Using shutdown with a Message

The shutdown command is the standard way to schedule a system shutdown or reboot. It allows you to specify a message that will be broadcast to all logged-in users.

sudo shutdown -h +5 "Server will be down for maintenance in 5 minutes. Please save your work and log out."

-h ? Halts the system (shutdown).

+5 ? Schedules the shutdown for 5 minutes from now.

"..." ? The message to be displayed to users.

You can also specify a specific time for the shutdown ?

sudo shutdown -r 20:00 "Server will reboot at 8 PM. Please save your work."

-r ? Reboots the system.

20:00 ? Specifies the shutdown time (8 PM).

Using wall to Send a Message to All Users

The wall command (write to all) sends a message to all logged-in users' terminals. You can use it in conjunction with other commands to create more complex notifications.

echo "Server will be down for maintenance in 10 minutes." | wall

This will display the message on all user terminals.

Using at for Scheduled Notifications

The at command schedules commands to be executed at a specific time. You can use it to schedule notifications before a planned shutdown.

echo "Server will be down for maintenance at 10:00 AM. Please save your work." | at 09:45

This will send the message at 9:45 AM.

Using a MOTD (Message of the Day)

You can update the MOTD file (/etc/motd) to display a message to users when they log in. However, this is not suitable for immediate shutdown notifications but rather for planned maintenance announcements.

sudo nano /etc/motd
# Add your message here

Using Systemd Timers (for Scheduled Shutdowns)

For regularly scheduled shutdowns, you can use systemd timers to automate the process, including notifications. This method is more complex but offers greater flexibility.

Example Systemd Timer and Service

Create a service file (/etc/systemd/system/shutdown-notification.service) ?

[Unit]
Description=Shutdown Notification Service

[Service]
Type=oneshot
ExecStart=/bin/bash -c "echo 'Server is shutting down now.' | wall"

Then Create a timer file (/etc/systemd/system/shutdown-notification.timer) ?

[Unit]
Description=Shutdown Notification Timer

[Timer]
OnCalendar=*-*-* 23:55:00 # Run every day at 11:55 PM
Unit=shutdown-notification.service

[Install]
WantedBy=timers.target

Now Enable and start the timer ?

sudo systemctl enable shutdown-notification.timer
sudo systemctl start shutdown-notification.timer

This example sends a notification every day at 11:55 PM. You would then schedule the actual shutdown using a separate timer or cron job.

Best Practices

Consider the following best practices before shutting down a Linux server ?

  • Provide sufficient warning ? Give users enough time to save their work and log out.
  • Use clear and concise messages ? Avoid technical jargon and clearly state the reason for the shutdown and the expected downtime.
  • Use consistent messaging ? Use the same message format for all shutdown notifications.
  • Schedule notifications for planned maintenance ? Use at or systemd timers for planned shutdowns.
  • Consider using multiple methods ? Combining shutdown with wall or a countdown script can provide more effective notification.
  • Avoid using killall -9 unless absolutely necessary ? This abruptly terminates processes and can lead to data loss. Always give processes a chance to shut down gracefully.

Example Comprehensive Shutdown Script

The following script provides a clear message with a countdown and then initiates the shutdown ?

#!/bin/bash

shutdown_time=10 # Shutdown in 10 minutes
shutdown_message="Server will be down for scheduled maintenance. Please save your work and log out."

for i in $(seq $shutdown_time -1 1); do
   message="$shutdown_message $i minute(s) remaining."
   echo "$message" | wall
   sleep 60
done

echo "Server is shutting down NOW." | wall
sudo shutdown -h now

Conclusion

Notifying the users before a Linux server shutdown is a crucial aspect of system administration. By using the methods outlined in this guide, you can ensure a smooth and professional shutdown process, minimizing disruptions and preventing data loss.

Whether you use simple shutdown messages or more complex scripts with countdowns, providing adequate notification demonstrates good practice and respect for your users.

Updated on: 2025-03-26T14:06:41+05:30

44 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements