Sarà la varietà dei sistemi operativi della famiglia GNU/Linux che non permette a IBM di fornire nell'installazione di Domino per Linux una qualche procedura wizard per semplificare l'aggiunta di Domino come servizio al sistema operativo, sta di fatto che bisogna arrangiarsi.

Prendo spunto dal già ottimo script di Ivano Dapino, che mi sono permesso di rivedere principalmente per due motivi:
  • il comando stop non funzionava perfettamente, il change directory fatto da root è inutile se poi server -q viene dato in switch user (a meno che la home directory dell'utente con cui gira domino non sia /local/notesdata, che chiaramente non è il mio caso altrimenti non mi sarei accorto della cosa);
  • ipotizzare 5 secondi per lo spegnimento del server è un po' ottimistico, soprattutto sulla R8 dove basta qualche giorno di esecuzione e i classici servizi SMTP, IMAP e HTTP per sfiorare (o più spesso superare) il minuto.
Il primo punto è facilmente risolvibile cambiando directory prima di lanciare il server.

Per il secondo mi sono appoggiato alla pidof per ottenere il process id di server: finché pidof non ritorna "" (blank) vuol dire che il server è ancora in esecuzione/shutdown.

Questo è quello che è uscito:
#!/bin/sh
#
# chkconfig: 345 95 5
# description: questo script è usato per attivare il server Domino come processo in background
#
# Usare /etc/init.d/domino start|stop|status|restart

# Questo script prende spunto dallo script originale di IBM, con alcune personalizzazioni
# le variabili descritte di seguito devono essere impostate in base all'installazione dell'ambiente.

# DOM_HOME è la variabile che indica allo script dove è situata la notesdata
DOM_HOME=/local/notesdata

# DOM_USER è l'account Linux usato per far girare il server Domino
DOM_USER=domino

# DOM_PROG è la directory dove sono situati gli eseguibili di Domino
DOM_PROG=/opt/ibm/lotus/bin

# DOM_SHUTDOWN è il tempo massimo consentito per la chiusura del server Domino (secondi)
DOM_SHUTDOWN=300

# Source function library
. /etc/init.d/functions

# Set the prog variable for the status line of the code
prog=$DOM_PROG/server

# Does the lock file exist?
config () {
	if [ -f $DOM_HOME/.jsc_lock ]; then
		rm -f $DOM_HOME/.jsc_lock
	fi
}

# Start del server
start() {
	config
	su - $DOM_USER -c "cd $DOM_HOME && $DOM_PROG/server > /dev/null 2>&1 &"
	sleep 5
	return 0
}

# Stop del server
stop() {
	su - $DOM_USER -c "cd $DOM_HOME && $DOM_PROG/server -q"
	sec=0
	pid=$(__pids_pidof $DOM_PROG/server)
	while [ ${#pid} -gt 0 ] && [ $sec -le $DOM_SHUTDOWN ]
	do
		sleep 10
		sec=$[$sec+10]
		pid=$(__pids_pidof $DOM_PROG/server)
	done
	if [ $sec -gt $DOM_SHUTDOWN ]
	then
		echo -n "Warning! Operation did not complete in a reasonable amount of time."
	fi
	return 0
}

# Restart del server
restart() {
	stop
	start
	return 0
}

case "$1" in
start)
	echo -n "Starting Domino server: "
	start
	echo ''
	;;
stop)
	echo -n "Stopping Domino server: "
	stop
	echo ''
	;;
restart)
	echo -n "Restarting Domino server: "
	restart
	echo ''
	;;
status)
	status $prog
	;;
*)
	echo "Usage: domino {start|stop|status|restart}"
	exit 1
esac

exit $?
Per la cronaca, su CentOS 5.1 e Domino 8.0.2.