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

No comments:

Post a Comment