To create new wiki account, please join us on #znc at Libera.Chat and ask admins to create a wiki account for you. You can say thanks to spambots for this inconvenience.
Running ZNC as a system daemon: Difference between revisions
Jump to navigation
Jump to search
>JayAdams0x1 Simplified and tried to clarify `adduser`. |
>JayAdams0x1 Switched the init.d script to be the one from CentOS (cross platform instead of Debian specific). |
||
Line 9: | Line 9: | ||
* Install an init file: | * Install an init file: | ||
# create a file <code>/etc/init.d/znc</code> with the following content: | # create a file <code>/etc/init.d/znc</code> with the following content: | ||
#! /bin/sh | #!/bin/sh | ||
# | # | ||
# | # znc - Advanced IRC Bouncer INIT script for Fedora # | ||
# chkconfig: 35 99 14 | |||
# description: An Advanced IRC bouncer INIT script for | |||
# | # Source function library. | ||
# | . /etc/rc.d/init.d/functions | ||
# | exec=/usr/bin/znc | ||
prog=znc | |||
config=/var/lib/znc | |||
runas=znc | |||
lockfile=/var/lock/subsys/$prog | |||
# | start() { | ||
[ -x $exec ] || exit 5 | |||
echo -n $"Starting $prog: " | |||
# if not running, start it up here, usually something like "daemon $exec" | |||
daemon --user $runas "$exec -d $config >/dev/null 2>&1" | |||
# If you're reckless with your system, comment the line above and | |||
# uncomment this one below... I just don't get it why | |||
# daemon "$exec -r -d $config >/dev/null 2>&1" | |||
retval=$? | |||
echo | |||
[ $retval -eq 0 ] && touch $lockfile | |||
return $retval | |||
} | |||
# | stop() { | ||
echo -n $"Stopping $prog: " | |||
# stop it here, often "killproc $prog" | |||
killproc $prog -TERM | |||
retval=$? | |||
echo | |||
[ $retval -eq 0 ] && rm -f $lockfile | |||
return $retval | |||
} | |||
# | reload() { | ||
echo -n $"Reloading $prog: " | |||
# stop it here, often "killproc $prog" | |||
killproc $prog -HUP | |||
retval=$? | |||
echo | |||
} | |||
restart() { | |||
stop | |||
start | |||
start | |||
} | } | ||
rh_status() { | |||
# run checks to determine if the service is running or use generic status | |||
status $prog | |||
# | |||
} | } | ||
rh_status_q() { | |||
rh_status >/dev/null 2>&1 | |||
} | } | ||
case "$1" in | case "$1" in | ||
start) | |||
rh_status_q && exit 0 | |||
$1 | |||
;; | |||
stop) | |||
rh_status_q || exit 0 | |||
$1 | |||
;; | |||
restart) | |||
$1 | |||
;; | |||
reload) | |||
rh_status_q || exit 7 | |||
$1 | |||
;; | |||
status) | |||
rh_status | |||
;; | ;; | ||
condrestart|try-restart) | |||
rh_status_q || exit 0 | |||
restart | |||
;; | ;; | ||
*) | |||
echo $"Usage: $0 {start|stop|status|reload|restart|condrestart|try-restart}" | |||
exit 2 | |||
esac | esac | ||
exit $? | |||
# Give the right permissions to this file: | # Give the right permissions to this file: | ||
chmod 755 /etc/init.d/znc | chmod 755 /etc/init.d/znc |
Revision as of 16:18, 2 July 2014
Note: if you just want to run ZNC automatically, when server is turned on, look here instead.
To have ZNC run at boot time as a system daemon we will create a user and group to run ZNC from a configuration we created and then called at each time the system boots. All the commands are expected to run as an administrator.
- Create a new system user with accompanying group and a shell that cannot be used to login with:
sudo adduser --system --shell /sbin/nologin --comment "Account to run ZNC daemon" --user-group znc
- Make the configuration we will run at startup:
sudo -u znc /usr/bin/znc --datadir=/var/lib/znc --makeconf
- Install an init file:
- create a file
/etc/init.d/znc
with the following content:
#!/bin/sh # # znc - Advanced IRC Bouncer INIT script for Fedora # # chkconfig: 35 99 14 # description: An Advanced IRC bouncer INIT script for # Source function library. . /etc/rc.d/init.d/functions exec=/usr/bin/znc prog=znc config=/var/lib/znc runas=znc lockfile=/var/lock/subsys/$prog start() { [ -x $exec ] || exit 5 echo -n $"Starting $prog: " # if not running, start it up here, usually something like "daemon $exec" daemon --user $runas "$exec -d $config >/dev/null 2>&1" # If you're reckless with your system, comment the line above and # uncomment this one below... I just don't get it why # daemon "$exec -r -d $config >/dev/null 2>&1" retval=$? echo [ $retval -eq 0 ] && touch $lockfile return $retval } stop() { echo -n $"Stopping $prog: " # stop it here, often "killproc $prog" killproc $prog -TERM retval=$? echo [ $retval -eq 0 ] && rm -f $lockfile return $retval } reload() { echo -n $"Reloading $prog: " # stop it here, often "killproc $prog" killproc $prog -HUP retval=$? echo } restart() { stop start } rh_status() { # run checks to determine if the service is running or use generic status status $prog } rh_status_q() { rh_status >/dev/null 2>&1 } case "$1" in start) rh_status_q && exit 0 $1 ;; stop) rh_status_q || exit 0 $1 ;; restart) $1 ;; reload) rh_status_q || exit 7 $1 ;; status) rh_status ;; condrestart|try-restart) rh_status_q || exit 0 restart ;; *) echo $"Usage: $0 {start|stop|status|reload|restart|condrestart|try-restart}" exit 2 esac exit $?
- Give the right permissions to this file:
chmod 755 /etc/init.d/znc
- Execute:
update-rc.d znc defaults
Now that all the pieces are in place you can now start the service yourself or restart the computer for the daemon to take its place.
- Start the service:
service znc start
- Verify that the service is running:
service znc status