Recent Posts

banner image
banner image

Init Script vs Systemd Script: Managing System Services in Linux:


An init script is a shell script that starts, stops, and controls the behavior of system services. It is used in older versions of Linux distributions like CentOS/RHEL 6 and earlier versions. The init script is usually stored in the /etc/init.d/ directory.

A systemd script, on the other hand, is a more modern way of managing system services in newer Linux distributions like CentOS/RHEL 7 and later versions. Systemd is a system and service manager for Linux operating systems that provides better dependency tracking, parallelization of tasks, and centralized management of system services. A systemd script is usually stored in the /etc/systemd/system/ directory.

Here's an example of an init script and a systemd script:

Init Script,

#!/bin/bash

# chkconfig: 2345 20 80

# description: Start/Stop Script for Service

case "$1" in

    start)

        echo "Starting my-service"

        # Start command here

        ;;

    stop)

        echo "Stopping my-service"

        # Stop command here

        ;;

    restart)

        $0 stop

        $0 start

        ;;

    *)

        echo "Usage: $0 {start|stop|restart}"

        exit 1

        ;;

esac

exit 0

Notes: 

  • The chkconfig line specifies the runlevels at which this service should start and stop, as well as the priority levels for starting and stopping.
  • The description line provides a brief description of what the script does. This is typically used by system administrators when managing services on a server.


SystemD Script,

[Unit]

Description=My Service

After=network.target

[Service]

Type=simple

ExecStart=/usr/bin/my-service

Restart=always

User=nobody

[Install]


WantedBy=multi-user.target

Notes:

  • [Unit]:
            Description: A short description of the service.
            After: The service should start after the network is up.
  • [Service]:
            Type: The process type. In this case, it's "simple", which means that the service is                        expected to stay in the foreground and not fork any child processes.
            ExecStart: The command that systemd will run to start the service.
            Restart: How the service should be restarted if it exits unexpectedly.
            User: The user account that the service process should run as.
  • [Install]:
        WantedBy: Which target the service should be enabled in. In this case, it's the multi-                   user.target, which is the default target for most systems.

Here are some pros and cons of each:

Init:

Pros:

- Simple and easy to use.

- Efficient and lightweight.

- Flexible, allowing users to customize the boot process.

Cons:

- Limited functionality compared to `systemd`.

- May not support all hardware and software configurations.

- Can be difficult to troubleshoot if problems occur.

SystemD:

Pros:

- Offers more advanced features than `init`, such as parallelization and socket activation.

- Has better support for modern hardware and software.

- Provides extensive logging and debugging capabilities.

Cons:

- More complex and may have a steeper learning curve.

- Can be resource-intensive, especially on older or slower hardware.

- Some users prefer the simplicity and customization options of `init`.

As you can see, the systemd script is simpler and more concise than the init script. It specifies the service name, the program to be executed, and any required dependencies or configurations. Additionally, it supports features like automatic restarting, resource management, and logging.

#LinuxServices #SystemdScript #InitScript #ProcessManagement #ServiceControl #Runlevels #BootProcess #SystemAdministration #SysVinit #LinuxCommands

Init Script vs Systemd Script: Managing System Services in Linux: Init Script vs Systemd Script: Managing System Services in Linux: Reviewed by ITAdmin on March 31, 2023 Rating: 5

No comments:

Powered by Blogger.