HOWTO
- Run taskforest all day with cron
- Allow a user to view the web site
- Start the web server
- Stop the web server
- Create a self-signed certificate with openssl
- Force a job to run NOW
- Temporarily prevent a job from running
This is the kind of line I have in my crontab:
02 00 * * * /a/b/taskforest --config_file=/b/c/taskforest.cfg
Please make sure you read the section entitled "Web Server Security" for important security considerations.
Having said that, : The userids and passwords are specified in the configuration file using the same format as Apache's .htpasswd files. You can see commented-out examples of this in the configuration file taskforestd.cfg. For your convenience, the TaskForest distribution includes a program called gen_passwd
that generates text that you can copy and paste into the config file:
gen_passwd foo bar
The above command will print out somthing that looks like the following;
foo:4poVZGiAlO1BY
This text can then be copied and pasted into the configuration file.
Make sure you stop the server and restart it after making any changes to the configuration file.
To start the web server, run the taskforestd program with the --config_file
and --start
options. For example:
taskforestd --config_file=taskforestd.cfg --stop
OR
taskforestdssl --config_file=taskforestd.cfg --stop
To stop the web server, run the taskforestd
program with the --config_file
and --stop
options. For example:
taskforestd --config_file=taskforestd.cfg --stop
OR
taskforestdssl --config_file=taskforestd.cfg --stop
This is what works for me (instructions found at http://www.modssl.org/docs/2.8/ssl_faq.html#ToC25 ).
1) Create a server key
openssl genrsa -des3 -out server.key.en 1024
2) Make a decrypted version of it
openssl rsa -in server.key.en -out server-key.pem
3) Create a CSR (Certificate Signing Request)
openssl req -new -key server-key.pem -out server.csr
4) Create a CA Private Key
openssl genrsa -des3 -out ca.key.en 1024
5) Create a decrypted version of it
openssl rsa -in ca.key.en -out ca.key
6) Create a 10-yr self-signed CA cert with the CA key
openssl req -new -x509 -days 3650 -key ca.key -out my-ca.pem
7) Sign the CSR
sign.sh server.csr
The sign.sh program can be found in the
pkg.contrib/ subdirectory of the mod_ssl
distribution. It is not clear whether or not I
can include that script in this distribution,
so for now at least, you'll have to use your
own copy. Make sure you specify the locations
of the files in the taskforestd configuration
file.
Let's say you have a job J4 that depends on 3 other jobs - J1, J2 and J3. Normally, that setup is fine, but today you really want the job to run now. You don't care whether J1, J2 and J3 run successfully or not, as far as J4 is concerned. What you need to do is release all the dependencies off J4. You also don't want to make a permanent change to the family file.
This means that regardless of what job dependencies or time dependencies J4 has, when you release all its dependencies, it will run the very next time TaskForest checks to see if there are any jobs that need to be run (determined by wait_time
). It's as if those dependencies never existed.
A release 'request' is only valid once - once J4 runs, the system has no 'memory' of the fact that J4's dependencies were released. It will not change the behavior of the rest of the family. If J5 depends on J4, then J5 will be ready to run, even if J1, J2 and J3 haven't run yet. To release all dependencies from a job, run the following command:
release --log_dir=l_d --job=Ff::Jj --family_dir=f_d
where l_d
is the log directory and Ff
is the family name and Jj
is the job name and f_d
is the family_directory. Dependencies on a job will only be released if the job is in the 'Waiting' state.
You can also use the "Release" button on the 'Status' or 'View Logs' page on the web site to release all dependencies off a job.
Remember: no changes are made to the Family file. So next time this family runs, J4 will still depend on J1, J2 and J3, just like it always did.
To temporarily prevent a job from running, you need to put it on hold. When you put a job on hold, it will not run even if all its dependencies are met. It will only be run after the hold is released. Even after the hold is released, its dependencies need to be met (or you need to force a run by releasing all dependencies). To hold a job, enter the following command: