Run bash script on boot time on centos
Introduction
Automating tasks at startup is essential for server administration, ensuring services and scripts execute without manual intervention. CentOS, a popular Linux distribution, provides multiple ways to run bash scripts on boot time. This guide covers various approaches, their use cases, and step-by-step implementations.
Methods to Run a Bash Script on Boot Time on CentOS
1. Using crontab with @reboot
Cron jobs are a powerful way to schedule tasks. The @reboot
directive in crontab
allows executing scripts upon system startup.
Steps:
Open the crontab editor:
crontab -e
Add the following line:
@reboot /path/to/your/script.sh
Save and exit.
Ensure the script has executable permissions:
chmod +x /path/to/your/script.sh
Pros: Simple and effective. Cons: Requires crontab configuration and user-specific settings.
2. Using systemd service (Recommended for CentOS 7+)
Systemd is a modern service manager that provides better control over startup scripts.
Steps:
Create a new systemd service file:
sudo nano /etc/systemd/system/myscript.service
Add the following content:
[Unit] Description=My Startup Script After=network.target [Service] ExecStart=/path/to/your/script.sh Restart=always User=root [Install] WantedBy=multi-user.target
Save and exit.
Reload systemd and enable the service:
sudo systemctl daemon-reload sudo systemctl enable myscript.service sudo systemctl start myscript.service
Pros: More reliable and manageable. Cons: Requires systemd knowledge.
3. Using /etc/rc.local (Deprecated in newer CentOS versions)
Older CentOS versions allow scripts to run via /etc/rc.local
.
Steps:
Open the rc.local file:
sudo nano /etc/rc.d/rc.local
Add the script execution command before
exit 0
:/path/to/your/script.sh &
Grant execution permission:
sudo chmod +x /etc/rc.d/rc.local
Pros: Quick setup. Cons: May not work in CentOS 7+ without enabling rc.local manually.
Example: Running a Startup Script to Log Boot Time
Here’s an example of a script that logs boot timestamps:
#!/bin/bash
echo "System booted at: $(date)" >> /var/log/boot_time.log
Implementing this with systemd:
[Unit]
Description=Log Boot Time
After=network.target
[Service]
ExecStart=/bin/bash -c 'echo "System booted at: $(date)" >> /var/log/boot_time.log'
[Install]
WantedBy=multi-user.target
Enable the service:
sudo systemctl daemon-reload
sudo systemctl enable bootlog.service
sudo systemctl start bootlog.service
FAQ Section
1. Which method should I use?
For modern systems (CentOS 7+), use systemd.
For legacy systems,
rc.local
orcrontab @reboot
can work.
2. Why is my script not running on boot?
Ensure execution permissions (
chmod +x script.sh
).Check logs:
journalctl -xe
or/var/log/syslog
.Verify the script path and correct syntax.
3. How can I check if my script ran?
Use
systemctl status myscript.service
for systemd.Redirect script output to a log file.
External Resources
Conclusion
Running bash scripts on boot time in CentOS is crucial for automating tasks. Depending on your CentOS version and requirements, you can use crontab @reboot
, systemd
, or rc.local
. The systemd
method is the most robust and recommended for newer systems.
Following this guide, you should be able to set up startup scripts effectively, improving efficiency and automation on your CentOS system.Thank you for reading the huuphan.com page!
Comments
Post a Comment