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