From 10e29427c11484cd807a88b1aa70add892888898 Mon Sep 17 00:00:00 2001 From: Mikaela Suomalainen Date: Fri, 20 Feb 2015 18:04:08 +0200 Subject: [PATCH] use: make supybot-botchk more general purpouse and add systemd service. Closes #69 --- use/supybot-botchk.rst | 59 ++++++++++++++++++++++++++++++++++++++---- 1 file changed, 54 insertions(+), 5 deletions(-) diff --git a/use/supybot-botchk.rst b/use/supybot-botchk.rst index 5fb375b..9b204c7 100644 --- a/use/supybot-botchk.rst +++ b/use/supybot-botchk.rst @@ -1,18 +1,26 @@ .. _supybot-botchk: -############## +################################ +Restarting the bot automatically +################################ + +This page documents the different ways to automatically restart your bot +in case of crash or system reboot or anything that can make the bot quit. + +Note that you only need to use one. + supybot-botchk -############## +============== supybot-botchk is a script that comes with Supybot which restarts the bot if it quits or system reboots or anything that causes the bot to quit. It's placed to crontab so cron will run it with scheduled intervals. How to use it? -============== +-------------- Configuring the bot -------------------- +^^^^^^^^^^^^^^^^^^^ Start by telling your bot to write a pidfile somewhere where it can write and restart the bot. For example:: @@ -23,7 +31,7 @@ where is replaced with the system username and is replaced with the name of the bot. crontab -------- +^^^^^^^ After the pidfile is configured, you can modify crontab. First you should copy the output of:: @@ -71,3 +79,44 @@ If you are wondering what ``*/5 * * * *`` means, it simply means "run this every five minutes every day". The 5 can be replaced with any other number and there are also ``@hourly`` etc. which can be used on it's place, but you most likely won't want to wait hour or more if your bot crashes. + +systemd service +=============== + +You need root access as no one has got this to work as user service yet. +You must also use systemd as your init. + +Create a new file ``/etc/systemd/system/.service`` with the +following content replacing things were suitable:: + + [Unit] + Description=Supybot + After=network.target + + [Service] + Environment="PATH=/usr/local/bin:/usr/local/sbin:/usr/local/games:/usr/bin:/usr/sbin:/usr/games:/bin:/sbin:/bin:/opt/local/bin:/opt/local/sbin:/opt/local/games TZ=UTC" + Type=forking + ExecStart=/usr/local/bin/supybot /home/bot/botname/botname.conf --daemon + ExecReload=/bin/kill -HUP $MAINPID + Restart=always + User=BOTUSERNAME + + [Install] + WantedBy=multi-user.target + +Now you should run ``systemctl daemon-reload`` to make systemd aware +of changed files and ``systemctl enable .service`` to make the +bot start on boot etc. and ``systemctl start .service`` to start +the bot. + +Remember to check the ``Ènvironment`` line. You can get your PATH with +``printf 'PATH=%s\n' "$PATH"``. + +Some commands +------------- + +* autostart on boot: ``systemctl enable .service`` +* disable autostart on boot: ``systemctl disable .service`` +* start the bot: ``systemctl start .service`` +* stop the bot: ``systemctl stop .service`` +* reload config files: ``systemctl reload .service``