5

On Ubuntu 14.04 I have not been able to get the Bitcoin daemon to automatically restart. Rarely the daemon dies and it is important that it starts again without manual intervention. To get it to start automatically with Upstart I have followed the guide linked below. It starts with sudo start bitcoind as expected but the service does not restart if it fails.

Ubuntu Linux — How do I start bitcoind as a service to run automatically?

My conf file in /etc/init/ is as follows.

description "bitcoind"

start on filesystem
stop on runlevel [!2345]
oom score -500
expect fork
respawn
respawn limit 20 90 # 10 times in 60 seconds

script
user=bitcoinuser
home=/home/$user
cmd=/usr/bin/bitcoind
pidfile=$home/.bitcoin/bitcoind.pid
# Don't change anything below here unless you know what you're doing
[[ -e $pidfile && ! -d "/proc/$(cat $pidfile)" ]] && rm $pidfile
[[ -e $pidfile && "$(cat /proc/$(cat $pidfile)/cmdline)" != $cmd* ]] && rm $pidfile
exec start-stop-daemon --start -c $user --chdir $home --pidfile $pidfile --startas $cmd -b --nicelevel 15 -m
end script

If I run ps -aux | grep bitcoind to get the process ID and kill it the daemon does not restart as desired. I have followed the guide and cannot see what is wrong with the set up. As a side note sudo stop bitcoind does not actually stop it from running.

Any help on this would be appreciated.

6
  • I'm not that well versed in Linux myself, but you should be able to run Bitcoind with regular user rights. Why do you use sudo start bitcoind? My Bitcoin Node on a RaspberryPi had been crashing every once in a while from overload, so I had just put a command in a cron job that tries to start it every hour. If its already running, no problem. If it wasn't it is down no more than an hour.
    – Murch
    Commented Nov 13, 2015 at 13:40
  • Starting as a normal user I get the following error start: Rejected send message, 1 matched rules; type="method_call", sender=":1.13" (uid=1002 pid=5367 comm="start bitcoind ") interface="com.ubuntu.Upstart0_6.Job" member="Start" error name="(unset)" requested_reply="0" destination="com.ubuntu.Upstart" (uid=0 pid=1 comm="/sbin/init") Commented Nov 13, 2015 at 13:58
  • Sorry, I'm not familiar with the script you're using. I meant, I have installed Bitcoin with a regular account and then could start it using bitcoind, I didn't think that it would need to run with admin rights. But perhaps you need it because you are running it from another user account? Sorry that I'm not able to help, but I really don't know too much about Linux.
    – Murch
    Commented Nov 13, 2015 at 14:15
  • Looks like he is running bitcoind as a normal user (bitcoinuser), he only uses the start command as root to trigger the service to start. (I'm not familiar with the latest Ubuntu, the more common command in linux would be service bitcoind start ). Murch's crontab suggestion is probably easiest.
    – Jannes
    Commented Nov 13, 2015 at 14:26
  • I agree. This is not working for me and I've spent far too much time working on this when a simple cron job would work. So that is what I am going to do, thanks for the suggestion Murch. Commented Nov 13, 2015 at 16:11

2 Answers 2

1

I'm running a RaspberryPi Bitcoin node. Since I discovered that the node had sometimes crashed due to overload, I put an hourly starting command into crontab:

@hourly <completePath>/bitcoind -daemon -disablewallet

If bitcoind is already running, it fails to start due to not getting a lock on the data directory. Otherwise, the server will be restarted with at most one hour of downtime.

I'm sure there are more elegant solutions, but I didn't explore it much further as this worked for me.

0

Add this to your /etc/inittab:

bd:1234:respawn:sudo -u <USERNAME_TO_RUN_bitcoind> <DIRECTORY_CONTAINING_bitcoind>/bitcoind

Then run

telinit q

to rescan the inittab file.

Change everything in the <> in the above example to suite your case. Make sure the first two letters ("bd" for bitcoind in the above example) are unique; you can make them any two letters, as long as nothing else in the inittab uses them.

This will make it so bitcoind restarts immediately after it crashes.

cf. man inittab for more info.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.