Centos Rhel 7 How To Make Custom Script To Run Automatically During Boot As A Systemd Service
CentOS / RHEL 7 : How to create custom script to run automatically during boot as a systemd service
Reference: https://www.thegeekdiary.com/centos-rhel-7-how-to-make-custom-script-to-run-automatically-during-boot/
In RHEL 5 and 6, we were using automatic startup feature of RHEL through /etc/rc.d/init.d to run any script at system boot. Starting with RHEL 7 init is replaced by systemd and the prior method is now deprecated. There is another way in RHEL 7 to do the same.
Creating the custom script
-
Let us first create a sample custom script to be run at system boot automatically.
vi /var/tmp/test_script.sh#!/bin/bash echo "This is a sample script to test auto run during boot" > /var/tmp/script.out echo "The time the script run was --> `date`" >> /var/tmp/script.out -
Check and verify the file permission.
ls -lrt /usr/local/sbin/myscript.sh -
Add execute permission(if it’s not already set).
chmod +x /var/tmp/test_script.sh
Creating new systemd service unit
Create a new service unit file at /etc/systemd/system/sample.service with below content. The name of the service unit is user defined and can be any name of your choice.
`vi /etc/systemd/system/sample.service`
[Unit]
Description=Description for sample script goes here
After=network.target
[Service]
Type=simple
ExecStart=/var/tmp/test_script.sh
TimeoutStartSec=0
[Install]
WantedBy=default.target
After= : If the script needs any other system facilities (networking, etc), modify the [Unit] section to include appropriate After=, Wants=, or Requires= directives. Type= : Switch Type=simple for Type=idle in the [Service] section to delay execution of the script until all other jobs are dispatched WantedBy= : target to run the sample script in
Enable the systemd service unit
-
Reload the systemd process to consider newly created sample.service OR every time when sample.service gets modified.
systemctl daemon-reload -
Enable this service to start after reboot automatically.
systemctl enable sample.service -
Start the service.
systemctl start sample.service -
Reboot the host to verify whether the scripts are starting as expected during system boot.
systemctl reboot