Difference between revisions of "Systemd service file"
From Teknologisk videncenter
(Created page with "If i want a service daemon to log if my server is online every minute. The following procedure could be used: ==My service== <source lang=bash> #!/bin/bash # Filename: /usr/...") |
m (→Need to know commands) |
||
(22 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
If i want a service daemon to log if my server is online every minute. The following procedure could be used: | If i want a service daemon to log if my server is online every minute. The following procedure could be used: | ||
==My service== | ==My service== | ||
− | |||
− | |||
<source lang=bash> | <source lang=bash> | ||
#!/bin/bash | #!/bin/bash | ||
# Filename: /usr/local/sbin/mysserver-online.sh | # Filename: /usr/local/sbin/mysserver-online.sh | ||
− | # | + | # Owner: root:root |
− | # Permissions: | + | # Permissions: 755 |
+ | |||
IP="192.168.1.72" | IP="192.168.1.72" | ||
LOGFILE="/tmp/myserver.log" | LOGFILE="/tmp/myserver.log" | ||
+ | export LOGFILE | ||
+ | |||
+ | # Example: Bash catches(trap) exit signal and runs cleanup function (Not necessary) | ||
+ | # $LOGFILE used in trap routine - needs to be exported | ||
+ | cleanup() { | ||
+ | echo "$(date): Cleaning up" | tee -a $LOGFILE | ||
+ | } | ||
+ | trap 'cleanup' EXIT | ||
+ | |||
+ | |||
+ | |||
+ | echo "$(date): Starting service" | tee -a $LOGFILE | ||
while : | while : | ||
Line 15: | Line 26: | ||
if ping -c 1 $IP > /dev/null 2>&1 | if ping -c 1 $IP > /dev/null 2>&1 | ||
then | then | ||
− | echo "$(date) online" >> $LOGFILE | + | echo "$(date): online" >> $LOGFILE |
else | else | ||
− | echo "$(date) OFFLINE" >> $LOGFILE | + | echo "$(date): OFFLINE" >> $LOGFILE |
fi | fi | ||
sleep 60 | sleep 60 | ||
done | done | ||
</source> | </source> | ||
+ | |||
+ | ==My service-file== | ||
+ | <source lang=bash> | ||
+ | # Filename: /lib/systemd/system/mysserver-onlined.service | ||
+ | # Owner: root:root | ||
+ | # Permissions: 644 | ||
+ | [Unit] | ||
+ | Description=Test if my server is online | ||
+ | After=network.target | ||
+ | |||
+ | [Service] | ||
+ | ExecStart=/usr/local/sbin/mysserver-online.sh | ||
+ | Type=simple | ||
+ | Restart=always | ||
+ | |||
+ | |||
+ | [Install] | ||
+ | WantedBy=default.target | ||
+ | </source> | ||
+ | |||
+ | ==Enabling the service== | ||
+ | === Copy files to destination=== | ||
+ | |||
+ | Make sure your service and your service-file are in the right destination. | ||
+ | <source lang=bash> | ||
+ | sudo cp myserver-online.sh /usr/local/sbin | ||
+ | sudo chown root:root /usr/local/sbin/myserver-online.sh | ||
+ | sudo chmod 755 /usr/local/sbin/myserver-online.sh | ||
+ | |||
+ | sudo cp myserver-onlined.service /lib/systemd/system | ||
+ | sudo chown root:root /lib/systemd/system/myserver-onlined.service | ||
+ | sudo chmod 644 /lib/systemd/system/myserver-onlined.service | ||
+ | </source> | ||
+ | |||
+ | === Reload system file=== | ||
+ | systemd reloads and hopefully finds your new service-file | ||
+ | <source lang=bash> | ||
+ | sudo systemctl daemon-reload | ||
+ | </source> | ||
+ | === Verify files === | ||
+ | systemd-analyze checks the service-file for errors. (Correct errors if any - remember to reload system files) | ||
+ | <source lang=bash> | ||
+ | sudo systemd-analyze verify myserver-onlined.service | ||
+ | </source> | ||
+ | ==Enable service-file== | ||
+ | Enabling the service file makes it a part of '''systemd''' | ||
+ | If it is a service and should be running all the time - do '''shutdown -r now''' and check with '''systemctl status myserver-onlined''' that it is running | ||
+ | <source lang=bash> | ||
+ | sudo systemctl enable myserver-onlined.service | ||
+ | </source> | ||
+ | |||
+ | ==Need to know commands== | ||
+ | <source lang=bash> | ||
+ | # Check the service status | ||
+ | sudo systemctl status myserver-onlined | ||
+ | |||
+ | # Start the service manually | ||
+ | sudo systemctl start myserver-onlined | ||
+ | |||
+ | # Stop the service manually | ||
+ | sudo systemctl stop myserver-onlined | ||
+ | |||
+ | # Restart the service manually | ||
+ | sudo systemctl restart myserver-onlined | ||
+ | |||
+ | # If you make changes to the service file - reload | ||
+ | sudo systemctl daemon-reload | ||
+ | </source> | ||
+ | [[Category:Linux]] |
Latest revision as of 11:24, 17 April 2024
If i want a service daemon to log if my server is online every minute. The following procedure could be used:
Contents
My service
#!/bin/bash
# Filename: /usr/local/sbin/mysserver-online.sh
# Owner: root:root
# Permissions: 755
IP="192.168.1.72"
LOGFILE="/tmp/myserver.log"
export LOGFILE
# Example: Bash catches(trap) exit signal and runs cleanup function (Not necessary)
# $LOGFILE used in trap routine - needs to be exported
cleanup() {
echo "$(date): Cleaning up" | tee -a $LOGFILE
}
trap 'cleanup' EXIT
echo "$(date): Starting service" | tee -a $LOGFILE
while :
do
if ping -c 1 $IP > /dev/null 2>&1
then
echo "$(date): online" >> $LOGFILE
else
echo "$(date): OFFLINE" >> $LOGFILE
fi
sleep 60
done
My service-file
# Filename: /lib/systemd/system/mysserver-onlined.service
# Owner: root:root
# Permissions: 644
[Unit]
Description=Test if my server is online
After=network.target
[Service]
ExecStart=/usr/local/sbin/mysserver-online.sh
Type=simple
Restart=always
[Install]
WantedBy=default.target
Enabling the service
Copy files to destination
Make sure your service and your service-file are in the right destination.
sudo cp myserver-online.sh /usr/local/sbin
sudo chown root:root /usr/local/sbin/myserver-online.sh
sudo chmod 755 /usr/local/sbin/myserver-online.sh
sudo cp myserver-onlined.service /lib/systemd/system
sudo chown root:root /lib/systemd/system/myserver-onlined.service
sudo chmod 644 /lib/systemd/system/myserver-onlined.service
Reload system file
systemd reloads and hopefully finds your new service-file
sudo systemctl daemon-reload
Verify files
systemd-analyze checks the service-file for errors. (Correct errors if any - remember to reload system files)
sudo systemd-analyze verify myserver-onlined.service
Enable service-file
Enabling the service file makes it a part of systemd If it is a service and should be running all the time - do shutdown -r now and check with systemctl status myserver-onlined that it is running
sudo systemctl enable myserver-onlined.service
Need to know commands
# Check the service status
sudo systemctl status myserver-onlined
# Start the service manually
sudo systemctl start myserver-onlined
# Stop the service manually
sudo systemctl stop myserver-onlined
# Restart the service manually
sudo systemctl restart myserver-onlined
# If you make changes to the service file - reload
sudo systemctl daemon-reload