Run Irssi in the boot as daemon

After the Irssi basic configuration

  • Check your runlevel:

runlevel

  • For my runlevel 2, I'll create this file:

sudo nano /etc/init.d/irssi
With this content:
`#!/bin/bash

BEGIN INIT INFO

Provides:          irssid

Required-Start:    $network

Required-Stop:     $network

Default-Start:     2 3 4 5

Default-Stop:      0 1 6

Short-Description: Start irssi daemon within screen session at boot time

Description:       This init script will start an irssi session under screen using the settings provided in /etc/irssid.conf

END INIT INFO

Include the LSB library functions

. /lib/lsb/init-functions

Setup static variables

configFile=’/etc/irssid.conf’
daemonExec=’/usr/bin/screen’
daemonArgs=’-D -m’
daemonName="$(basename “$daemonExec”)”
pidFile=’/home/your_user/.irssi/irssid.pid’

Checks if the environment is capable of running the script (such as

availability of programs etc).

Return: 0 if the environmnt is properly setup for execution of init script, 1

#         if not all conditions have been met.

function checkEnvironment() {
    # Verify that the necessary binaries are available for execution.
    local binaries=(irssi screen)

    for bin in “${binaries[@]}"; do
        if ! which “$bin” > /dev/null; then
            log_failure_msg “Binary ‘$bin’ is not available. Please install \
package containing it.”
            exit 5
        fi
    done
}

Checks if the configuration files are available and properly setup.

Return: 0 if irssid if properly configured, 1 otherwise.

function checkConfig() {
    # Make sure the configuration file has been created
    if ! [[ -f $configFile ]]; then
        log_failure_msg “Please populate the configuration file ‘$configFile’ \
before running.”
        exit 6
    fi

    # Make sure the required options have been set
    local reqOptions=(user group session)
    for option in “${reqOptions[@]}"; do
        if ! grep -q -e “^[[:blank:]]*$option=” “$configFile”; then
            log_failure_msg “Mandatory option ‘$option’ was not specified in \
‘$configFile’”
            exit 6
        fi
    done
}

Loads the configuration file and performs any additional configuration steps.

function configure() {
    . “$configFile”
    daemonArgs="$daemonArgs -S $session irssi”
    [[ -n $args ]] && daemonArgs="$daemonArgs $args”
    daemonCommand="$daemonExec $daemonArgs”
}

Starts the daemon.

Return: LSB-compliant code.

function start() {
    start-stop-daemon –start –quiet –oknodo –pidfile “$pidFile” \
        –make-pidfile –chuid “$user:$group” –background \
        –exec “$daemonExec” – $daemonArgs
}

Stops the daemon.

Return: LSB-compliant code.

function stop() {
    start-stop-daemon –stop –quiet –oknodo –retry 30 –pidfile “$pidFile” \
        –chuid “$user:$group”
}

checkEnvironment
checkConfig
configure

case “$1” in
    start)
        log_daemon_msg “Starting daemon” “irssid”
        start && log_end_msg 0 || log_end_msg $?
        ;;
    stop)
        log_daemon_msg “Stopping daemon” “irssid”
        stop && log_end_msg 0 || log_end_msg $?
        ;;
    restart)
        log_daemon_msg “Restarting daemon” “irssid”
        stop
        start && log_end_msg 0 || log_end_msg $?
        ;;
    force-reload)
        log_daemon_msg “Restarting daemon” “irssid”
        stop
        start && log_end_msg 0 || log_end_msg $?
        ;;
    status)
        status_of_proc -p “$pidFile” “$daemonExec” screen && exit 0 || exit $?
        ;;
    *)
        echo “irssid (start|stop|restart|force-reload|status|help)”
        ;;
esac
`

  • Set as executable:

sudo chown root:root /etc/init.d/irssi sudo chmod 755 /etc/init.d/irssi

  • Create too this file:

sudo nano /etc/irssid.conf

With this content:
`#

Configuration file for irssid init script

Mandatory options:

user - Specify user for running irssi.

group - Specify group for running irssi.

session - Specify screen session name to be used for irssi.

Non-mandatory options:

args - Pass additional arguments to irssi.

user='your_user’
group='your_user’
session='irssi’
args=’–config /home/your_user/.irssi/config'`

  • Check the daemon:

/etc/init.d/irssi start ps -ef | grep irssi /etc/init.d/irssi stop ps -ef | grep irssi

  • Add to your system boot:

sudo update-rc.d irssi defaults