---
name: "proofd"
section: "1"
platform: "linux"
package: "root-system-proofd"
version: "5.34.19+dfsg-1.2"
release: "Debian 8 (Jessie)"
platforms: ["linux"]
url: "https://new.carta.tech/proofd"
---

# proofd(1)

PROOF (The Parallel ROOT Facility)

## NAME

proofd - PROOF (The Parallel ROOT Facility)

## DESCRIPTION

Using **PROOF** *(The P*arallel *ROO*T *F*acility) one can analyze trees in parallel on a cluster of computers. The **PROOF** system consists of the [*proofd*(1)](/proofd/1.md) from-end program which is started via [*inetd*(8)](/inetd/8.md).

*proofd* takes care of user authentication and overlays itself then with the desired version of the [*proofserv*(1)](/proofserv/1.md) executable.

The [*proofserv*(1)](/proofserv/1.md) is a basically the same as the **ROOT** interactive module [*root*(1)](/root/1.md), except that it reads its commands from a socket instead of from the terminal.

Since it is a remote server it will not do graphics and therefore is not linked with any graphics libraries (Motif, X11, etc.).

## SETTING UP PROOF

Since you need to handle sensitive system files, you need to have root (the user, not the program!) privileges. Also, it's recommended that you read the appropriate [*man*(1)](/man/1.md) pages first. These are [*inetd*(8)](/inetd/8.md) (the internet daemon), [*sysklogd*(8)](/sysklogd/8.md) and [*syslog*(3)](/syslog/3.md) (the system logger daemon),  and [*init*(8)](/init/8.md) (the SYSV process control initializer).

In other words:

*Be very VERY carefull when installing **proofd***

There, I said it. And ofcourse, no warrenties what so ever.

- 1

  Make sure every node has **ROOT** installed. We'll assume you installed the **ROOT** applications in \<*bindir*\> (e.g. */usr/bin*) and the **PROOF** configuration files in  files in *\<proofdir\>/etc* **(e.g.** */usr/share/root/etc***).**

- **2**

  **The TCP port 1094 was allocated by IANA**, ( *www.iana.org* ⟨Iwww.iana.org⟩ ), to **rootd**, so add to */etc/services* the lines:

  ```
    proofd  1093/tcp
    rootd   1094/tcp
  ```

- 3

  On each node, add to */etc/inetd.conf* the lines:

  ```
    proofd stream tcp nowait root <bindir>/proofd proofd <proofdir>/proof
    rootd stream tcp nowait root <bindir>/rootd rootd -i
  ```

  You can substitute the \<*proofdir*\> with any directory that holds your **PROOF** configuration, for example */etc/root/proof*. However, it should be shared among all nodes in the cluster.

- 4

  Restart **inetd** or force it to re-read the config file:

  ```
    kill -1 <inetd pid>
  ```

  If you use **SYSV** [*init*(8)](/init/8.md) scripts, you can probaly just do

  ```
    /etc/init.d/inetd restart
  ```

  or whatever is appropriate for your system.

- 5

  On the master node, add to */etc/syslog.conf*  the line:

  ```
      local5,local6.debug     <proofdir>/log/proof.log
  ```

  and all slave nodes:

  ```
      local5,local6.debug     @<master hostname>
  ```

  where \<*master hostname*\> is domain name of the master node. All PROOF syslog messages will be collected on the master node. Just make one node in the cluster the master, all others are slaves.

- 6

  On all nodes, change the below lines in */etc/syslog.conf*,

  ```
      *.info;mail.none;news.none;authpriv.none  /var/log/messages
  ```

  to:

  ```
      *.info;local5,local6,mail.none;news.none;authpriv.none  /var/log/messages
  ```

- 7

  Create an empty \<*proofdir*\>/log/proof.log:

  ```
      echo "" > <proofdir>/log/proof.log
  ```

- 8

  Restart syslogd or force it to re-read the config file:

  ```
    kill -1 <syslogd pid>.
  ```

  If you use **SYSV** [*init*(8)](/init/8.md) scripts, you can probaly just do

  ```
    /etc/init.d/sysklogd restart
  ```

  or whatever is appropriate for your system.

- 9

  Edit \<*proofdir*\>*/etc/proof.conf* to reflect your cluster configuration. See the example *proof.conf* file for more information.

If you installed **ROOT** using some precompiled package (for example a **Redhat Linux** or a **Debian GNU/Linux** package), steps 2 to 4 may already be done for you.

If you're running **Linux**, Steps 5 to 7 can be somewhat automated using the script *proof-facility* in \<*proofdir*\> of your distribution. This script uses *syslog-facility*(1), from the **Linux** [*syslog*(1)](/syslog/1.md) distribution, and may run on other platforms as well - but no warrenties mind you!

Step 9 is completely up to the user.

## EXAMPLE

That's it. To test PROOF try the following:

```
   root [1] gROOT->Proof("<master hostname>")
   root [2] gPROOF->Print()
   <shows information on the master and all active slave servers>
   root [3] .q
```

## FILES

- \<*proofdir***\>**

  **The location of your PROOF** *data. In binary packages, like for* **Redhat Linux***I or* **Debian GNU/Linux**, this will probably be */usr/share/root/proof***. If you got a binary** [*tar*(1)](/tar/1.md)-ball from the **ROOT** website, or a build it yourself without the static paths option, then this directory could be ROOTSYS/proof. However, you may set it to something else when starting your server.

- \<*proofdir***\>/etc**

  This directory holds all the configuration files for your cluster(s).

- \<*proofdir***\>/etc/\<cluster\>.conf**

  This is the cluster named \<*cluster*\> configuration file. See  \<*proofdir***\>/etc/\<cluster\>.conf.sample** for an example.

- \<*proofdir***\>/etc/motd**

  This is Message-Of-The-Day file. See \<*proofdir***\>/etc/motd.sample** for an example.

- \<*proofdir***\>/etc/noproof**

  If this file is present, all **PROOF** services will be diabled. See \<*proofdir***\>/etc/noproof.sample** for an example.

- \<*proofdir***\>/etc/proof.conf**

  This is the  **PROOF** configuration file. See  \<*proofdir***\>/etc/proof.conf.sample** for an example.

- **~/.rootnetrc.conf**

  Configuration file for network access. Here you specify login names and pass word, so it **MUST** *be read/write-able only by the user.*  *See \<proofdir***\>/etc/rootnetrc.conf.sample** for an example.

- \<*proofdir***\>/log**

  This directory holds the log files from the master and slaves.  \<*proofdir***\>/log/proof.log** *Syslog*(1) log file for **PROOF**.

## SEE ALSO

[*proofserv*(1)](/proofserv/1.md) , [*root*(1)](/root/1.md) , [*rootd*(1)](/rootd/1.md)

More information can be found at the **ROOT** website: *http://root.cern.ch* ⟨http://root.cern.ch⟩

## ORIGINAL AUTHORS

**The ROOT team (see web page above):**

**Rene Brun** and **Fons Rademakers**

## COPYRIGHT

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA

## AUTHOR

This manual page was written by Christian Holm Christensen \<cholm@nbi.dk\>, for the Debian GNU/Linux system (but may be used by others).
