export PATH="/usr/local/bin:/sbin:/usr/sbin:$PATH"
$HOME/code/run_cron.sh --run-all $@
</code></pre>
-Then I make my cronjob call: `6 * * * * $HOME/bin/build_farm.sh`
+Then I make my cronjob call: `6 * * * * $HOME/bin/build_farm.sh` .... but ...
20. My cronjob ran great for a couple weeks. Then another problem popped up running the cron job in that the test portion suddenly started failing with an odd error:
<pre><code>** runtest error: Failed to open /dev/tty: No such device or address</code></pre>
-This is not a sudo issue, this is because the cron daemon does not give a tty to the cronjob that it starts. To fix this, I used an old ssh trick to start my *build_farm.sh* script:
+This is not a sudo issue. This is happening because the cron daemon does not give a tty to the cronjob that it starts. (How the heck did it ever work?) The runtest script needs a tty in normal operation. To fix this, I used an old trick of ssh'ing to localhost with the *-tt* option to **force** allocation of a local tty when starting the *build_farm.sh* script. To do this, you need to configure the **farm** user to use key-based authentication with its own key. Assuming you have not generated an ssh key yet:
+<pre><code># Press Enter to use defaults for all questions in
+# next command, including no password
+ssh-keygen -t dsa
+cat .ssh/id_dsa.pub >> .ssh/authorized_keys
+# Do the following command once to accept the new host key
+ssh farm@localhost</code></pre>
+Once that works properly, then the cron command changes to:
<pre><code>6 * * * * ssh -tt farm@localhost $HOME/bin/build_farm.sh</code></pre>
## Multiple build clients on one machine