removed old files and added new dockerfile and conf

This commit is contained in:
Diego Lendoiro 2017-04-10 17:20:36 +02:00
parent 3115a349da
commit f8e56e68e1
228 changed files with 456 additions and 81063 deletions

View File

@ -1,102 +1,74 @@
FROM debian:jessie FROM alpine:latest
# mysql before installation configuration MAINTAINER diego@passbolt.com
RUN export DEBIAN_FRONTEND="noninteractive" \
&& echo "mysql-server mysql-server/root_password password root" | debconf-set-selections \
&& echo "mysql-server mysql-server/root_password_again password root" | debconf-set-selections
# debian packages installation ENV PASSBOLT_VERSION 1.4.0
RUN apt-get clean && apt-get update && apt-get install -y \ ENV PASSBOLT_URL https://github.com/passbolt/passbolt_api/archive/v${PASSBOLT_VERSION}.tar.gz
# persistent &runtime deps. \
ca-certificates curl libpcre3 librecode0 libsqlite3-0 libxml2 --no-install-recommends \
# unix tools \
nano wget openssh-client cron sendmail \
# versioning & package manager \
git npm \
# phpize dependencies \
autoconf file g++ gcc libc-dev make pkg-config re2c \
# persistance
redis-server mysql-server-5.5 \
# php \
php5-json php5-cli php5-common \
php5-curl php5-dev php5-gd php5-mcrypt \
php5-mysql php5-xdebug php5-xsl php5-intl \
# memchached \
memcached php5-memcached \
# apache \
apache2 apache2-utils libapache2-mod-php5 \
# gnupg dependency \
libgpgme11-dev \
# pear \
php-pear \
# Commented until the following bug is fixed : https://github.com/docker/hub-feedback/issues/556 \
#&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
# Configure the user www-data environment ARG BASE_PHP_DEPS="php5-curl \
RUN mkdir /home/www-data/ \ php5-common \
&& chown www-data:www-data /home/www-data/ \ php5-gd \
&& usermod -d /home/www-data www-data php5-intl \
php5-json \
php5-mcrypt \
php5-memcache \
php5-mysql \
php5-xsl \
php5-fpm \
php5-phar \
php5-xml \
php5-openssl \
php5-zlib \
php5-ctype \
php5-pdo \
php5-pdo_mysql \
php5-pear"
# Configure node and install grunt ARG PHP_GNUPG_DEPS="php5-dev \
# On debian they choose to rename node in nodejs, some tools try to access nodejs by using the commande noe. make \
RUN ln -s /usr/bin/nodejs /usr/bin/node \ gcc \
# install grunt g++ \
&& npm install -g grunt-cli libc-dev \
pkgconfig \
re2c \
gpgme-dev \
autoconf \
file"
# Apache2 SSL RUN apk update &&\
RUN mkdir /etc/apache2/ssl \ apk add $BASE_PHP_DEPS \
&& openssl req -x509 -nodes -days 365 -new -newkey rsa:2048 -subj "/C=US/ST=Denial/L=Goa/O=Dis/CN=www.passbolt.com" -keyout /etc/apache2/ssl/apache.key -out /etc/apache2/ssl/apache.crt \ bash \
&& chmod 600 /etc/apache2/ssl/* \ ca-certificates \
&& a2enmod ssl curl \
tar \
libpcre32 \
recode \
libxml2 \
gpgme \
gnupg1 \
mysql-client \
openssl \
nginx
# Install and configure gnupg RUN apk add $PHP_GNUPG_DEPS && \
RUN pecl install gnupg \ #https://bugs.alpinelinux.org/issues/5378
&& echo "extension=gnupg.so;" > /etc/php5/mods-available/gnupg.ini \ sed -i "s/ -n / /" $(which pecl) && \
&& ln -s /etc/php5/mods-available/gnupg.ini /etc/php5/apache2/conf.d/20-gnupg.ini \ pecl install gnupg && \
&& ln -s /etc/php5/mods-available/gnupg.ini /etc/php5/cli/conf.d/20-gnupg.ini \ echo "extension=gnupg.so" > /etc/php5/conf.d/gnupg.ini && \
# configure the user www-data env to work with gnupg \ apk del $PHP_GNUPG_DEPS
&& mkdir /home/www-data/.gnupg \
&& chown www-data:www-data /home/www-data/.gnupg \
&& chmod 0777 /home/www-data/.gnupg
# Configure apache RUN curl -sS https://getcomposer.org/installer | php && \
ADD /server-conf/apache/passbolt.conf /etc/apache2/sites-available/passbolt.conf mv composer.phar /usr/local/bin/composer
ADD /server-conf/apache/000-default.conf /etc/apache2/sites-available/000-default.conf
RUN rm -f /etc/apache2/sites-enabled/* \ RUN mkdir /var/www/passbolt && curl -sSL $PASSBOLT_URL | \
&& rm -fr /var/www/html \ tar zxf - -C /var/www/passbolt --strip-components 1 && \
&& a2enmod proxy \ chown -R nginx:nginx /var/www/passbolt && \
&& a2enmod proxy_http \ chmod -R +w /var/www/passbolt/app/tmp && \
&& a2enmod rewrite \ chmod +w /var/www/passbolt/app/webroot/img/public
&& a2ensite passbolt \
&& a2ensite 000-default.conf
# Configure php COPY conf/passbolt.conf /etc/nginx/conf.d/default.conf
RUN echo "memory_limit=256M" > /etc/php5/apache2/conf.d/20-memory-limit.ini \ COPY bin/passbolt_start.sh /passbolt_start.sh
&& echo "memory_limit=256M" > /etc/php5/cli/conf.d/20-memory-limit.ini
# Install composer EXPOSE 80 443
RUN curl -sS https://getcomposer.org/installer | php \
&& mv composer.phar /usr/local/bin/composer
# Special hack for macosx, to let www-data able to write on mounted volumes. CMD ["/passbolt_start.sh"]
# See docker bug: https://github.com/boot2docker/boot2docker/issues/581.
RUN usermod -u 1000 www-data \
&& usermod -a -G staff www-data \
&& chown -Rf www-data:www-data /var/www/
# Generate the gpg server key
ADD /conf/gpg_server_key_public.key /home/www-data/gpg_server_key_public.key
ADD /conf/gpg_server_key_private.key /home/www-data/gpg_server_key_private.key
# fcron
ADD ./fcron-3.2.0 /usr/local/fcron
RUN cd /usr/local/fcron; ./configure --with-editor=/usr/bin/nano \
&& cd /usr/local/fcron; make \
&& cd /usr/local/fcron; make install
ADD /entry-point.sh /entry-point.sh
RUN chmod 0755 /entry-point.sh
CMD ["bash", "/entry-point.sh"]

174
README.md
View File

@ -1,62 +1,144 @@
# PASSBOLT DEBIAN DOCKER CONTAINER # Passbolt docker official image
![ohyes](http://i.imgur.com/ZdqmDOp.gif)
ATTENTION : THIS IS A DEMO CONTAINER. DO NOT USE IT IN PRODUCTION. # What is Passbolt?
How to use it Passbolt is a free and open source password manager that allows team members to
------------- store and share credentials securely.
1) First, download passbolt source code from git.
``` ![passbolt](https://raw.githubusercontent.com/passbolt/passbolt_styleguide/master/src/img/logo/logo.png)
git clone https://github.com/passbolt/passbolt.git
# Build this image
Inside the repo directory:
`$ docker build . -t passbolt:1.4.0-alpine`
# How to use this image?
## Start passbolt instance
Passbolt requires mysql to be running. In this example we will be using mysql official docker image
with the default passbolt credentials.
```bash
$ docker run -e MYSQL_ROOT_PASSWORD=<your_root_password> \
-e MYSQL_DATABASE=passbolt \
-e MYSQL_USER=passbolt \
-e MYSQL_PASSWORD=P4ssb0lt \
mysql
``` ```
2) Then, configure the container. Then you can start passbolt just providing the database container ip in the `db_host` environment variable.
There is a configuration file located in /conf/conf.sh
It contains the following options : `$ docker run -e db_host=<mysql_container_ip> passbolt:1.4.0-alpine`
- PASSBOLT_DIR : path to passbolt source code. Once the process is done you just need to point your browser to http://passbolt_container_ip
- MYSQL_HOST : mysql host. Keep it as 'localhost' to let the container handle the database.
- MYSQL_ROOT_PASSWORD : root password of mysql. It is only useful if MYSQL_HOST is set to localhost.
- MYSQL_USERNAME : valid username for the database.
- MYSQL_PASSWORD : valid password for the database.
- MYSQL_DATABASE : name of the database to be used.
- ADMIN_USERNAME : email of the admin user.
- ADMIN_FIRST_NAME : first name of the admin user.
- ADMIN_LAST_NAME : last name of the admin user.
Enter the values corresponding to your settings. The most important setting is PASSBOLT_DIR. You can keep the default values for the rest. # Configure passbolt
3) Generate the gpg server key. ## Environment variables
```
cd /path/to/docker/files Passbolt docker image provides several environment variables to configure different aspects:
./bin/generate_gpg_server_key.sh
### GnuPG key creation related variables
* key_length: gpg desired key length
* subkey_length: gpg desired subkey length
* key_name: key owner name
* key_email: key owner email address
* key_expiration: key expiration date
### App file variables
* fingerprint: GnuPG fingerprint
* registration: defines if users can register
* ssl
### Core file variables
* default_salt
* default_seed
* default_url: url of the passbolt installation
### Database variables
* db_host: database hostname This param has to be specified either using env var or in database.php
* db_user: database username (defaults to passbolt)
* db_pass: database password (defaults to P4ssb0lt)
* db_name: database name (defaults to passbolt)
## Advanced configuration
What it you have your gpg keys and you want to setup a more complex configuration for passbolt?
It it possible to mount the desired configuration files as volumes.
### Configuration files subject to be persisted:
* /var/www/passbolt/app/Config/app.php
* /var/www/passbolt/app/Config/core.php
* /var/www/passbolt/app/Config/database.php
* /var/www/passbolt/app/Config/email.php
* /var/www/passbolt/app/Config/gpg/serverkey.asc
* /var/www/passbolt/app/Config/gpg/serverkey.private.asc
### SSL certificate files
If you have your own ssl certificate you can mount it on the following paths
* /etc/ssl/certs/certificate.crt
* /etc/ssl/certs/certificate.key
# Examples
## Automated setup
In the following example we launch passbolt with the defaults enabled usind mysql official docker container to store passbolt data.
```bash
$ docker run -e MYSQL_ROOT_PASSWORD=c0mplexp4ss \
-e MYSQL_DATABASE=passbolt \
-e MYSQL_USER=passbolt \
-e MYSQL_PASSWORD=P4ssb0lt \
mysql
``` ```
4) (optional) Configure the smtp server. Once mysql container is running we should extract its ip address we assume 172.17.0.2 for this example
In the PASSBOLT_DIR, edit the file app/Config/email.php. `$ docker run -e db_host=172.17.0.2 passbolt:1.4.0-alpine`
If you don't configure a smtp server, emails notifications won't be sent. User won't be able to finalize their registration. Point your browser to the passbolt container ip
5) Finally, you can build and run the container. ## Advanced configuration
```
cd /path/to/docker/files
docker build -t passbolt_debian .
./launch-container.sh
```
If a smtp server has been configured you will receive a registration email at the email you defined in the conf.sh file.
If no smtp server has been configured, you can still finalize the registration process. Take a look at the end of the docker logs, In the following example we launch passbolt with a customized setup mounting and persisting configuration files. We also make use of
you will find the admin user registration link. mysql official docker container to store passbolt data.
```
docker logs passbolt | awk '/The user has been registered with success/{print $0}' ```bash
$ docker run -e MYSQL_ROOT_PASSWORD=c0mplexp4ss \
-e MYSQL_DATABASE=passbolt \
-e MYSQL_USER=passbolt \
-e MYSQL_PASSWORD=P4ssb0lt \
mysql
``` ```
Behavior Using docker inspect or any other method you can get the ip address of the mysql container, we will use 172.17.0.2 in this example.
--------
By default the container will create a new database and use it to install passbolt. Once this container is running and you have the mysql ip address we run passbolt container mounting all configuration files stored
However, in case an external database is provided in the settings, it will try to use it. under a example conf directory in $PWD
A few consideration :
- There should be a valid username, password and database on the mysql server. ```bash
- If the database exists but without passbolt installed, then passbolt will be installed normally. $ docker run -v $PWD/conf/app.php:/var/www/passbolt/app/Config/app.php \
- If the database exists and already has a passbolt installed, then no db installation will be done and the existing data will be kept. -v $PWD/conf/core.php:/var/www/passbolt/app/Config/core.php \
-v $PWD/conf/database.php:/var/www/passbolt/app/Config/database.php \
-v $PWD/conf/email.php:/var/www/passbolt/app/Config/email.php \
-v $PWD/conf/private.asc:/var/www/passbolt/app/Config/gpg/serverkey.private.asc \
-v $PWD/conf/public.asc:/var/www/passbolt/app/Config/gpg/serverkey.asc \
passbolt:1.4.0-alpine
```
Point your browser to the passbolt container ip
# Requirements:
* mysql >= 5.6

View File

@ -1,6 +0,0 @@
#!/bin/sh
DIRNAME=`dirname $0`/..
gpg --batch --armor --gen-key $DIRNAME/conf/gpg_server_key_settings.conf
mv $DIRNAME/gpg_server_key_public.key $DIRNAME/conf
mv $DIRNAME/gpg_server_key_private.key $DIRNAME/conf

155
bin/passbolt_start.sh Executable file
View File

@ -0,0 +1,155 @@
#!/bin/bash
set -eo pipefail
gpg_private_key=/var/www/passbolt/app/Config/gpg/serverkey.private.asc
gpg_public_key=/var/www/passbolt/app/Config/gpg/serverkey.asc
gpg=$(which gpg)
core_config='/var/www/passbolt/app/Config/core.php'
db_config='/var/www/passbolt/app/Config/database.php'
app_config='/var/www/passbolt/app/Config/app.php'
ssl_key='/etc/ssl/certs/certificate.key'
ssl_cert='/etc/ssl/certs/certificate.crt'
gpg_gen_key() {
su -m -c "$gpg --batch --gen-key <<EOF
Key-Type: 1
Key-Length: ${key_length:-2048}
Subkey-Type: 1
Subkey-Length: ${subkey_length:-2048}
Name-Real: ${key_name:-Passbolt default user}
Name-Email: ${key_email:-passbolt@yourdomain.com}
Expire-Date: ${key_expiration:-0}
%commit
EOF" -ls /bin/bash nginx
su -m -c "$gpg --armor --export-secret-keys $key_email > $gpg_private_key" -ls /bin/bash nginx
su -m -c "$gpg --armor --export $key_email > $gpg_public_key" -ls /bin/bash nginx
}
gpg_import_key() {
su -m -c "$gpg --import $gpg_private_key" -ls /bin/bash nginx
su -m -c "$gpg --import $gpg_public_key" -ls /bin/bash nginx
}
core_setup() {
#Env vars:
# salt
# cipherseed
# url
local default_salt='DYhG93b0qyJfIxfs2guVoUubWwvniR2G0FgaC9mi'
local default_seed='76859309657453542496749683645'
local default_url='example.com'
cp $core_config{.default,}
sed -i s:$default_salt:${salt:-$default_salt}:g $core_config
sed -i s:$default_seed:${cipherseed:-$default_seed}:g $core_config
sed -i s:$default_url:${url:-$default_url}:g $core_config
}
db_setup() {
#Env vars:
# db_host
# db_user
# db_pass
# db_name
local default_host='localhost'
local default_user='user'
local default_pass='password'
local default_db='database_name'
cp $db_config{.default,}
sed -i s:$default_host:${db_host:-db}:g $db_config
sed -i s:$default_user:${db_user:-passbolt}:g $db_config
sed -i s:$default_pass\',:${db_pass:-P4ssb0lt}\',:g $db_config
sed -i s:$default_db:${db_name:-passbolt}:g $db_config
}
app_setup() {
#Env vars:
# fingerprint
# registration
# ssl
local default_home='/home/www-data/.gnupg'
local default_public_key='unsecure.key'
local default_private_key='unsecure_private.key'
local default_fingerprint='2FC8945833C51946E937F9FED47B0811573EE67E'
local default_ssl='force'
local default_registration='public'
local gpg_home='/var/lib/nginx/.gnupg'
local auto_fingerprint=$(su -m -c "$gpg --fingerprint |grep fingerprint| awk '{for(i=4;i<=NF;++i)printf \$i}'" -ls /bin/bash nginx)
cp $app_config{.default,}
sed -i s:$default_home:$gpg_home:g $app_config
sed -i s:$default_public_key:serverkey.asc:g $app_config
sed -i s:$default_private_key:serverkey.private.asc:g $app_config
sed -i s:$default_fingerprint:${fingerprint:-$auto_fingerprint}:g $app_config
sed -i "/force/ s:true:${ssl:-true}:" $app_config
}
gen_ssl_cert() {
openssl req -new -newkey rsa:4096 -days 365 -nodes -x509 \
-subj "/C=FR/ST=Denial/L=Springfield/O=Dis/CN=www.example.com" \
-keyout $ssl_key -out $ssl_cert
}
install() {
local database=${db_host:-$(grep -m1 -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}' $db_config)}
echo $database
tables=$(mysql -u passbolt -h $database -p -BN -e "SHOW TABLES FROM passbolt" -p${db_pass:-P4ssb0lt} |wc -l)
if [ $tables -eq 0 ]; then
su -c "/var/www/passbolt/app/Console/cake install --send-anonymous-statistics true --no-admin" -ls /bin/bash nginx
else
echo "Enjoy! ☮"
fi
}
php_fpm_setup() {
sed -i '/^user\s/ s:nobody:nginx:g' /etc/php5/php-fpm.conf
sed -i '/^group\s/ s:nobody:nginx:g' /etc/php5/php-fpm.conf
cp /etc/php5/php-fpm.conf /etc/php5/fpm.d/www.conf
sed -i '/^include\s/ s:^:#:' /etc/php5/fpm.d/www.conf
}
if [ ! -f $gpg_private_key ] || [ ! -f $gpg_public_key ]; then
gpg_gen_key
else
gpg_import_key
fi
if [ ! -f $core_config ]; then
core_setup
fi
if [ ! -f $db_config ]; then
db_setup
fi
if [ ! -f $app_config ]; then
app_setup
fi
if [ ! -f $ssl_key ] && [ ! -f $ssl_cert ]; then
gen_ssl_cert
fi
php_fpm_setup
install
php-fpm5
nginx -g "pid /tmp/nginx.pid; daemon off;"

View File

@ -1,17 +0,0 @@
#!/bin/sh
# Passbolt directory.
PASSBOLT_DIR=~/projects/passbolt_for_docker_debian
# MySQL configuration.
MYSQL_HOST=localhost
# Only necessary if we use the local database.
MYSQL_ROOT_PASSWORD=rootpassword
MYSQL_USERNAME=passbolt
MYSQL_PASSWORD=password123
MYSQL_DATABASE=passbolt
# Admin settings.
ADMIN_USERNAME=admin@passbolt.com
ADMIN_FIRST_NAME=Admin
ADMIN_LAST_NAME=Admin

View File

@ -1,12 +0,0 @@
Key-Type: RSA
Key-Length: 2048
Subkey-Type: RSA
Subkey-Length: 2048
Name-Real: Passbolt Docker Server Key
Name-Comment: Passbolt Docker Server Key
Name-Email: info@passbolt.com
Expire-Date: 0
%pubring gpg_server_key_public.key
%secring gpg_server_key_private.key
%commit
%echo Your gpg passbolt server key has been generated

110
conf/passbolt.conf Normal file
View File

@ -0,0 +1,110 @@
server {
listen 80;
client_body_buffer_size 100K;
client_header_buffer_size 1k;
client_max_body_size 100k;
large_client_header_buffers 2 1k;
client_body_timeout 10;
client_header_timeout 10;
keepalive_timeout 5 5;
send_timeout 10;
root /var/www/passbolt;
# X-Frame-Options is to prevent from clickJacking attack
add_header X-Frame-Options SAMEORIGIN;
# disable content-type sniffing on some browsers.
add_header X-Content-Type-Options nosniff;
# This header enables the Cross-site scripting (XSS) filter
add_header X-XSS-Protection "1; mode=block";
# This will enforce HTTP browsing into HTTPS and avoid ssl stripping attack
add_header Strict-Transport-Security "max-age=31536000; includeSubdomains;";
## Only GET, Post, PUT are allowed##
if ($request_method !~ ^(GET|PUT|POST)$ ) {
return 444;
}
location / {
try_files $uri $uri/ /index.php?$args;
index index.php;
}
location ~ \.php$ {
fastcgi_index index.php;
fastcgi_pass 127.0.0.1:9000;
fastcgi_split_path_info ^(.+\.php)(.+)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
location ~* \.(jpe?g|woff|woff2|ttf|gif|png|bmp|ico|css|js|json|pdf|zip|htm|html|docx?|xlsx?|pptx?|txt|wav|swf|svg|avi|mp\d)$ {
access_log off;
log_not_found off;
try_files $uri /app/webroot/$uri /index.php?$args;
}
}
server {
listen 443;
ssl on;
ssl_certificate /etc/ssl/certs/certificate.crt;
ssl_certificate_key /etc/ssl/certs/certificate.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS;
ssl_session_tickets off;
ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 5s;
add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";
add_header Strict-Transport-Security "max-age=63072000; includeSubdomains";
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;
root /var/www/passbolt;
# X-Frame-Options is to prevent from clickJacking attack
add_header X-Frame-Options SAMEORIGIN;
# disable content-type sniffing on some browsers.
add_header X-Content-Type-Options nosniff;
# This header enables the Cross-site scripting (XSS) filter
add_header X-XSS-Protection "1; mode=block";
# This will enforce HTTP browsing into HTTPS and avoid ssl stripping attack
add_header Strict-Transport-Security "max-age=31536000; includeSubdomains;";
## Only GET, Post, PUT are allowed##
if ($request_method !~ ^(GET|PUT|POST)$ ) {
return 444;
}
location / {
try_files $uri $uri/ /index.php?$args;
index index.php;
}
location ~ \.php$ {
fastcgi_index index.php;
fastcgi_pass 127.0.0.1:9000;
fastcgi_split_path_info ^(.+\.php)(.+)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
location ~* \.(jpe?g|woff|woff2|ttf|gif|png|bmp|ico|css|js|json|pdf|zip|htm|html|docx?|xlsx?|pptx?|txt|wav|swf|svg|avi|mp\d)$ {
access_log off;
log_not_found off;
try_files $uri /app/webroot/$uri /index.php?$args;
}
}

View File

@ -1,137 +0,0 @@
#!/bin/bash
########################################################
## Configure Mysql
########################################################
IS_MYSQL_LOCAL=1
if [ $MYSQL_HOST != "localhost" ]; then
IS_MYSQL_LOCAL=0
fi
# If Mysql is local (no persistence), we reset everything and create the database.
if [ $IS_MYSQL_LOCAL == 1 ]; then
echo "using local mysql"
echo "Resetting root password, and create user ${MYSQL_USERNAME}"
# Start mysql
service mysql start
# Change password of database
mysql --host=localhost --user=root --password=root << EOSQL
SET @@SESSION.SQL_LOG_BIN=0;
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('${MYSQL_ROOT_PASSWORD}');
GRANT ALL ON *.* TO 'root'@'%' WITH GRANT OPTION ;
DROP DATABASE IF EXISTS test ;
FLUSH PRIVILEGES ;
EOSQL
# Create the passbolt database
echo "Create database ${MYSQL_DATABASE}"
mysql -u "root" --password="${MYSQL_ROOT_PASSWORD}" -e "create database ${MYSQL_DATABASE}"
echo "Create user ${MYSQL_USERNAME} and give access to ${MYSQL_DATABASE}"
mysql -u "root" --password="${MYSQL_ROOT_PASSWORD}" -e "GRANT ALL PRIVILEGES ON ${MYSQL_DATABASE}.* To '${MYSQL_USERNAME}'@'localhost' IDENTIFIED BY '${MYSQL_PASSWORD}'"
echo "flush privileges"
mysql -u "root" --password="${MYSQL_ROOT_PASSWORD}" -e "FLUSH PRIVILEGES"
# If Mysql is on a different host, check if the database exists.
else
echo "using remote mysql"
echo "Checking database ${MYSQL_DATABASE}"
RESULT=`mysql -h $MYSQL_HOST -u $MYSQL_USERNAME -p$MYSQL_PASSWORD --skip-column-names -e "SHOW DATABASES LIKE '$MYSQL_DATABASE'"`
if [ "$RESULT" != "$MYSQL_DATABASE" ]; then
echo "The database $MYSQL_DATABASE does not exist in the mysql instance provided."
fi
echo "ok"
fi
########################################################
## Restart services
########################################################
# Restart the apache2 service
service apache2 restart
# Start the memcached service
service memcached restart
########################################################
## Prepare the source code
########################################################
# Default configuration files
cp -a /var/www/passbolt/app/Config/app.php.default /var/www/passbolt/app/Config/app.php
cp -a /var/www/passbolt/app/Config/core.php.default /var/www/passbolt/app/Config/core.php
cp -a /var/www/passbolt/app/webroot/js/app/config/config.json.default /var/www/passbolt/app/webroot/js/app/config/config.json
# gpg
GPG_SERVER_KEY_FINGERPRINT=`gpg -n --with-fingerprint /home/www-data/gpg_server_key_public.key | awk -v FS="=" '/Key fingerprint =/{print $2}' | sed 's/[ ]*//g'`
/var/www/passbolt/app/Console/cake passbolt app_config write GPG.serverKey.fingerprint $GPG_SERVER_KEY_FINGERPRINT
/var/www/passbolt/app/Console/cake passbolt app_config write GPG.serverKey.public /home/www-data/gpg_server_key_public.key
/var/www/passbolt/app/Console/cake passbolt app_config write GPG.serverKey.private /home/www-data/gpg_server_key_private.key
chown www-data:www-data /home/www-data/gpg_server_key_public.key
chown www-data:www-data /home/www-data/gpg_server_key_private.key
# overwrite the core configuration
/var/www/passbolt/app/Console/cake passbolt core_config gen-cipher-seed
/var/www/passbolt/app/Console/cake passbolt core_config gen-security-salt
/var/www/passbolt/app/Console/cake passbolt core_config write App.fullBaseUrl https://192.168.99.100
# overwrite the database configuration
# @TODO based on the cake task DbConfigTask implement a task to manipulate the dabase configuration
#/var/www/passbolt/app/Console/cake passbolt db_config ${MYSQL_HOST} ${MYSQL_USERNAME} ${MYSQL_PASSWORD} ${MYSQL_DATABASE}
DATABASE_CONF=/var/www/passbolt/app/Config/database.php
# Set configuration in file
cat > $DATABASE_CONF << EOL
<?php
class DATABASE_CONFIG {
public \$default = array(
'datasource' => 'Database/Mysql',
'persistent' => false,
'host' => '${MYSQL_HOST}',
'login' => '${MYSQL_USERNAME}',
'password' => '${MYSQL_PASSWORD}',
'database' => '${MYSQL_DATABASE}',
'prefix' => '',
'encoding' => 'utf8',
);
};
EOL
#######################################################
## Install passbolt
########################################################
# Check if passbolt is already installed.
IS_PASSBOLT_INSTALLED=0
OUTPUT=$(mysql -N -s -u ${MYSQL_USERNAME} -p${MYSQL_PASSWORD} -e "select count(*) from information_schema.tables where table_schema='${MYSQL_DATABASE}' and table_name='users';")
echo "OUTPUT=${OUTPUT}"
if [ $OUTPUT == "1" ]; then
echo "passbolt is already installed in this database"
IS_PASSBOLT_INSTALLED=1
else
echo "passbolt is not installed in this database. Proceeding.."
fi
# Install passbolt
if [ $IS_PASSBOLT_INSTALLED == "0" ]; then
echo "Installing"
su -s /bin/bash -c "/var/www/passbolt/app/Console/cake install --admin-username ${ADMIN_USERNAME} --admin-first-name=${ADMIN_FIRST_NAME} --admin-last-name=${ADMIN_LAST_NAME}" www-data
echo "We are all set. Have fun with Passbolt !"
echo "Reminder : THIS IS A DEMO CONTAINER. DO NOT USE IT IN PRODUCTION!!!!"
fi
########################################################
## After install
########################################################
# start fcron
fcron &
# add passbolt email sender job to fcron
touch /var/log/passbolt.log
chown www-data:www-data /var/log/passbolt.log
env > /etc/cron.d/passbolt
echo "* * * * * /var/www/passbolt/app/Console/cake EmailQueue.sender > /var/log/passbolt.log" >> /etc/cron.d/passbolt
fcrontab -u www-data /etc/cron.d/passbolt
/bin/bash

View File

@ -1,217 +0,0 @@
fcron-3.2.0/filesubs.c
fcron-3.2.0/getloadavg.h
fcron-3.2.0/convert-fcrontab.h
fcron-3.2.0/install-sh
fcron-3.2.0/fcrontab.h
fcron-3.2.0/exe_list_test.c
fcron-3.2.0/mem.h
fcron-3.2.0/MANIFEST
fcron-3.2.0/config.h.in
fcron-3.2.0/filesubs.h
fcron-3.2.0/socket.c
fcron-3.2.0/allow.c
fcron-3.2.0/exe_list.h
fcron-3.2.0/log.h
fcron-3.2.0/cl.c
fcron-3.2.0/tests/test-open.c
fcron-3.2.0/tests/test-types.c
fcron-3.2.0/tests/test-uidgid.c
fcron-3.2.0/tests/README.tests
fcron-3.2.0/README
fcron-3.2.0/fcron.h
fcron-3.2.0/log.c
fcron-3.2.0/exe_list.c
fcron-3.2.0/fcron.c
fcron-3.2.0/pam.h
fcron-3.2.0/Makefile.in
fcron-3.2.0/files/fcron.pam
fcron-3.2.0/files/fcron.deny
fcron-3.2.0/files/fcrontab.pam
fcron-3.2.0/files/fcron.conf.in
fcron-3.2.0/files/fcron.allow
fcron-3.2.0/m4/ax_lib_readline.m4
fcron-3.2.0/getloadavg.c
fcron-3.2.0/fifo_list.h
fcron-3.2.0/subs.c
fcron-3.2.0/allow.h
fcron-3.2.0/global.h
fcron-3.2.0/configure.in
fcron-3.2.0/read_string.h
fcron-3.2.0/doc/fcron-doc.mod.in
fcron-3.2.0/doc/Makefile.in
fcron-3.2.0/doc/stylesheets/fcron-doc.dsl.in
fcron-3.2.0/doc/en/readme.sgml
fcron-3.2.0/doc/en/todo.sgml
fcron-3.2.0/doc/en/man/fcron.conf.5
fcron-3.2.0/doc/en/man/fcrondyn.1
fcron-3.2.0/doc/en/man/fcrontab.1
fcron-3.2.0/doc/en/man/fcrontab.5
fcron-3.2.0/doc/en/man/bitstring.3
fcron-3.2.0/doc/en/man/fcron.8
fcron-3.2.0/doc/en/fcron-doc.sgml
fcron-3.2.0/doc/en/fcrontab.5.sgml
fcron-3.2.0/doc/en/fcrondyn.1.sgml
fcron-3.2.0/doc/en/fcron.conf.5.sgml
fcron-3.2.0/doc/en/fcrontab.1.sgml
fcron-3.2.0/doc/en/HTML/fcrontab.1.html
fcron-3.2.0/doc/en/HTML/readme.html
fcron-3.2.0/doc/en/HTML/relnotes.html
fcron-3.2.0/doc/en/HTML/how-and-why.html
fcron-3.2.0/doc/en/HTML/install.html
fcron-3.2.0/doc/en/HTML/fcron.conf.5.html
fcron-3.2.0/doc/en/HTML/LEGALNOTICE.html
fcron-3.2.0/doc/en/HTML/gpl.html
fcron-3.2.0/doc/en/HTML/fcrondyn.1.html
fcron-3.2.0/doc/en/HTML/fcrontab.5.html
fcron-3.2.0/doc/en/HTML/faq.html
fcron-3.2.0/doc/en/HTML/manpages.html
fcron-3.2.0/doc/en/HTML/fdl.html
fcron-3.2.0/doc/en/HTML/changes.html
fcron-3.2.0/doc/en/HTML/index.html
fcron-3.2.0/doc/en/HTML/fcron.8.html
fcron-3.2.0/doc/en/HTML/thanks.html
fcron-3.2.0/doc/en/HTML/using-fcron.html
fcron-3.2.0/doc/en/HTML/todo.html
fcron-3.2.0/doc/en/manpage-foot.sgml
fcron-3.2.0/doc/en/changes.sgml
fcron-3.2.0/doc/en/fdl.sgml
fcron-3.2.0/doc/en/thanks.sgml
fcron-3.2.0/doc/en/faq.sgml
fcron-3.2.0/doc/en/relnotes.sgml
fcron-3.2.0/doc/en/install.sgml
fcron-3.2.0/doc/en/gpl.sgml
fcron-3.2.0/doc/en/fcron.8.sgml
fcron-3.2.0/doc/en/txt/changes.txt
fcron-3.2.0/doc/en/txt/thanks.txt
fcron-3.2.0/doc/en/txt/gpl.txt
fcron-3.2.0/doc/en/txt/readme.txt
fcron-3.2.0/doc/en/txt/faq.txt
fcron-3.2.0/doc/en/txt/todo.txt
fcron-3.2.0/doc/en/txt/install.txt
fcron-3.2.0/doc/en/txt/relnotes.txt
fcron-3.2.0/doc/psgml-ecat.file
fcron-3.2.0/doc/psgml-docbook-dtd.cache
fcron-3.2.0/doc/bitstring.3
fcron-3.2.0/doc/fr/readme.sgml
fcron-3.2.0/doc/fr/todo.sgml
fcron-3.2.0/doc/fr/man/fcron.conf.5
fcron-3.2.0/doc/fr/man/fcrondyn.1
fcron-3.2.0/doc/fr/man/fcrontab.1
fcron-3.2.0/doc/fr/man/fcrontab.5
fcron-3.2.0/doc/fr/man/bitstring.3
fcron-3.2.0/doc/fr/man/fcron.8
fcron-3.2.0/doc/fr/fcron-doc.sgml
fcron-3.2.0/doc/fr/fcrontab.5.sgml
fcron-3.2.0/doc/fr/fcrondyn.1.sgml
fcron-3.2.0/doc/fr/fcron.conf.5.sgml
fcron-3.2.0/doc/fr/fcrontab.1.sgml
fcron-3.2.0/doc/fr/HTML/fcrontab.1.html
fcron-3.2.0/doc/fr/HTML/readme.html
fcron-3.2.0/doc/fr/HTML/relnotes.html
fcron-3.2.0/doc/fr/HTML/how-and-why.html
fcron-3.2.0/doc/fr/HTML/install.html
fcron-3.2.0/doc/fr/HTML/fcron.conf.5.html
fcron-3.2.0/doc/fr/HTML/LEGALNOTICE.html
fcron-3.2.0/doc/fr/HTML/gpl.html
fcron-3.2.0/doc/fr/HTML/fcrondyn.1.html
fcron-3.2.0/doc/fr/HTML/fcrontab.5.html
fcron-3.2.0/doc/fr/HTML/faq.html
fcron-3.2.0/doc/fr/HTML/manpages.html
fcron-3.2.0/doc/fr/HTML/fdl.html
fcron-3.2.0/doc/fr/HTML/changes.html
fcron-3.2.0/doc/fr/HTML/index.html
fcron-3.2.0/doc/fr/HTML/fcron.8.html
fcron-3.2.0/doc/fr/HTML/thanks.html
fcron-3.2.0/doc/fr/HTML/using-fcron.html
fcron-3.2.0/doc/fr/HTML/todo.html
fcron-3.2.0/doc/fr/manpage-foot.sgml
fcron-3.2.0/doc/fr/changes.sgml
fcron-3.2.0/doc/fr/fdl.sgml
fcron-3.2.0/doc/fr/thanks.sgml
fcron-3.2.0/doc/fr/faq.sgml
fcron-3.2.0/doc/fr/relnotes.sgml
fcron-3.2.0/doc/fr/install.sgml
fcron-3.2.0/doc/fr/gpl.sgml
fcron-3.2.0/doc/fr/fcron.8.sgml
fcron-3.2.0/doc/fr/txt/changes.txt
fcron-3.2.0/doc/fr/txt/thanks.txt
fcron-3.2.0/doc/fr/txt/gpl.txt
fcron-3.2.0/doc/fr/txt/readme.txt
fcron-3.2.0/doc/fr/txt/faq.txt
fcron-3.2.0/doc/fr/txt/todo.txt
fcron-3.2.0/doc/fr/txt/install.txt
fcron-3.2.0/doc/fr/txt/relnotes.txt
fcron-3.2.0/u_list.h
fcron-3.2.0/env_list.c
fcron-3.2.0/dyncom.h
fcron-3.2.0/fcronconf.h
fcron-3.2.0/fcronsighup.h
fcron-3.2.0/database.h
fcron-3.2.0/debian/changelog
fcron-3.2.0/debian/config
fcron-3.2.0/debian/preinst
fcron-3.2.0/debian/conffiles
fcron-3.2.0/debian/postrm
fcron-3.2.0/debian/init
fcron-3.2.0/debian/templates.fr
fcron-3.2.0/debian/templates
fcron-3.2.0/debian/rules
fcron-3.2.0/debian/fcron-update-crontabs
fcron-3.2.0/debian/TODO.Debian
fcron-3.2.0/debian/README.Debian
fcron-3.2.0/debian/crontab.root
fcron-3.2.0/debian/fcron-update-crontabs.1
fcron-3.2.0/debian/postinst
fcron-3.2.0/debian/templates.ru
fcron-3.2.0/debian/lintian
fcron-3.2.0/debian/control
fcron-3.2.0/debian/templates.pt
fcron-3.2.0/debian/templates.es
fcron-3.2.0/debian/templates.de
fcron-3.2.0/debian/dirs
fcron-3.2.0/debian/copyright
fcron-3.2.0/mem.c
fcron-3.2.0/configure
fcron-3.2.0/database.c
fcron-3.2.0/save.c
fcron-3.2.0/fcrontab.c
fcron-3.2.0/socket.h
fcron-3.2.0/VERSION
fcron-3.2.0/script/sysVinit-launcher.in
fcron-3.2.0/script/fcron-solaris10-manifest.xml
fcron-3.2.0/script/install-pam-conf
fcron-3.2.0/script/check_system_crontabs.bash
fcron-3.2.0/script/user-group
fcron-3.2.0/script/gen-doc
fcron-3.2.0/script/fcron.sh.in
fcron-3.2.0/script/gen-in.pl
fcron-3.2.0/script/boot-install
fcron-3.2.0/script/check_system_crontabs.sh
fcron-3.2.0/script/fcron.init.suse.in
fcron-3.2.0/script/has_usrgrp.pl
fcron-3.2.0/script/fcron.init.systemd.in
fcron-3.2.0/script/boot-uninstall
fcron-3.2.0/bitstring.h
fcron-3.2.0/option.h
fcron-3.2.0/job.h
fcron-3.2.0/convert-fcrontab.c
fcron-3.2.0/subs.h
fcron-3.2.0/read_string.c
fcron-3.2.0/fileconf.h
fcron-3.2.0/fcrondyn.h
fcron-3.2.0/job.c
fcron-3.2.0/fifo_list.c
fcron-3.2.0/cl.h
fcron-3.2.0/lavg_list.h
fcron-3.2.0/fcronsighup.c
fcron-3.2.0/fcrondyn.c
fcron-3.2.0/temp_file.h
fcron-3.2.0/u_list.c
fcron-3.2.0/lavg_list.c
fcron-3.2.0/temp_file.c
fcron-3.2.0/fcronconf.c
fcron-3.2.0/conf.h
fcron-3.2.0/conf.c
fcron-3.2.0/fileconf.c
fcron-3.2.0/save.h
fcron-3.2.0/env_list.h

View File

@ -1,323 +0,0 @@
############################
# fcron's Makefile ########
############################
# @configure_input@
# The following should not be edited manually (use configure options)
# If you must do it, BEWARE : some of the following is also defined
# in config.h, so you must modify config.h AND Makefile in order
# to set the same values in the two files.
FCRON_ALLOW = fcron.allow
FCRON_DENY = fcron.deny
FCRON_CONF = fcron.conf
SRCDIR := @srcdir@
# Useful to build packages
# you may want to use this var with a : 'make DESTDIR=dir install'
DESTDIR :=
# Where should we install it ?
prefix = @prefix@
exec_prefix = @exec_prefix@
DESTSBIN = @sbindir@
DESTBIN = @bindir@
ETC = @sysconfdir@
FCRONTABS = @FCRONTABS@
PIDDIR = @PIDDIR@
FIFODIR = @FIFODIR@
PIDFILE = @PIDFILE@
REBOOT_LOCK = @REBOOT_LOCK@
FIFOFILE = @FIFOFILE@
FCRON_SHELL = @FCRON_SHELL@
SENDMAIL = @SENDMAIL@
FCRON_EDITOR = @FCRON_EDITOR@
OPTIM := @CFLAGS@
LDFLAGS := @LDFLAGS@
CPPFLAGS := @CPPFLAGS@ -I. -I${SRCDIR}
LIBS := @LIBS@
LIBOBJS := @LIBOBJS@
DEFS := @DEFS@
CC := @CC@
INSTALL := @INSTALL@
STRIP := @STRIP@
ROOTNAME := @ROOTNAME@
ROOTGROUP := @ROOTGROUP@
USERNAME := @USERNAME@
GROUPNAME := @GROUPNAME@
SYSFCRONTAB := @SYSFCRONTAB@
DEBUG := @DEBUG@
BOOTINSTALL := @BOOTINSTALL@
ANSWERALL := @ANSWERALL@
USEPAM := @USEPAM@
FCRONDYN := @FCRONDYN@
SYSTEMD_DIR := @SYSTEMD_DIR@
# Options
# -DDEBUG even more verbose
# -DCHECKJOBS send a mail containing the exact shell command
# for each execution of each job.
# -DFOREGROUND=[0|1] default run in foreground ?
#OPTION= -DCHECKJOBS
#OPTION= -O3 -mcpu=i686
OPTION :=
####################################
# Should not be changed under this #
####################################
VERSION := @VERSION@
CFLAGS += $(OPTIM) $(OPTION) $(DEFS) $(CPPFLAGS)
ifeq ($(FCRONDYN), 1)
LIBOBJS := socket.o $(LIBOBJS)
endif
OBJSD := fcron.o cl.o subs.o mem.o save.o temp_file.o log.o database.o job.o conf.o u_list.o exe_list.o lavg_list.o env_list.o fcronconf.o filesubs.o $(LIBOBJS)
OBJSTAB := fcrontab.o cl.o subs.o mem.o save.o temp_file.o log.o fileconf.o allow.o read_string.o u_list.o env_list.o fcronconf.o filesubs.o
OBJSDYN := fcrondyn.o subs.o mem.o log.o allow.o read_string.o fcronconf.o filesubs.o
OBJCONV := convert-fcrontab.o cl.o subs.o mem.o save.o log.o u_list.o env_list.o fcronconf.o filesubs.o
OBJSIG := fcronsighup.o subs.o mem.o log.o allow.o fcronconf.o filesubs.o
HEADERSALL := config.h $(SRCDIR)/global.h $(SRCDIR)/cl.h $(SRCDIR)/log.h $(SRCDIR)/subs.h $(SRCDIR)/mem.h $(SRCDIR)/save.h $(SRCDIR)/option.h $(SRCDIR)/dyncom.h
# this is a regular expression :
# do not ci automaticaly generated files and doc (done by doc's Makefile)
RCSNOCI:=.*\(.html\|VERSION\|MANIFEST\|configure\|install.sh\|config.log\|config.status\|config.h\|config.cache\|Makefile\|doc.*\|CVS.*\|.git.*\)
RUN_NON_PRIVILEGED := @RUN_NON_PRIVILEGED@
ifeq ($(RUN_NON_PRIVILEGED), 1)
BINMODE:=111
BINMODESIGHUP:=111
else
BINMODE:=6111
BINMODESIGHUP:=4110
endif
ifeq ($(FCRONDYN), 1)
all: fcron fcrontab fcrondyn convert-fcrontab files/fcron.conf initscripts documentation
else
all: fcron fcrontab convert-fcrontab files/fcron.conf
endif
fcron: $(OBJSD)
$(CC) $(CFLAGS) -o $@ $(OBJSD) $(LIBS)
fcrontab: fcronsighup $(OBJSTAB)
$(CC) $(CFLAGS) -o $@ $(OBJSTAB) $(LIBS)
fcrondyn: $(OBJSDYN)
$(CC) $(CFLAGS) -o $@ $(OBJSDYN) $(LIBS)
fcronsighup: $(OBJSIG)
$(CC) $(CFLAGS) -o $@ $(OBJSIG) $(LIBS)
convert-fcrontab: $(OBJCONV)
$(CC) $(CFLAGS) -o $@ $(OBJCONV) $(LIBS)
exe_list_test: exe_list.o u_list.o exe_list_test.o log.o subs.o
$(CC) $(CFLAGS) -o $@ exe_list.o u_list.o exe_list_test.o log.o subs.o $(LIBS)
%.o: $(SRCDIR)/%.c $(HEADERSALL) $(SRCDIR)/%.h
$(CC) $(CFLAGS) -DPIDFILE="\"${PIDFILE}\"" -DREBOOT_LOCK="\"${REBOOT_LOCK}\"" \
-DFIFOFILE="\"${FIFOFILE}\"" -DETC="\"${ETC}\"" \
-DFCRON_SHELL="\"${FCRON_SHELL}\"" -DFCRON_CONF="\"${FCRON_CONF}\"" \
-DFCRONTABS="\"${FCRONTABS}\"" \
-DFCRON_ALLOW="\"${FCRON_ALLOW}\"" -DFCRON_DENY="\"${FCRON_DENY}\"" \
-DFCRON_SHELL="\"${FCRON_SHELL}\"" -DSENDMAIL="\"${SENDMAIL}\"" \
-DFCRON_EDITOR="\"${FCRON_EDITOR}\"" -DBINDIREX="\"${DESTBIN}\"" \
-c $<
initscripts:
@(if test ! -d script; then mkdir script ; fi ; \
for F in sysVinit-launcher fcron.sh fcron.init.suse fcron.init.systemd ; do \
$(SRCDIR)/script/gen-in.pl $(SRCDIR)/script/$${F}.in script/$${F} ./ ; \
done)
documentation:
$(MAKE) -C doc doc-if-none
install: install-staged strip perms
ifeq ($(BOOTINSTALL), 1)
$(SRCDIR)/script/boot-install "$(INSTALL) -o $(ROOTNAME)" $(DESTSBIN) $(DEBUG) $(FCRONTABS) $(ANSWERALL) $(SRCDIR)
endif
ifneq ($(SYSTEMD_DIR), no)
if test ! -d $(DESTDIR)$(SYSTEMD_DIR); then $(INSTALL) -m 755 -d $(DESTDIR)$(SYSTEMD_DIR) ; fi
$(INSTALL) -m 644 script/fcron.init.systemd $(DESTDIR)$(SYSTEMD_DIR)/fcron.service
endif
install-staged: all
# needed by boot-install script :
echo `fcron -V 2>&1 | grep "^fcron "` > PREVIOUS_VERSION && chmod a+rw PREVIOUS_VERSION
$(SRCDIR)/script/user-group $(USERNAME) $(GROUPNAME) $(ANSWERALL) $(SRCDIR)
# check if the directories we use exist, and if not, create them
if test ! -d $(DESTDIR)$(DESTSBIN); then $(INSTALL) -m 755 -d $(DESTDIR)$(DESTSBIN) ; fi
if test ! -d $(DESTDIR)$(DESTBIN); then $(INSTALL) -m 755 -d $(DESTDIR)$(DESTBIN) ; fi
if test ! -d $(DESTDIR)$(ETC); then $(INSTALL) -m 755 -d $(DESTDIR)$(ETC) ; fi
if test ! -d $(DESTDIR)$(PIDDIR); then $(INSTALL) -m 755 -d $(DESTDIR)$(PIDDIR) ; fi
if test ! -d $(DESTDIR)$(FIFODIR); then $(INSTALL) -m 755 -d $(DESTDIR)$(FIFODIR) ; fi
# create the spool dir
$(INSTALL) -m 755 -d $(DESTDIR)$(FCRONTABS)
$(INSTALL) -m 755 fcron $(DESTDIR)$(DESTSBIN)
$(INSTALL) -m 755 fcrontab $(DESTDIR)$(DESTBIN)
$(INSTALL) -m 755 fcronsighup $(DESTDIR)$(DESTBIN)
ifeq ($(FCRONDYN), 1)
$(INSTALL) -m 755 fcrondyn $(DESTDIR)$(DESTBIN)
endif
if test ! -f $(DESTDIR)$(ETC)/fcron.allow -a ! -f $(DESTDIR)$(ETC)/fcron.deny ; then $(INSTALL) -m 644 $(SRCDIR)/files/fcron.allow $(DESTDIR)$(ETC) ; $(INSTALL) -m 644 $(SRCDIR)/files/fcron.deny $(DESTDIR)$(ETC) ; fi
test -f $(DESTDIR)$(ETC)/fcron.conf || $(INSTALL) -m 644 files/fcron.conf $(DESTDIR)$(ETC)
$(MAKE) -C doc install-staged
perms: install-staged strip
# Note : we don't use "chown user:group file" because some systems use ":"
# and others "." as separator.
chown $(ROOTNAME) $(DESTDIR)$(DESTSBIN)
chgrp $(ROOTGROUP) $(DESTDIR)$(DESTSBIN)
chown $(ROOTNAME) $(DESTDIR)$(DESTBIN)
chgrp $(ROOTGROUP) $(DESTDIR)$(DESTBIN)
chown $(ROOTNAME) $(DESTDIR)$(ETC)
chgrp $(ROOTGROUP) $(DESTDIR)$(ETC)
chown $(ROOTNAME) $(DESTDIR)$(FIFODIR)
chgrp $(ROOTGROUP) $(DESTDIR)$(FIFODIR)
chown $(ROOTNAME) $(DESTDIR)$(PIDDIR)
chgrp $(ROOTGROUP) $(DESTDIR)$(PIDDIR)
# change spool dir mode
chown $(USERNAME) $(DESTDIR)$(FCRONTABS)
chgrp $(GROUPNAME) $(DESTDIR)$(FCRONTABS)
chmod 770 $(DESTDIR)$(FCRONTABS)
chown $(ROOTNAME) $(DESTDIR)$(DESTSBIN)/fcron
chgrp $(ROOTGROUP) $(DESTDIR)$(DESTSBIN)/fcron
chmod 110 $(DESTDIR)$(DESTSBIN)/fcron
chown $(USERNAME) $(DESTDIR)$(DESTBIN)/fcrontab
chgrp $(GROUPNAME) $(DESTDIR)$(DESTBIN)/fcrontab
chmod $(BINMODE) $(DESTDIR)$(DESTBIN)/fcrontab
chown $(ROOTNAME) $(DESTDIR)$(DESTBIN)/fcronsighup
chgrp $(GROUPNAME) $(DESTDIR)$(DESTBIN)/fcronsighup
chmod $(BINMODESIGHUP) $(DESTDIR)$(DESTBIN)/fcronsighup
ifeq ($(FCRONDYN), 1)
chown $(USERNAME) $(DESTDIR)$(DESTBIN)/fcrondyn
chgrp $(GROUPNAME) $(DESTDIR)$(DESTBIN)/fcrondyn
chmod $(BINMODE) $(DESTDIR)$(DESTBIN)/fcrondyn
endif
chown $(ROOTNAME) $(DESTDIR)$(ETC)/fcron.allow $(DESTDIR)$(ETC)/fcron.deny
chgrp $(GROUPNAME) $(DESTDIR)$(ETC)/fcron.allow $(DESTDIR)$(ETC)/fcron.deny
chmod 640 $(DESTDIR)$(ETC)/fcron.allow $(DESTDIR)$(ETC)/fcron.deny
chown $(ROOTNAME) $(DESTDIR)$(ETC)/fcron.conf
chgrp $(GROUPNAME) $(DESTDIR)$(ETC)/fcron.conf
chmod 640 $(DESTDIR)$(ETC)/fcron.conf
ifeq ($(USEPAM), 1)
$(SRCDIR)/script/install-pam-conf $(SRCDIR) $(DESTDIR)$(ETC) $(ROOTNAME) $(ROOTGROUP) "$(INSTALL)"
endif
# in order to get correct rights when upgrading :
find $(DESTDIR)$(FCRONTABS) -type f \( -name "*.orig" -a ! -name "$(ROOTNAME).orig" -a ! -name "$(SYSFCRONTAB).orig" \) -exec chown $(USERNAME) {} \; -exec chgrp $(GROUPNAME) {} \; -exec chmod 640 {} \;
find $(DESTDIR)$(FCRONTABS) -type f \( -name "$(ROOTNAME).orig" -o -name "$(SYSFCRONTAB).orig" \) -exec chown $(ROOTNAME) {} \; -exec chgrp $(GROUPNAME) {} \; -exec chmod 600 {} \;
# First, remove the potential fcrontab.sig, or it could not get removed by fcronsighup if it becomes root:root 600
rm -f $(DESTDIR)$(FCRONTABS)/fcrontab.sig
find $(DESTDIR)$(FCRONTABS) -type f ! -name "*.orig" -exec chown $(ROOTNAME) {} \; -exec chgrp $(ROOTGROUP) {} \; -exec chmod 600 {} \;
$(MAKE) -C doc perms
# strip executables
strip: install-staged
ifneq ($(DEBUG), 1)
strip $(DESTDIR)$(DESTSBIN)/fcron
strip $(DESTDIR)$(DESTBIN)/fcrontab
strip $(DESTDIR)$(DESTBIN)/fcronsighup
ifeq ($(FCRONDYN), 1)
strip $(DESTDIR)$(DESTBIN)/fcrondyn
endif
endif
install-boot: install
$(SRCDIR)/script/boot-install "$(INSTALL) -o $(ROOTNAME)" $(DESTSBIN) $(DEBUG) $(FCRONTABS) $(ANSWERALL) $(SRCDIR)
install-restart: install
ifeq ($(DEBUG), 1)
kill -TERM `pidof fcron` || exit 0
/etc/init.d/fcron restart
endif
uninstall:
rm -f $(DESTDIR)$(DESTSBIN)/fcron
rm -f $(DESTDIR)$(DESTBIN)/fcrontab
rm -f $(DESTDIR)$(DESTBIN)/fcronsighup
rm -f $(DESTDIR)$(DESTBIN)/fcrondyn
$(MAKE) -C doc uninstall
$(SRCDIR)/script/boot-uninstall
clean:
rm -f *.o core
rm -f fcron fcrontab fcrondyn fcronsighup convert-fcrontab files/fcron.conf
$(MAKE) -C doc clean
ciclean: clean
find ./ -name "*~" -exec rm -f {} \;
rm -fR autom4te*
vclean: ciclean
rm -f config.log config.status config.h config.cache Makefile PREVIOUS_VERSION \
files/fcron.conf script/fcron.init.suse script/fcron.init.systemd \
script/fcron.sh script/sysVinit-launcher
$(MAKE) -C doc clean
files/fcron.conf: $(SRCDIR)/files/fcron.conf.in config.h
if test ! -d files; then mkdir files ; fi
$(SRCDIR)/script/gen-in.pl $(SRCDIR)/files/fcron.conf.in files/fcron.conf ./
updatedoc:
$(MAKE) -C doc doc
indent:
indent -linux -i4 --no-tabs --leave-optional-blank-lines \
--start-left-side-of-comments --procnames-start-lines \
--dont-cuddle-else *.c *.h
configure: configure.in
# update configure script, then Makefile and config.h, and finally
# run make tar using the new Makefile (needed because the version
# is set in the configure.in file)
autoconf
./configure
@($(MAKE) tar && \
echo "---------------------------------------------" && \
echo "Success !" && \
echo "(Please ignore the following make error" && \
echo " and run your latest make command again)" && \
echo "---------------------------------------------" && \
exit 999)
ci: ciclean
# the symbolic links verX_X_X has been created since version 2.9.4
@(find ./ -type f ! -regex '.*RCS.*' ! -regex "$(RCSNOCI)" \
-exec ci -l -Nver`echo $(VERSION) | tr '.' '_'` {} \;)
# ci the doc files
$(MAKE) -C doc ci
tar: configure updatedoc vclean ciclean
echo $(VERSION) > ./VERSION
$(MAKE) -C doc tarclean
@(find ./ -type f ! -regex '.*RCS.*' ! -regex '.*CVS.*' ! -regex '.*\.git.*' ! -regex '.*debug/.*'| \
sed -e "s:^\./:fcron-$(VERSION)/:" > MANIFEST)
@(cd ..; ln -s fcron fcron-$(VERSION))
(cd ..; tar -czvf fcron-$(VERSION).src.tar.gz `cat fcron/MANIFEST`)
@(cd ..; rm -f fcron-$(VERSION))
@(cd ..; mv -f fcron-$(VERSION).src.tar.gz old-fcron-pkg/)

View File

@ -1,2 +0,0 @@
See readme.txt in directory doc/en/txt/
or readme.html in directory doc/en/HTML/.

View File

@ -1 +0,0 @@
3.2.0

View File

@ -1,127 +0,0 @@
/*
* FCRON - periodic command scheduler
*
* Copyright 2000-2014 Thibault Godouet <fcron@free.fr>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* The GNU General Public License can also be found in the file
* `LICENSE' that comes with the fcron source distribution.
*/
#include "fcrontab.h"
#include "allow.h"
int
in_file(char *str, char *file)
/* return -1 if file doesn't exist
* 0 if string is not in file,
* 1 if it is in file
* and 2 if file contains "all" string */
{
char buf[LINE_LEN];
FILE *f = NULL;
char *start = NULL;
if ((f = fopen(file, "r")) == NULL) {
if (errno == ENOENT)
/* file does not exist */
return -1;
else
die_e("could not open %s", file);
}
while (fgets(buf, sizeof(buf), f) != NULL) {
/* skip leading and trailing blanks, comments */
start = buf;
Skip_blanks(start);
if (*start == '#' || *start == '\0')
continue;
remove_blanks(start);
if (strcmp(str, start) == 0) {
xfclose_check(&f, file);
return 1;
}
if (strcmp(start, "all") == 0) {
xfclose_check(&f, file);
return 2;
}
}
xfclose_check(&f, file);
/* if execution gets here, string is not in file */
return 0;
}
int
is_allowed(char *user)
/* return 1 if user is allowed to use this software
* otherwise return 0 */
{
int allow = 0;
int deny = 0;
/* check if user is in passwd file */
if (getpwnam(user) != NULL) {
/* check if user is in fcron.allow and/or in fcron.deny files */
allow = in_file(user, fcronallow);
deny = in_file(user, fcrondeny);
/* in_file() returns:
* -1 if file doesn't exist
* 0 if string is not in file,
* 1 if it is in file
* and 2 if file contains "all" string */
if (allow == -1 && deny == -1)
/* neither fcron.allow nor fcron.deny exist :
* we consider that user is allowed */
return 1;
if (allow == -1 && deny == 0)
return 1;
if (deny == -1 && allow == 1)
return 1;
if (allow == 1 && deny != 1)
return 1;
if (allow == 2 && deny <= 0)
return 1;
}
/* if we gets here, user is not allowed */
#ifdef WITH_AUDIT
{
int audit_fd = audit_open();
audit_log_user_message(audit_fd, AUDIT_USER_START, "fcron deny",
NULL, NULL, NULL, 0);
xclose_check(&audit_fd, "audit");
}
#endif
return 0;
}

View File

@ -1,31 +0,0 @@
/*
* FCRON - periodic command scheduler
*
* Copyright 2000-2014 Thibault Godouet <fcron@free.fr>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* The GNU General Public License can also be found in the file
* `LICENSE' that comes with the fcron source distribution.
*/
#ifndef __ALLOW_H__
#define __ALLOW_H__
/* functions prototypes */
extern int is_allowed(char *user);
#endif /* __ALLOW_H__ */

View File

@ -1,124 +0,0 @@
/*
* Copyright (c) 1989 The Regents of the University of California.
* All rights reserved.
*
* This code is derived from software contributed to Berkeley by
* Paul Vixie.
*
* Redistribution and use in source and binary forms are permitted
* provided that the above copyright notice and this paragraph are
* duplicated in all such forms and that any documentation,
* advertising materials, and other materials related to such
* distribution and use acknowledge that the software was developed
* by the University of California, Berkeley. The name of the
* University may not be used to endorse or promote products derived
* from this software without specific prior written permission.
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*
* @(#)bitstring.h 5.2 (Berkeley) 4/4/90
*/
typedef unsigned char bitstr_t;
/* internal macros */
/* byte of the bitstring bit is in */
/* in other words, _bit_byte(bitnum) is the index (starting from 0) of the byte
* which contain the bit number 'bitnum' */
#define _bit_byte(bit) \
((bit) >> 3)
/* mask for the bit within its byte */
#define _bit_mask(bit) \
(1 << ((bit)&0x7))
/* external macros */
/* bytes in a bitstring of nbits bits */
#define bitstr_size(nbits) \
((((nbits) - 1) >> 3) + 1)
/* allocate a bitstring */
#define bit_alloc(nbits) \
(bitstr_t *)malloc(1, \
(unsigned int)bitstr_size(nbits) * sizeof(bitstr_t))
/* allocate a bitstring on the stack */
#define bit_decl(name, nbits) \
(name)[bitstr_size(nbits)]
/* is bit N of bitstring name set? */
#define bit_test(name, bit) \
((name)[_bit_byte(bit)] & _bit_mask(bit))
/* set bit N of bitstring name */
#define bit_set(name, bit) \
(name)[_bit_byte(bit)] |= _bit_mask(bit)
/* clear bit N of bitstring name */
#define bit_clear(name, bit) \
(name)[_bit_byte(bit)] &= ~_bit_mask(bit)
/* clear bits start ... stop in bitstring */
#define bit_nclear(name, start, stop) { \
register bitstr_t *_name = name; \
register int _start = start, _stop = stop; \
register int _startbyte = _bit_byte(_start); \
register int _stopbyte = _bit_byte(_stop); \
if (_startbyte == _stopbyte) { \
_name[_startbyte] &= ((0xff >> (8 - (_start&0x7))) | \
(0xff << ((_stop&0x7) + 1))); \
} else { \
_name[_startbyte] &= 0xff >> (8 - (_start&0x7)); \
while (++_startbyte < _stopbyte) \
_name[_startbyte] = 0; \
_name[_stopbyte] &= 0xff << ((_stop&0x7) + 1); \
} \
}
/* set bits start ... stop in bitstring */
#define bit_nset(name, start, stop) { \
register bitstr_t *_name = name; \
register int _start = start, _stop = stop; \
register int _startbyte = _bit_byte(_start); \
register int _stopbyte = _bit_byte(_stop); \
if (_startbyte == _stopbyte) { \
_name[_startbyte] |= ((0xff << (_start&0x7)) & \
(0xff >> (7 - (_stop&0x7)))); \
} else { \
_name[_startbyte] |= 0xff << ((_start)&0x7); \
while (++_startbyte < _stopbyte) \
_name[_startbyte] = 0xff; \
_name[_stopbyte] |= 0xff >> (7 - (_stop&0x7)); \
} \
}
/* find first bit clear in name */
#define bit_ffc(name, nbits, value) { \
register bitstr_t *_name = name; \
register int _byte, _nbits = nbits; \
register int _stopbyte = _bit_byte(_nbits), _value = -1; \
for (_byte = 0; _byte <= _stopbyte; ++_byte) \
if (_name[_byte] != 0xff) { \
_value = _byte << 3; \
for (_stopbyte = _name[_byte]; (_stopbyte&0x1); \
++_value, _stopbyte >>= 1); \
break; \
} \
*(value) = _value; \
}
/* find first bit set in name */
#define bit_ffs(name, nbits, value) { \
register bitstr_t *_name = name; \
register int _byte, _nbits = nbits; \
register int _stopbyte = _bit_byte(_nbits), _value = -1; \
for (_byte = 0; _byte <= _stopbyte; ++_byte) \
if (_name[_byte]) { \
_value = _byte << 3; \
for (_stopbyte = _name[_byte]; !(_stopbyte&0x1); \
++_value, _stopbyte >>= 1); \
break; \
} \
*(value) = _value; \
}

View File

@ -1,74 +0,0 @@
/*
* FCRON - periodic command scheduler
*
* Copyright 2000-2014 Thibault Godouet <fcron@free.fr>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* The GNU General Public License can also be found in the file
* `LICENSE' that comes with the fcron source distribution.
*/
#include "global.h"
#include "cl.h"
#include "mem.h"
cl_t *
dups_cl(cl_t * orig)
/* Duplicate a line, including the strings it points to. */
{
cl_t *cl = NULL;
Alloc(cl, cl_t);
/* copy the structure */
*cl = *orig;
/* don't assume any link to a file or belonging to a list */
cl->cl_file = NULL;
cl->cl_next = NULL;
/* we just copied the pointers of orig to cl, but we didn't
* make a copy of the strings yet.
* Reset the pointers, then copy the strings */
cl->cl_shell = NULL;
Set(cl->cl_shell, orig->cl_shell);
cl->cl_runas = NULL;
Set(cl->cl_runas, orig->cl_runas);
debug("%s: Set cl->cl_runas=%s", __func__,
(cl->cl_runas == NULL) ? "null" : cl->cl_runas);
cl->cl_mailto = NULL;
Set(cl->cl_mailto, orig->cl_mailto);
cl->cl_tz = NULL;
Set(cl->cl_tz, orig->cl_tz);
return cl;
}
void
free_line(cl_t * cl)
/* free a line, including its fields */
{
if (cl != NULL) {
Free_safe(cl->cl_shell);
Free_safe(cl->cl_runas);
Free_safe(cl->cl_mailto);
Free_safe(cl->cl_tz);
Free_safe(cl);
}
}

View File

@ -1,75 +0,0 @@
/*
* FCRON - periodic command scheduler
*
* Copyright 2000-2014 Thibault Godouet <fcron@free.fr>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* The GNU General Public License can also be found in the file
* `LICENSE' that comes with the fcron source distribution.
*/
/* cl: Cron Line type and associated functions */
#ifndef __CL_H__
#define __CL_H__
/*
* TYPES
*/
#define OPTION_SIZE 4 /* number of bytes to hold the cl_option bit array */
#define LAVG_SIZE 3
/* warning : do not change the order of the members of this structure
* because some tests made are dependent to that order */
/* warning : if you change a field type, you may have to also make some changes
* in the save/load binary fcrontab functions */
typedef struct cl_t {
struct cl_t *cl_next;
struct cf_t *cl_file; /* the file in which the line is */
char *cl_shell; /* shell command */
char *cl_runas; /* determine permissions of the job */
char *cl_mailto; /* mail output to cl_mailto */
char *cl_tz; /* time zone of the line */
unsigned long cl_id; /* line's unique id number */
time_t cl_until; /* timeout of the wait for a lavg value */
time_t cl_first; /* initial delay preserved for volatile entries */
time_t cl_nextexe; /* time and date of the next execution */
long int cl_timefreq; /* Run every n seconds */
unsigned short cl_remain; /* remaining until next execution */
unsigned short cl_runfreq; /* Run once every n matches(=1 for %-lines) */
unsigned char cl_option[OPTION_SIZE]; /* line's option (see option.h) */
unsigned char cl_lavg[LAVG_SIZE]; /*load averages needed (1,5,15 mins) */
unsigned char cl_numexe; /* entries in queues & running processes */
char cl_nice; /* nice value to control priority */
unsigned char cl_jitter; /* run randomly late up to jitter seconds */
/* see bitstring(3) man page for more details */
bitstr_t bit_decl(cl_mins, 60); /* 0-59 */
bitstr_t bit_decl(cl_hrs, 24); /* 0-23 */
bitstr_t bit_decl(cl_days, 32); /* 1-31 */
bitstr_t bit_decl(cl_mons, 12); /* 0-11 */
bitstr_t bit_decl(cl_dow, 8); /* 0-7, 0 and 7 are both Sunday */
} cl_t;
/*
* functions prototypes
*/
/* duplicate a line, including strings it points to */
cl_t *dups_cl(cl_t * orig);
void free_line(cl_t * cl);
#endif /* __CL_H__ */

File diff suppressed because it is too large Load Diff

View File

@ -1,34 +0,0 @@
/*
* FCRON - periodic command scheduler
*
* Copyright 2000-2014 Thibault Godouet <fcron@free.fr>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* The GNU General Public License can also be found in the file
* `LICENSE' that comes with the fcron source distribution.
*/
#ifndef __CONF_H__
#define __CONF_H__
/* functions prototypes */
extern void reload_all(const char *dir_name);
extern void synchronize_dir(const char *dir_name, int is_system_startup);
extern void delete_file(const char *user_name);
extern void save_file(struct cf_t *file_name);
#endif /* __CONF_H__ */

View File

@ -1,523 +0,0 @@
/*
* FCRON - periodic command scheduler
*
* Copyright 2000-2014 Thibault Godouet <fcron@free.fr>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* The GNU General Public License can also be found in the file
* `LICENSE' that comes with the fcron source distribution.
*/
/* *********************************************************** */
/* This file is destined to be edited to match your preference */
/* *********************************************************** */
/* ****************************************************************** */
/* ****************************************************************** */
/* beginning of configurable stuff ********************************** */
#define DEFAULT_JOB_PATH "/usr/bin:/bin" /* Default PATH to use when running jobs*/
#define SENDMAIL_ARGS "-Ffcron", "-odi" /* args of mail command */
/* *** time *** */
#define FIRST_SLEEP 20 /* fcron sleep at least this time after startup
* before executing a job, to avoid to run jobs
* during system boot */
#define LAVG_SLEEP 30 /* the time we sleep when some jobs are in lavg queue */
#define SAVE 1800 /* save every n seconds */
/* *** behavior *** */
#define SERIAL_ONCE 0 /* can a job be several times in the serial queue at
* the same moment ? */
#define LAVG_ONCE 1 /* can a job be several times in the lavg queue at
* the same moment ? */
#define MAXYEAR_SCHEDULE_TIME 10 /* a job can't be scheduled further than
* now + MAXYEAR_SCHEDULE years. This is used
* to prevent infinite loop on corrupted lines */
/* *** memory *** */
#define ENVVAR_INITIAL_SIZE 10 /* initial number of possible env var for a job
* if more env var are required,
* fcron will have to realloc() more memory */
#define ENVVAR_GROW_SIZE 5 /* this is the number of entries that will be
* added to env_list each time it has to grow
* up */
#define EXE_INITIAL_SIZE 6 /* initial number of possible running job
* if more jobs have to be run simultaneously,
* fcron will have to realloc() more memory */
#define EXE_GROW_SIZE 5 /* this is the number of entries that will be
* added to exe_array each time it has to grow
* up */
#define SERIAL_QUEUE_MAX 30 /* if serial queue contains this number of entries,
* the next serial job to be executed will be run
* non-serially each time a serial job is added */
#define SERIAL_INITIAL_SIZE 10 /* initial number of possible serial job. If
* more jobs have to be in queue simultaneously,
* fcron will have to realloc() more memory */
#define SERIAL_GROW_SIZE 10 /* this is the number of entries that will be
* added to serial queue each time it has to grow
* up */
#define SERIAL_MAX_RUNNING 1 /* fcron will run (by default) no more than this
* number of serial job simultaneously.
* (this may be overridden by fcron option -m */
#define LAVG_QUEUE_MAX 30 /* if lavg queue contains this number of entries,
* the next lavg job to be executed will be run
* before a new lavg job is added */
#define LAVG_INITIAL_SIZE 10 /* initial number of possible lavg job. If
* more jobs have to be in queue simultaneously,
* fcron will have to calloc() more memory */
#define LAVG_GROW_SIZE 10 /* this is the number of entries that will be
* added to lavg queue each time it has to grow
* up */
#define MAXENTRIES 1024 /* max lines in non-root fcrontabs */
#define LINE_LEN 1024 /* max line length in user's config file */
#define USER_NAME_LEN 128 /* max length of a user name */
#define PATH_LEN 512 /* max length of a file path */
#define SOCKET_MSG_LEN 20 /* max length of a socket msg (fcrondyn) */
/* WARNING : do not set this too low, or add some more tests in print_field, print_line,
* etc ... */
#define TERM_LEN 196 /* max nb of char in a term line */
#define MAX_MSG 175 /* max length of a log message */
#define WRITE_BUF_LEN 1024 /* length of the buffer used for saving files to disk */
/* *** socket *** */
#define MAX_CONNECTION 25 /* max simultaneous connection allowed */
#define MAX_IDLE_TIME 600 /* time (in sec) a socket stay idle before being closed */
#define MAX_AUTH_TIME 60 /* time (in sec) before a socket is closed if not auth'ed */
#define MAX_WAIT_TIME 10 /* time (in sec) we wait for data on a socket */
#define MAX_AUTH_FAIL 10 /* auth nobody for some time if more than x fails */
#define AUTH_WAIT 60 /* if too many fails, wait this time (seconds) before auth
* another client */
/* *** system dependent *** */
#define EXIT_ERR 1 /* code returned by fcron/fcrontab on error */
#define EXIT_OK 0 /* code returned on normal exit */
/* Syslog facility and priorities messages will be logged to (see syslog(3)) */
/* NOTE : if you change anything here, check if the doc should not
be updated
*/
#define SYSLOG_FACILITY LOG_CRON
#define EXPLAIN_LEVEL LOG_NOTICE /* informational messages */
#define WARNING_LEVEL LOG_WARNING /* warning messages */
#define COMPLAIN_LEVEL LOG_ERR /* error messages */
#define DEBUG_LEVEL LOG_DEBUG /* only used when DEBUG is defined */
/* end of configurable stuff **************************************** */
/* ****************************************************************** */
/* ****************************************************************** */
/* ****************************************************************** */
/* ****************************************************************** */
/* *** options which are set by configure script ******************** */
/* The following should not be edited manually (use configure options)
* If you must do it, BEWARE : some of the following is also defined
* in the Makefile, so you must modify config.h AND Makefile in order
* to set the same values in the two files. */
#undef VERSION_QUOTED
#undef COPYRIGHT_QUOTED
#undef CFLAGS
/* ****************************************************************** */
/* *** paths *** */
#undef PROC
/* ****************************************************************** */
/* *** Compilation options *** */
#undef USE_SENDMAIL
/* 1 if we want to compile and install fcrondyn */
#undef FCRONDYN
#undef NOLOADAVG
/* 1 if you want debug mode */
#undef DEBUG
/* 1 if you want foreground mode by default */
#undef FOREGROUND
#undef RUN_NON_PRIVILEGED
/* Define if we should use sete[ug]id() funcs */
#undef USE_SETE_ID
/* root name and group */
#undef ROOTNAME
#undef ROOTGROUP
/* user and group name to run under */
#undef USERNAME
#undef GROUPNAME
/* special user for the system fcrontab */
#undef SYSFCRONTAB
/* ****************************************************************** */
/* *** Types *** */
/* Define to empty if the keyword does not work. */
#undef const
/* Define to `int' if <sys/types.h> doesn't define. */
#undef gid_t
/* Define to `int' if <sys/types.h> doesn't define. */
#undef pid_t
/* Define to `unsigned' if <sys/types.h> doesn't define. */
#undef size_t
/* Define to `int' if <sys/types.h> doesn't define. */
#undef uid_t
/* Define as the return type of signal handlers (int or void). */
#undef RETSIGTYPE
/* Define if your struct nlist has an n_un member. */
#undef NLIST_NAME_UNION
/* Define for DGUX with <sys/dg_sys_info.h>. */
#undef DGUX
/* Define for Encore UMAX. */
#undef UMAX
/* Define for Encore UMAX 4.3 that has <inq_status/cpustats.h>
instead of <sys/cpustats.h>. */
#undef UMAX4_3
/* Define on System V Release 4. */
#undef SVR4
/* ****************************************************************** */
/* *** Functions *** */
/* Define if you have the crypt function. */
#undef HAVE_CRYPT
/* Define if you have the flock function. */
#undef HAVE_FLOCK
/* Define if you have the lockf function. */
#undef HAVE_LOCKF
/* Define if your system has its own `getloadavg' function. */
#undef HAVE_GETLOADAVG
/* Define if the `getloadavg' function needs to be run setuid or setgid. */
#undef GETLOADAVG_PRIVILEGED
/* Define if you have the getcwd function. */
#undef HAVE_GETCWD
/* Define if you have the gethostname function. */
#undef HAVE_GETHOSTNAME
/* Define if you have the getopt_long function. */
#undef HAVE_GETOPT_LONG
/* Define if you have the getpeereid function. */
#undef HAVE_GETPEEREID
/* Define if you have the getpeerucred function. */
#undef HAVE_GETPEERUCRED
/* Define if you have the getspnam function. */
#undef HAVE_GETSPNAM
/* Define if you have the gettimeofday function. */
#undef HAVE_GETTIMEOFDAY
/* Define if you have the kstat* functions. */
#undef HAVE_KSTAT
/* Define if you have the mkstemp function. */
#undef HAVE_MKSTEMP
/* Define if you have the mktime function. */
#undef HAVE_MKTIME
/* Define if you have the putenv function. */
#undef HAVE_PUTENV
/* Define if (struct sockaddr) has an sa_len field. */
#undef HAVE_SA_LEN
/* Define if you have the setenv function. */
#undef HAVE_SETENV
/* Define if you have the setegid function. */
#undef HAVE_SETEGID
/* Define if you have the seteuid function. */
#undef HAVE_SETEUID
/* Define if you have the setlinebuf function. */
#undef HAVE_SETLINEBUF
/* Define if you have the setpriority function. */
#undef HAVE_SETPRIORITY
/* Define if you have the strerror function. */
#undef HAVE_STRERROR
/* Define if you have the setresgid function. */
#undef HAVE_SETRESGID
/* Define if you have the setresuid function. */
#undef HAVE_SETRESUID
/* Define if you have the signal function. */
#undef HAVE_SIGNAL
/* Define if you have the sigset function. */
#undef HAVE_SIGSET
/* Define if you have the strftime function. */
#undef HAVE_STRFTIME
/* Define if you have the wait3 system call. */
#undef HAVE_WAIT3
/* ****************************************************************** */
/* *** Headers *** */
/* Define if you have the ANSI C header files. */
#undef STDC_HEADERS
/* Define if you can safely include both <sys/time.h> and <time.h>. */
#undef TIME_WITH_SYS_TIME
/* Define if your <sys/time.h> declares struct tm. */
#undef TM_IN_SYS_TIME
/* Define if you have the <cred.h> header file. */
#undef HAVE_CRED_H
/* Define if you have the <crypt.h> header file. */
#undef HAVE_CRYPT_H
/* Define if you have the <dirent.h> header file. */
#undef HAVE_DIRENT_H
/* Define if you have the <errno.h> header file. */
#undef HAVE_ERRNO_H
/* Define if you have the <fcntl.h> header file. */
#undef HAVE_FCNTL_H
/* Define if you have the <getopt.h> header file. */
#undef HAVE_GETOPT_H
/* Define if you have the <grp.h> header file. */
#undef HAVE_GRP_H
/* Define if you have the <history.h> header file. */
#undef HAVE_HISTORY_H
/* Define if you have the <libaudit.h> header file. */
#undef HAVE_LIBAUDIT_H
/* Define if you have the <readline.h> header file. */
#undef HAVE_READLINE_H
/* Define if you have the <readline/history.h> header file. */
#undef HAVE_READLINE_HISTORY_H
/* Define if you have the <readline/readline.h> header file. */
#undef HAVE_READLINE_READLINE_H
/* Define if you have the <limits.h> header file. */
#undef HAVE_LIMITS_H
/* Define if you have the <mach/mach.h> header file. */
#undef HAVE_MACH_MACH_H
/* Define if you have the <ndir.h> header file. */
#undef HAVE_NDIR_H
/* Define if you have the <pam/pam_appl.h> header file. */
#undef HAVE_PAM_PAM_APPL_H
/* Define if you have <shadow.h>. */
#undef HAVE_SHADOW_H
/* Define if you have the unsetenv function. */
#undef HAVE_UNSETENV
/* Define if you have <nlist.h>. */
#undef NLIST_STRUCT
/* Define if you have the <security/pam_appl.h> header file. */
#undef HAVE_SECURITY_PAM_APPL_H
/* Define if you have the <stdarg.h> header file. */
#undef HAVE_STDARG_H
/* Define if you have the <strings.h> header file. */
#undef HAVE_STRINGS_H
/* Define if you have the <sys/cred.h> header file. */
#undef HAVE_SYS_CRED_H
/* Define if you have the <sys/dir.h> header file. */
#undef HAVE_SYS_DIR_H
/* Define if you have the <sys/fcntl.h> header file. */
#undef HAVE_SYS_FCNTL_H
/* Define if you have the <sys/file.h> header file. */
#undef HAVE_SYS_FILE_H
/* Define if you have the <sys/ioctl.h> header file. */
#undef HAVE_SYS_IOCTL_H
/* Define if you have the <sys/ndir.h> header file. */
#undef HAVE_SYS_NDIR_H
/* Define if you have the <sys/resource.h> header file. */
#undef HAVE_SYS_RESOURCE_H
/* Define if you have the <sys/socket.h> header file. */
#undef HAVE_SYS_SOCKET_H
/* Define if you have the <sys/time.h> header file. */
#undef HAVE_SYS_TIME_H
/* Define if you have the <sys/types.h> header file. */
#undef HAVE_SYS_TYPES_H
/* Define if you have the <sys/ucred.h> header file. */
#undef HAVE_SYS_UCRED_H
/* Define if you have the <sys/un.h> header file. */
#undef HAVE_SYS_UN_H
/* Define if you have <sys/wait.h> that is POSIX.1 compatible. */
#undef HAVE_SYS_WAIT_H
/* Define if you have the <syslog.h> header file. */
#undef HAVE_SYSLOG_H
/* Define if you have the <termios.h> header file. */
#undef HAVE_TERMIOS_H
/* Define if you have the <ucred.h> header file. */
#undef HAVE_UCRED_H
/* Define if you have the <unistd.h> header file. */
#undef HAVE_UNISTD_H
/* ****************************************************************** */
/* *** Libraries *** */
/* Define if you have the audit library (-laudit). */
#undef HAVE_LIBAUDIT
/* Define if you have the dgc library (-ldgc). */
#undef HAVE_LIBDGC
/* Define if you have the pam library (-lpam). */
#undef HAVE_LIBPAM
/* Define if you have the readline library. */
#undef HAVE_LIBREADLINE
/* Define if you have the readline history library. */
#undef HAVE_READLINE_HISTORY
/* Have audit trails (libaudit) support */
#undef WITH_AUDIT
/* Have SE Linux support */
#undef WITH_SELINUX
/* Define if you have the xnet library (-lxnet). */
#undef HAVE_LIBXNET
/* some systems (*BSD, ...) use O_FSYNC instead of O_SYNC for open() */
#ifdef HAVE_FCNTL_H
#include <fcntl.h>
#elif HAVE_SYS_FCNTL_H
#include <sys/fcntl.h>
#endif
#ifndef O_SYNC
#define O_SYNC O_FSYNC
#endif
/* ****************************************************************** */
/* *** Size of *** */
/* These SIZEOF_* constants are defined by the AC_CHECK_SIZEOF macro */
#undef SIZEOF_TIME_T
#undef SIZEOF_PID_T
#undef SIZEOF_SHORT_INT
#undef SIZEOF_INT
#undef SIZEOF_LONG_INT
#undef SIZEOF_LONG_LONG_INT
/* We need all these types in global.h to know which conversion string we whould
* use when reading a pid_t or a time_t */
#ifndef SIZEOF_PID_T
#error "sizeof pid_t unknown."
#endif
#ifndef SIZEOF_TIME_T
#error "sizeof time_t unknown."
#endif
#ifndef SIZEOF_SHORT_INT
#error "sizeof short int unknown."
#endif
#ifndef SIZEOF_INT
#error "sizeof int unknown."
#endif
#ifndef SIZEOF_LONG_INT
#error "sizeof long int unknown."
#endif
#ifndef SIZEOF_LONG_LONG_INT
#error "sizeof long long int unknown."
#endif

9631
fcron-3.2.0/configure vendored

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,289 +0,0 @@
/*
* FCRON - periodic command scheduler
*
* Copyright 2000-2014 Thibault Godouet <fcron@free.fr>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* The GNU General Public License can also be found in the file
* `LICENSE' that comes with the fcron source distribution.
*/
#include "convert-fcrontab.h"
#include "mem.h"
void info(void);
void usage(void);
void convert_file(char *file_name);
char *read_str(FILE * f, char *buf, int max);
void delete_file(cf_t * file);
char *cdir = FCRONTABS; /* the dir where are stored users' fcrontabs */
/* needed by log part : */
char *prog_name = NULL;
char foreground = 1;
pid_t daemon_pid = 0;
uid_t rootuid = 0;
gid_t rootgid = 0;
void
info(void)
/* print some informations about this program :
* version, license */
{
fprintf(stderr,
"convert-fcrontab " VERSION_QUOTED "\n"
"Copyright " COPYRIGHT_QUOTED " Thibault Godouet <fcron@free.fr>\n"
"This program is free software distributed WITHOUT ANY WARRANTY.\n"
"See the GNU General Public License for more details.\n"
"\n"
"WARNING: this program is not supposed to be installed on the "
"system. It is only used at installation time to convert the "
"the binary fcrontabs in the old format (fcron < 1.1.0, which "
"was published in 2001) to the present one.");
exit(EXIT_OK);
}
void
usage()
/* print a help message about command line options and exit */
{
fprintf(stderr, "\nconvert-fcrontab " VERSION_QUOTED "\n\n"
"convert-fcrontab -h\n"
"convert-fcrontab -V\n"
"convert-fcrontab user\n"
" Update the fcrontab of \"user\" to fit the new binary format.\n"
"\n"
"WARNING: this program is not supposed to be installed on the "
"system. It is only used at installation time to convert the "
"the binary fcrontabs in the old format (fcron < 1.1.0, which "
"was published in 2001) to the present one.");
exit(EXIT_ERR);
}
char *
read_str(FILE * f, char *buf, int max)
/* return a pointer to string read from file f
* if it is non-zero length */
{
int i;
for (i = 0; i < max; i++)
if ((buf[i] = fgetc(f)) == '\0')
break;
buf[max - 1] = '\0';
if (strlen(buf) == 0)
return NULL;
else
return strdup2(buf);
}
void
delete_file(cf_t * file)
/* free a file if user_name is not null
* otherwise free all files */
{
cl_t *line = NULL;
cl_t *cur_line = NULL;
/* free lines */
cur_line = file->cf_line_base;
while ((line = cur_line) != NULL) {
cur_line = line->cl_next;
Free_safe(line->cl_shell);
Free_safe(line->cl_mailto);
Free_safe(line->cl_runas);
Free_safe(line);
}
/* free env variables */
env_list_destroy(file->cf_env_list);
/* finally free file itself */
Free_safe(file->cf_user);
Free_safe(file);
}
void
convert_file(char *file_name)
/* this functions is a mix of read_file() from version 1.0.3 and save_file(),
* so you can read more comments there */
{
cf_t *file = NULL;
cl_t *line = NULL;
char *env = NULL;
FILE *f = NULL;
char buf[LINE_LEN];
time_t t_save = 0;
struct stat file_stat;
explain("Converting %s's fcrontab ...", file_name);
Alloc(file, cf_t);
/* open file */
if ((f = fopen(file_name, "r")) == NULL)
die_e("Could not read %s", file_name);
if (fstat(fileno(f), &file_stat) != 0)
die_e("Could not stat %s", file_name);
bzero(buf, sizeof(buf));
if (fgets(buf, sizeof(buf), f) == NULL ||
strncmp(buf, "fcrontab-017\n", sizeof("fcrontab-017\n")) != 0) {
error("File %s is not valid: ignored.", file_name);
error("Maybe this file has been generated by a too old version "
"of fcron ( <= 0.9.4), or is already in the new binary format.");
error("In this case, you should reinstall it using fcrontab"
" (but be aware that you may lose some data as the last "
"execution time and date as if you run a fcrontab -z -n).");
exit(EXIT_ERR);
}
if ((file->cf_user = read_str(f, buf, sizeof(buf))) == NULL)
die_e("Cannot read user's name");
if (fscanf(f, "%" ATTR_SIZE_TIMET "d", CAST_TIMET_PTR & t_save) != 1)
error("could not get time and date of saving");
/* read env variables */
while ((env = read_str(f, buf, sizeof(buf))) != NULL) {
env_list_putenv(file->cf_env_list, env, 1);
Free_safe(env);
}
/* read lines */
Alloc(line, cl_t);
while (fread(line, sizeof(cl_t), 1, f) == 1) {
if ((line->cl_shell = read_str(f, buf, sizeof(buf))) == NULL) {
error("Line is not valid (empty shell command) : ignored");
continue;
}
if ((line->cl_runas = read_str(f, buf, sizeof(buf))) == NULL) {
error("Line is not valid (empty runas field) : ignored");
continue;
}
if ((line->cl_mailto = read_str(f, buf, sizeof(buf))) == NULL) {
error("Line is not valid (empty mailto field) : ignored");
continue;
}
line->cl_next = file->cf_line_base;
file->cf_line_base = line;
Alloc(line, cl_t);
}
Free_safe(line);
xfclose(&f);
/* open a temp file in write mode and truncate it */
strcpy(buf, "tmp_");
strncat(buf, file_name, sizeof(buf) - sizeof("tmp_") - 1);
buf[sizeof(buf) - 1] = '\0';
/* everything's ok : we can override the src file safely */
if (rename(buf, file_name) != 0)
error_e("Could not rename %s to %s", buf, file_name);
save_file_safe(file, file_name, "convert-fcrontab", file_stat.st_uid,
file_stat.st_gid, t_save);
delete_file(file);
}
int
main(int argc, char *argv[])
{
int c;
extern char *optarg;
extern int optind, opterr, optopt;
char *user_to_update = NULL;
rootuid = get_user_uid_safe(ROOTNAME);
rootgid = get_group_gid_safe(ROOTGROUP);
if (strrchr(argv[0], '/') == NULL)
prog_name = argv[0];
else
prog_name = strrchr(argv[0], '/') + 1;
/* constants and variables defined by command line */
while (1) {
c = getopt(argc, argv, "chV");
if (c == EOF)
break;
switch (c) {
case 'V':
info();
break;
case 'h':
usage();
break;
case 'c':
Set(fcronconf, optarg);
break;
case ':':
fprintf(stderr, "(setopt) Missing parameter");
usage();
case '?':
usage();
default:
fprintf(stderr, "(setopt) Warning: getopt returned %c", c);
}
}
if (optind >= argc || argc != 2)
usage();
/* parse fcron.conf */
read_conf();
user_to_update = strdup2(argv[optind]);
if (chdir(cdir) != 0)
die_e("Could not change dir to " FCRONTABS);
convert_file(user_to_update);
exit(EXIT_OK);
}

View File

@ -1,39 +0,0 @@
/*
* FCRON - periodic command scheduler
*
* Copyright 2000-2014 Thibault Godouet <fcron@free.fr>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* The GNU General Public License can also be found in the file
* `LICENSE' that comes with the fcron source distribution.
*/
#ifndef __CONVERT_FCRONTAB_H__
#define __CONVERT_FCRONTAB_H__
/* We create a .h (even if empty !) because we have a generic rule
in Makefile to create .o files which needs the corresponding .h to exist. */
#include "global.h"
/* needed for parsing a conf file */
#include "fcronconf.h"
extern uid_t rootuid;
extern gid_t rootgid;
#endif /* __CONVERT_FCRONTAB_H__ */

File diff suppressed because it is too large Load Diff

View File

@ -1,54 +0,0 @@
/*
* FCRON - periodic command scheduler
*
* Copyright 2000-2014 Thibault Godouet <fcron@free.fr>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* The GNU General Public License can also be found in the file
* `LICENSE' that comes with the fcron source distribution.
*/
#ifndef __DATABASE_H__
#define __DATABASE_H__
/* functions prototypes */
extern void test_jobs(void);
extern void wait_chld(void);
extern void wait_all(int *counter);
extern time_t time_to_sleep(time_t lim);
extern time_t check_lavg(time_t lim);
extern void set_next_exe(struct cl_t *line, char option, int info_fd);
#define NO_GOTO 1 /* set_next_exe() : no goto_non_matching() */
#define NO_GOTO_LOG 2 /* set_next_exe() : NO_GOTO but also log nextexe time */
#define FROM_CUR_NEXTEXE 4 /* set_next_exe() : compute from nextexe, not now */
extern void set_next_exe_notrun(struct cl_t *line, char context);
#define LAVG 1 /* set_next_exe_notrun() : context */
#define SYSDOWN 2 /* set_next_exe_notrun() : context */
#define QUEUE_FULL 3 /* set_next_exe_notrun() : context */
#define SYSDOWN_RUNATREBOOT 4 /* set_next_exe_notrun() : context */
extern void mail_notrun(struct cl_t *line, char context, struct tm *since);
extern void mail_notrun_time_t(cl_t * line, char context, time_t since_time_t);
extern job_t *job_queue_remove(cl_t * line);
extern void insert_nextexe(struct cl_t *line);
extern void run_normal_job(cl_t * line, int fd);
extern void add_serial_job(struct cl_t *line, int fd);
extern void add_lavg_job(struct cl_t *line, int fd);
extern void run_serial_job(void);
extern int switch_timezone(const char *orig_tz, const char *dest_tz);
extern void switch_back_timezone(const char *orig_tz);
#endif /* __DATABASE_H__ */

View File

@ -1,21 +0,0 @@
fcron for Debian
-----------------------------------------------------------------
While in principle this would be possible, the Debian package of fcron does
not try to supersede cron. Note, however, that it has to play dirty with
anacron so as to hijack control of /etc/cron.{daily,weekly,monthly} from
cron even if anacron is not installed in the system.
This is done symlinking /usr/sbin/anacron to /bin/true, and unfortunately
causes the fcron package to conflict with the anacron package. If you just
removed (as opposed to purging) the anacron package to install fcron,
anacron's initscript might still try to activate anacron. This is harmless,
do NOT file bugs against anacron because of it!
I'm working with upstream to make fcron more secure (although it looks
fairly secure as is). If you don't want to worry about any possible
security holes, remove the suid permission from fcrontab (using either
suidregister or dpkg-statoverride), and do not install fcrontabs for
anyone other than root.
-- Henrique M. Holschuh <hmh@debian.org>, Mon, 11 Dec 2000 20:14:13 -0200

View File

@ -1,8 +0,0 @@
* PAMify fcron (ongoing)
* Get rid of anacron hack.
* Security audit entire package.
* Add the notion of system-wide fcrontab, a la
/etc/crontab and get rid of /var/spool/fcron/
root.orig in the package.
* Deal well with uid 0 != root (name not root)
* add logcheck.ignore files

View File

@ -1,248 +0,0 @@
fcron (2.9.5-1) unstable; urgency=low
* New upstream version.
* Fix init script.
Closes: #262886
* Merged change from BSP.
Closes: #232986
-- Russell Coker <russell@coker.com.au> Sun, 31 Oct 2004 05:39:00 +1100
fcron (2.9.4-3.1) unstable; urgency=low
* NMU during BSP.
* ./configure uses now --with-sendmail without checks (closes: #232986).
-- Sebastian Muszynski <do2ksm@linkt.de> Fri, 19 Mar 2004 16:54:57 +0100
fcron (2.9.4-3) unstable; urgency=high
* Made it depend on exim4|mail-transport-agent.
Closes: #228570
-- Russell Coker <russell@coker.com.au> Tue, 20 Jan 2004 17:36:00 +1100
fcron (2.9.4-2) unstable; urgency=high
* Accidentally uploaded a version compiled with debugging code, so this
version has a correct compile.
-- Russell Coker <russell@coker.com.au> Thu, 4 Jan 2004 22:31:00 +1100
fcron (2.9.4-1) unstable; urgency=high
* New upstream with SE Linux. Upstream has old SE Linux so patched for new
SE Linux.
-- Russell Coker <russell@coker.com.au> Thu, 4 Jan 2004 22:25:00 +1100
fcron (2.9.3-3) unstable; urgency=high
* Added patch for ./configure checking for SE Linux from Torsten Knodt
<tk-debian@datas-world.de>. Also added the SE Linux patch.
Closes: #193610
-- Russell Coker <russell@coker.com.au> Sat, 17 May 2003 13:55:00 +1000
fcron (2.9.3-2) unstable; urgency=high
* Changes for warnings, I think it fixes #169451.
-- Russell Coker <russell@coker.com.au> Sun, 17 Nov 2002 14:12:00 +0100
fcron (2.9.3-1) unstable; urgency=high
* New upstream version.
-- Russell Coker <russell@coker.com.au> Sat, 2 Nov 2002 22:09:00 +0100
fcron (2.9.2-2) unstable; urgency=high
* Made it not try to use -lsecure for non-SE systems.
Closes: #163680
* Added fcrondyn to package.
Closes: #163808
* This is a 2.x.x release.
Closes: #112146
-- Russell Coker <russell@coker.com.au> Sat, 26 Oct 2002 21:25:00 +0200
fcron (2.9.2-1) unstable; urgency=high
* New upstream version.
* Temporarily taking over maintenance.
-- Russell Coker <russell@coker.com.au> Sun, 6 Oct 2002 07:14:00 +0200
fcron (1.0.3-5) unstable; urgency=high
* Fix infinite loop on midmontly code. Thanks to Guy Geens
<ggeens@iname.com> for the patch (closes: #143497)
-- Henrique de Moraes Holschuh <hmh@debian.org> Thu, 18 Apr 2002 16:45:55 -0300
fcron (1.0.3-4) unstable; urgency=high
* Merge in new es, fr, ru templates (closes: #136099, #136484, #137646)
* Fix bug in code that showed up with the glibc nice() fix (closes: #143044)
-- Henrique de Moraes Holschuh <hmh@debian.org> Tue, 16 Apr 2002 10:49:17 -0300
fcron (1.0.3-3) unstable; urgency=high
* SECURITY FIX: Close /tmp exploitable race in fcrontab. Thanks to
Colin Phipps <cph@cph.demon.co.uk> for reporting the bug and
supplying a patch (closes: #102930)
-- Henrique de Moraes Holschuh <hmh@debian.org> Fri, 6 Jul 2001 22:22:42 -0300
fcron (1.0.3-2) unstable; urgency=low
* Do not abort postinst if dpkg-statoverride returns non-zero
status (closes: #100905)
-- Henrique de Moraes Holschuh <hmh@debian.org> Wed, 20 Jun 2001 02:24:19 -0300
fcron (1.0.3-1) unstable; urgency=medium
* New upstream source:
- Fixes a crash when truncating long messages (not exploitable)
-- Henrique de Moraes Holschuh <hmh@debian.org> Sun, 15 Apr 2001 16:41:02 -0300
fcron (1.0.2-4) unstable; urgency=low
* Restore default umask settings before running a job. Do note that not
setting the umask explicitly in a cronjob that creates files sensitive
to it IS asking for trouble, though (closes: #93123)
-- Henrique de Moraes Holschuh <hmh@debian.org> Sat, 7 Apr 2001 23:59:10 -0300
fcron (1.0.2-3) unstable; urgency=low
* Make sure postinst and postrm will exit with status 0
upon successful completion
-- Henrique de Moraes Holschuh <hmh@debian.org> Sun, 1 Apr 2001 02:10:14 -0300
fcron (1.0.2-2) unstable; urgency=low
* Build-depends only in mail-transport-agent, as autobuilders will not
use the OR dependency
* Trash dpkg-statoverride entries on purge
-- Henrique de Moraes Holschuh <hmh@debian.org> Wed, 14 Mar 2001 15:00:45 -0300
fcron (1.0.2-1) unstable; urgency=low
* New upstream source
- Fixes bootrun option
- shell variables containing "_" are now accepted.
-- Henrique de Moraes Holschuh <hmh@debian.org> Sat, 10 Mar 2001 23:25:39 -0300
fcron (1.0.1-1) unstable; urgency=low
* New upstream source
-- Henrique de Moraes Holschuh <hmh@debian.org> Mon, 26 Feb 2001 17:53:46 -0300
fcron (1.0.0-1) unstable; urgency=low
* New upstream source
-- Henrique de Moraes Holschuh <hmh@debian.org> Mon, 26 Feb 2001 09:29:13 -0300
fcron (0.9.5-3) unstable; urgency=low
* Added german template. Thanks go to Joerg Rieger
(closes: #84261). This would have been done much sooner,
if I had actually received the report from the BTS.
* Fixed lintian warnings, and added lintian override file
-- Henrique de Moraes Holschuh <hmh@debian.org> Thu, 22 Feb 2001 22:47:34 -0300
fcron (0.9.5-2) unstable; urgency=low
* Better handling of dpkg-overriding in postinst
-- Henrique de Moraes Holschuh <hmh@debian.org> Sat, 3 Feb 2001 21:52:15 -0200
fcron (0.9.5-1) unstable; urgency=high
* Converted to dpkg-statoverride instead of suidregister
* New upstream version
* Upstream fixed a severe security hole (another local root exploit)
* Minor updates to bring package up-to-date with policy 3.5.0.0
-- Henrique de Moraes Holschuh <hmh@debian.org> Wed, 31 Jan 2001 10:44:43 -0200
fcron (0.9.4-1) unstable; urgency=high
* New upstream version
* Real fix for local root exploit in fcrontab
* Re-enables user crontabs disabled by 0.9.3-5 to -7
* Root fcrontab protected against non-root access at filesystem level.
-- Henrique de Moraes Holschuh <hmh@debian.org> Sun, 31 Dec 2000 22:41:34 -0200
fcron (0.9.3-7) unstable; urgency=low
* Fixed sendmail invoke path, and build-depends
(closes: #79414)
-- Henrique de Moraes Holschuh <hmh@debian.org> Tue, 12 Dec 2000 10:15:00 -0200
fcron (0.9.3-6) unstable; urgency=high
* Make sure the security workaround is enabled
by suidunregistering fcrontab.
-- Henrique de Moraes Holschuh <hmh@debian.org> Sun, 10 Dec 2000 00:23:40 -0200
fcron (0.9.3-5) unstable; urgency=high
* Disable fcrontab for users, as it is currently a local root exploit.
I'll reenable it after a fix is ready and tested.
* All user fcrontabs are moved to /var/spool/fcron/rxdisabled to make
sure they're not run until the fix is ready.
-- Henrique de Moraes Holschuh <hmh@debian.org> Sat, 9 Dec 2000 16:21:36 -0200
fcron (0.9.3-4) unstable; urgency=low
* Fixed double negative in package description
* Fixed bogus .orig.tar.gz source
-- Henrique de Moraes Holschuh <hmh@debian.org> Fri, 8 Dec 2000 18:31:20 -0200
fcron (0.9.3-3) unstable; urgency=low
* Added postinst message (using debconf) to
reduce probability of bogus bug reports against
anacron.
* First upload to Debian (closes: #76497)
-- Henrique de Moraes Holschuh <hmh@debian.org> Wed, 6 Dec 2000 21:56:42 -0200
fcron (0.9.3-2) unstable; urgency=low
* Fixed maintainer address in control file
* Changed package description in control file
* Better Depends: line
* Better init.d script reload behaviour, now it
will freshen up saved uid/gids in fcrontabs.
* Updated README.Debian
-- Henrique de Moraes Holschuh <hmh@debian.org> Sat, 2 Dec 2000 22:03:45 -0200
fcron (0.9.3-1) unstable; urgency=low
* Initial Package. (Closes: #76497)
-- Henrique de Moraes Holschuh <hmh@debian.org> Sat, 11 Nov 2000 23:10:37 -0200

View File

@ -1 +0,0 @@
/var/spool/fcron/systab.orig

View File

@ -1,12 +0,0 @@
#! /bin/sh
# Debconf config file for fcron
set -e
. /usr/share/debconf/confmodule
# Babysit users who don't read README.Debian
db_title fcron
db_input high fcron/anacronwarn || true
db_go
exit 0

View File

@ -1,21 +0,0 @@
Source: fcron
Section: admin
Priority: extra
Maintainer: Russell Coker <russell@coker.com.au>
Build-Depends: debhelper (>= 4.1.16), libpam0g-dev, libselinux1-dev (>= 1.2-1.1)
Standards-Version: 3.5.9
Package: fcron
Architecture: any
Depends: ${misc:Depends}, ${shlibs:Depends}, debconf, system-log-daemon, mail-transport-agent, adduser (>=3.25), dpkg (>>1.8.3)
Conflicts: anacron, suidmanager (<< 0.50)
Description: cron-like scheduler with extended capabilities
Fcron is a scheduler. It implements most of Vixie Cron's functionalities.
But contrary to Vixie Cron, fcron does not need your system to be up 7 days
a week, 24 hours a day: it also works well with systems which are running
neither all the time nor regularly.
.
Fcron also includes a useful system of options, such as: run jobs one by
one, run jobs at fcron's startup if they should have been run during system
down time, a better management of the mailing of outputs, set a nice value
for a job...

View File

@ -1,16 +0,0 @@
This package was debianized by Henrique M. Holschuh <hmh@debian.org> on
Sat, 11 Nov 2000 23:10:37 -0200.
It was downloaded from http://fcron.free.fr/
Upstream Author: Thibault GODOUET <fcron@free.fr>
fcron is Copyright (c) 2000 by Thibault Godouet <fcron@free.fr>, and it is
released under the terms of the GNU General Public License:
This program is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the
Free Software Foundation; either version 2, or (at your option) any
later version.
The GPL may be found in /usr/share/common-licenses/GPL on a Debian system.

View File

@ -1,4 +0,0 @@
!bootrun(true),nice(15),serial(true)
%daily * 3-6 run-parts --report /etc/cron.daily
%weekly * 3-6 run-parts --report /etc/cron.weekly
%monthly * 3-6 * run-parts --report /etc/cron.monthly

View File

@ -1,4 +0,0 @@
usr/bin
usr/sbin
var/spool/fcron
etc/pam.d

View File

@ -1,19 +0,0 @@
#!/bin/sh
#
# fcron-update-crontabs
#
# Copyright (c) 2000 Thibault Godouet
# Released under the same license as the fcron program.
fcrontabdir=/var/spool/fcron
test -d ${fcrontabdir} || exit 0
# Recompile all crontabs
for FILE in ${fcrontabdir}/* ; do
if test -f ${FILE} ; then
FCRONTAB=`basename "${FILE}" | \
sed "s|\..*orig|| ; s|new\..*|| ; s|fcrontab\.sig|| ; s|rm\..*||"`
( test ! -z "${FCRONTAB}" && fcrontab -u "${FCRONTAB}" -z ) || echo -n ""
fi
done

View File

@ -1,26 +0,0 @@
.TH FCRON-UPDATE-CRONTABS 8
.\" NAME should be all caps, SECTION should be 1-8, maybe w/ subsection
.\" other parms are allowed: see man(7), man(1)
.SH NAME
fcron-update-crontabs \- refreshes all fcron crontabs
.SH SYNOPSIS
.B fcron-update-crontabs
.SH "DESCRIPTION"
This manual page documents briefly the
.BR fcron-update-crontabs
command.
fcron keeps its crontabs in a binary format, which needs to be
recompiled from their text source when fcron is updated or when
a userid referenced in the crontabs changes.
.B fcron-update-crontabs
can be used to recompile all fcron crontabs installed in the
system.
.PP
.SH "SEE ALSO"
.BR fcron (8),
.BR fcrontab (1),
.BR fcrontab (1),
.BR fcrontab (5).
.SH AUTHOR
This manual page was written by Henrique M. Holschuh <hmh@rcm.org.br>,
for the Debian GNU/Linux system (but may be used by others).

View File

@ -1,72 +0,0 @@
#! /bin/sh
#
# fcron fcron is a scheduler especially useful for people \
# who are not running their system all the time.
#
# Initscript by Henrique M. Holschuh <hmh@debian.org>.
#
# Based in /etc/init.d/skeleton:
# Written by Miquel van Smoorenburg <miquels@cistron.nl>.
# Modified for Debian GNU/Linux
# by Ian Murdock <imurdock@gnu.ai.mit.edu>.
#
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/sbin/fcron
NAME=fcron
DESC=fcron
startdaemon () {
start-stop-daemon --start --quiet "$@" --pidfile /var/run/$NAME.pid --exec ${DAEMON} -- -b
}
stopdaemon () {
start-stop-daemon --stop --quiet "$@" --pidfile /var/run/$NAME.pid --exec ${DAEMON}
}
test -x $DAEMON || exit 0
set -e
case "$1" in
start)
echo -n "Starting $DESC: "
startdaemon
echo "${NAME}."
;;
stop)
echo -n "Stopping $DESC: "
stopdaemon --oknodo
echo "${NAME}."
;;
reload|force-reload)
echo "Reloading $DESC configuration files."
fcron-update-crontabs >/dev/null 2>&1
stopdaemon --signal 1
;;
restart)
echo -n "Restarting $DESC: "
stopdaemon
sleep 1
startdaemon
echo "${NAME}."
;;
# restart-if-running)
# echo -n "Stopping $DESC if it is running: "
# if start-stop-daemon --stop --quiet --pidfile /var/run/$NAME.pid --exec ${DAEMON} ; then
# echo "${NAME}."
# echo -n "Restarting $DESC: "
# startdaemon
# echo "${NAME}."
# else
# echo "(not running)."
# fi
# ;;
*)
N=/etc/init.d/$NAME
echo "Usage: $N {start|stop|restart|reload|force-reload}" >&2
exit 1
;;
esac
exit 0

View File

@ -1,3 +0,0 @@
fcron: non-standard-dir-perm var/spool/fcron/ 0770 != 0755
fcron: file-in-unusual-dir var/spool/fcron/systab.orig
fcron: link-to-undocumented-manpage usr/share/man/man8/anacron.8.gz

View File

@ -1,102 +0,0 @@
#! /bin/sh
# postinst script for fcron
set -e
. /usr/share/debconf/confmodule
db_stop
# summary of how this script can be called:
# * <postinst> `configure' <most-recently-configured-version>
# * <old-postinst> `abort-upgrade' <new version>
# * <conflictor's-postinst> `abort-remove' `in-favour' <package>
# <new-version>
# * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
# <failed-install-package> <version> `removing'
# <conflicting-package> <version>
# for details, see /usr/share/doc/packaging-manual/
#
# quoting from the policy:
# Any necessary prompting should almost always be confined to the
# post-installation script, and should be protected with a conditional
# so that unnecessary prompting doesn't happen if a package's
# installation fails and the `postinst' is called with `abort-upgrade',
# `abort-remove' or `abort-deconfigure'.
case "$1" in
configure)
#
# Create user fcron and chown spool
#
cd /var/spool/fcron
adduser --system --group --home /var/spool/fcron --no-create-home --disabled-password fcron >/dev/null 2>&1
chown fcron:fcron /var/spool/fcron
# add dpkg-statoverride here after dpkg 1.9.x is out
#
# Reenable local user fcrontabs removed by 0.9.3-5..7
#
[ -d /var/spool/fcron/rxdisabled ] && {
echo "Trying to reenable fcrontabs disabled by security patch..."
userftb=
for i in `find /var/spool/fcron/rxdisabled -type f \
! -name '.*' -maxdepth 1 -print0 | xargs -0` ; do
fcrontabname="`basename ${i}`"
# we can salvage only uncompiled fcrontabs
if [ "${fcrontabname%.orig}" != "${fcrontabname}" ] ; then
if [ ! -e /var/spool/fcron/${fcrontabname} ] ; then
mv /var/spool/fcron/rxdisabled/${fcrontabname} /var/spool/fcron/
userftb="${userftb} ${fcrontabname%.orig}"
fi
else
rm -f "${i}" || true
fi
done
if rmdir /var/spool/fcron/rxdisabled >/dev/null 2>&1 ; then
[ "${userftb}" != "" ] && echo "Reinstaled fcrontabs for user(s): " ${userftb}
else
echo "Failed to reinstall all previously disabled user fcrontabs."
echo "Please check /var/spool/fcron and /var/spool/fcron/rxdisabled manually,"
echo "and remove the rxdisabled subdirectory when done."
fi
}
#
# Ensures correct owner and group for all fcrontabs
#
find /var/spool/fcron -type f ! -name '*.*' -exec chown root:root {} \;
find /var/spool/fcron -type f ! -name 'root.*' -name '*.*' -exec chown fcron:fcron {} \;
chown root:fcron root.* *.root >/dev/null 2>&1 || true
#
# Setgid/setuid fcrontab binary
#
OVERRIDEN=
OVERRIDEN=`dpkg-statoverride --list /usr/bin/fcrontab` || true
[ "${OVERRIDEN}" = "" ] && dpkg-statoverride --update --add fcron fcron 6755 /usr/bin/fcrontab
OVERRIDEN=
OVERRIDEN=`dpkg-statoverride --list /usr/bin/fcronsighup` || true
[ "${OVERRIDEN}" = "" ] && dpkg-statoverride --update --add root fcron 4750 /usr/bin/fcronsighup
#
# Makes sure we have no version incompatibilities on compiled
# fcrontabs
#
fcron-update-crontabs >/dev/null 2>&1
chgrp fcron /etc/fcron.conf /etc/fcron.allow /etc/fcron.deny
;;
abort-upgrade|abort-remove|abort-deconfigure)
;;
*)
echo "postinst called with unknown argument \`$1'" >&2
exit 0
;;
esac
# dh_installdeb will replace this with shell code automatically
# generated by other debhelper scripts.
#DEBHELPER#
exit 0

View File

@ -1,51 +0,0 @@
#! /bin/sh
# postrm script for fcron
#
# see: dh_installdeb(1)
set -e
# summary of how this script can be called:
# * <postrm> `remove'
# * <postrm> `purge'
# * <old-postrm> `upgrade' <new-version>
# * <new-postrm> `failed-upgrade' <old-version>
# * <new-postrm> `abort-install'
# * <new-postrm> `abort-install' <old-version>
# * <new-postrm> `abort-upgrade' <old-version>
# * <disappearer's-postrm> `disappear' <r>overwrit>r> <new-version>
# for details, see /usr/share/doc/packaging-manual/
case "$1" in
purge)
# Purge fcrontabs
rm -rf /var/spool/fcron || true
# Purge statoverrides
dpkg-statoverride --remove /usr/bin/fcrontab || true
dpkg-statoverride --remove /usr/bin/fcronsighup || true
# Remove user fcron
userdel fcron || true
;;
remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
;;
*)
echo "postrm called with unknown argument \`$1'" >&2
exit 0
esac
# dh_installdeb will replace this with shell code automatically
# generated by other debhelper scripts.
#DEBHELPER#
if [ "$1" = remove -a -e /etc/suid.conf ] && \
command -v suidunregister >/dev/null 2>&1; then
suidunregister -s fcron /usr/bin/fcrontab
fi
exit 0

View File

@ -1,10 +0,0 @@
#!/bin/sh
FILE=/var/spool/fcron/root.orig
if [ -f $FILE ]; then
grep -v "/etc/cron.\(daily\)\|\(weekly\)\|\(monthly\)" $FILE > $FILE.new
mv $FILE.new $FILE
fi
#DEBHELPER#

View File

@ -1,107 +0,0 @@
#!/usr/bin/make -f
# Sample debian/rules that uses debhelper.
# GNU copyright 1997 to 1999 by Joey Hess.
# Modified for package fcron
# Uncomment this to turn on verbose mode.
#export DH_VERBOSE=1
# This is the debhelper compatability version to use.
export DH_COMPAT=3
# Enable debug package build if DEB_BUILD_OPTIONS contains debug
CONFFLAGS =
ifneq (,$(findstring debug,$(DEB_BUILD_OPTIONS)))
CONFFLAGS += --with-debug
endif
configure-stamp: configure
dh_testdir
./configure --prefix=/usr --with-mandir=/usr/share/man --with-docdir=/usr/share/doc --with-editor=/usr/bin/sensible-editor --with-spooldir=/var/spool/fcron --with-etcdir=/etc --with-sendmail=/usr/sbin/sendmail $(CONFFLAGS) --with-selinux=yes
touch configure-stamp
configure:
autoconf
build: configure-stamp build-stamp
build-stamp:
dh_testdir
$(MAKE)
touch build-stamp
clean: configure
dh_testdir
dh_testroot
rm -f build-stamp configure-stamp
-$(MAKE) clean
-$(RM) -f config.cache config.log config.status config.h Makefile
dh_clean
install: build
dh_testdir
dh_testroot
dh_clean -k
dh_installdirs
#$(MAKE) install prefix=`pwd`/debian/tmp/usr
install -m 755 fcron `pwd`/debian/fcron/usr/sbin
install -m 755 fcrontab fcronsighup fcrondyn `pwd`/debian/fcron/usr/bin
install files/fcron.deny files/fcron.allow `pwd`/debian/fcron/etc
install files/fcron.conf `pwd`/debian/fcron/etc
install -m 644 files/fcrontab.pam `pwd`/debian/fcron/etc/pam.d/fcrontab
install -m 644 files/fcron.pam `pwd`/debian/fcron/etc/pam.d/fcron
install -m 755 debian/fcron-update-crontabs `pwd`/debian/fcron/usr/sbin
# root's default crontab
install -m 640 debian/crontab.root `pwd`/debian/fcron/var/spool/fcron/systab.orig
# lintian overrides
install -D -m 644 debian/lintian `pwd`/debian/fcron/usr/share/lintian/overrides/fcron
# add anacron hack
ln -s /bin/true `pwd`/debian/fcron/usr/sbin/anacron
# Build architecture-independent files here.
binary-indep: build install
# We have nothing to do by default.
# Build architecture-dependent files here.
binary-arch: build install
# dh_testversion
dh_testdir
dh_testroot
dh_installdebconf
dh_installdocs
dh_installexamples
# dh_installmenu
# dh_installpam
dh_installinit -- defaults 89 11
# dh_installcron
dh_installmanpages bitstring.3
# dh_installinfo
dh_installchangelogs
dh_link
ifeq (,$(findstring debug,$(DEB_BUILD_OPTIONS)))
dh_strip
endif
dh_compress
dh_fixperms
chmod 640 `pwd`/debian/fcron/etc/fcron.allow `pwd`/debian/fcron/etc/fcron.deny
chmod 640 `pwd`/debian/fcron/etc/fcron.conf
chmod 770 `pwd`/debian/fcron/var/spool/fcron
#dh_suidregister
# dh_makeshlibs
dh_installdeb
# dh_perl
dh_shlibdeps
dh_gencontrol
dh_md5sums
dh_builddeb
binary: binary-indep binary-arch
.PHONY: build clean binary-indep binary-arch binary install

View File

@ -1,14 +0,0 @@
Template: fcron/anacronwarn
Type: note
Description: Warning: interactions with anacron!
If you have the anacron package in the 'removed' but not 'purged'
state (i.e. anacron configuration files are still around the system),
the fcron package will cause harmless side effects, such as reports
of anacron being started at boot up.
.
DO NOT FILE BUGS AGAINST ANACRON IF YOU HAVE FCRON INSTALLED IN THE
SYSTEM. They will be either reassigned to fcron to be summarily closed
by me, or summarily closed by the anacron maintainer himself.
.
More information about this issue is available in
/usr/share/doc/fcron/README.Debian

View File

@ -1,14 +0,0 @@
Template: fcron/anacronwarn
Type: note
Description-de: Warnung: Wechselwirkungen mit anacron !
Wenn Sie das anachron Packet im 'removed' aber nicht im 'purged' Status
haben (z.B. es befinden sich noch irgendwo im System anacron Konfigurations
Dateien ), kann es sein, dass das fcron Paket einige harmlose Seiteneffekte
aufweist, z.B. Meldungen das anacron beim booten gestartet wurde.
.
MELDEN SIE KEINE ANACRON BUGS, WENN SIE ES MIT FCRON ZUSAMMEN INSTALLIERT
HABEN. Diese werden entweder fcron zugeschrieben um von mir geschlossen zu
werden oder vom direkt anacron Maintainer geschlossen.
.
Weiter Informationen finden Sie in
/usr/share/doc/fcron/README.Debian

View File

@ -1,25 +0,0 @@
Template: fcron/anacronwarn
Type: note
Description: Warning: interactions with anacron!
If you have the anacron package in the 'removed' but not 'purged' state
(i.e. anacron configuration files are still around the system), the fcron
package will cause harmless side effects, such as reports of anacron being
started at boot up.
.
DO NOT FILE BUGS AGAINST ANACRON IF YOU HAVE FCRON INSTALLED IN THE
SYSTEM. They will be either reassigned to fcron to be summarily closed by
me, or summarily closed by the anacron maintainer himself.
.
More information about this issue is available in
/usr/share/doc/fcron/README.Debian
Description-es: Aviso sobre las interacciones con anacron.
Si ha borrado el paquete anacron pero no lo ha purgado, sus ficheros de
configuración aún se encuentran en el sistema y pueden provocar efectos
colaterales en fcron y comportamientos extraños, como que parezca que se
ha iniciado anacron al arrancar.
.
NO ENVÍE INFORMES DE ERROR CONTRA ANACRON SI TIENE FCRON INSTALADO EN EL
SISTEMA. Serán reasignados a fcron y cerrados inmediatamente, o bien
los cerrará el propio mantenedor de anacron.
.
Puede encontrar más información en /usr/share/doc/fcron/README.Debian.

View File

@ -1,28 +0,0 @@
Template: fcron/anacronwarn
Type: note
Description: Warning: interactions with anacron!
If you have the anacron package in the 'removed' but not 'purged' state
(i.e. anacron configuration files are still around the system), the fcron
package will cause harmless side effects, such as reports of anacron being
started at boot up.
.
DO NOT FILE BUGS AGAINST ANACRON IF YOU HAVE FCRON INSTALLED IN THE
SYSTEM. They will be either reassigned to fcron to be summarily closed by
me, or summarily closed by the anacron maintainer himself.
.
More information about this issue is available in
/usr/share/doc/fcron/README.Debian
Description-fr: Attention : interférences avec anacron !
Si le paquet anacron a été supprimé (« removed ») mais non purgé
 purged ») -- ce qui signifie que les fichiers de configuration
d'anacron sont toujours présents --, fcron fera des actions
inattendues mais sans conséquence, telles que des rapports disant
qu'anacron est lancé au démarrage.
.
N'EFFECTUEZ PAS DE RAPPORT DE BOGUE CONTRE ANACRON SI VOUS AVEZ FCRON
INSTALLÉ SUR VOTRE SYSTÈME. Il sera soit réassigné à fcron et fermé
sans autre forme de procès par moi-même, soit fermé directement par le
responsable d'anacron.
.
Vous pouvez consulter /usr/share/doc/fcron/README.Debian pour plus
d'informations.

View File

@ -1,14 +0,0 @@
Template: fcron/anacronwarn
Type: note
Description-pt_BR: Aviso: interações com anacron!
Se você removeu o pacote anacron mas deixou seus arquivos de
configuração no sistema (ou seja, não usou "purge"), o pacote fcron
irá causar efeitos colaterais inofensivos, tais como anacron dizendo
que foi ativado durante a inicialização do sistema.
.
NÃO REGISTRE DEFEITOS (bugs) CONTRA O PACOTE ANACRON SE VOCÊ INSTALOU
O PACOTE FCRON. Eles serão sumariamente deletados ou por mim, ou pelo
responsável pelo pacote anacron.
.
Mais informações sobre o problema podem ser encontradas em
/usr/share/doc/fcron/README.Debian

View File

@ -1,27 +0,0 @@
Template: fcron/anacronwarn
Type: note
Description: Warning: interactions with anacron!
If you have the anacron package in the 'removed' but not 'purged' state
(i.e. anacron configuration files are still around the system), the fcron
package will cause harmless side effects, such as reports of anacron being
started at boot up.
.
DO NOT FILE BUGS AGAINST ANACRON IF YOU HAVE FCRON INSTALLED IN THE
SYSTEM. They will be either reassigned to fcron to be summarily closed by
me, or summarily closed by the anacron maintainer himself.
.
More information about this issue is available in
/usr/share/doc/fcron/README.Debian
Description-ru: ðÒÅÄÕÐÒÅÖÄÅÎÉÅ: ×ÚÁÉÍÏÄÅÊÓÔ×ÉÑ Ó anacron!
åÓÌÉ ×Ù ÉÍÅÅÔÅ ÐÁËÅÔ anacron × ÓÏÓÔÏÑÎÉÉ 'removed', ÎÏ ÎÅ 'purged'
(Ô.Å. ÎÁÓÔÒÏÅÞÎÙÅ ÆÁÊÌÙ anacron ÏÓÔÏÀÔÓÑ × ÓÉÓÔÅÍÅ), ÔÏ ÐÒÉ ÐÁËÅÔÅ
fcron ÍÏÇÕÔ ×ÏÚÎÉËÁÔØ ÓÔÏÒÏÎÎÉÅ ÜÆÆÅËÔÙ, ÔÁËÉÅ ËÁË ÏÔÞÅÔÙ anacron ÐÒÉ
ÚÁÇÒÕÚËÅ ÓÉÓÔÅÍÙ.
.
îå óþéôáêôå üôé æáêìù ïûéâëáíé ANACRON, ÅÓÌÉ Õ ×ÁÓ ÷ óéóôåíå
õóôáîï÷ìåî FCRON. þÔÏÂÙ ÉÚÂÁ×ÉÔØÓÑ ÏÔ ÜÔÏÊ ÐÒÏÂÌÅÍÙ, ÏÎÉ ÂÕÄÕÔ ÌÉÂÏ
ÐÅÒÅÎÁÚÎÁÞÅÎÙ fcron ÍÎÏÀ, ÉÌÉ ÚÁËÒÙÔÙ ÓÁÍÉÍ ÓÏÐÒÏ×ÏÖÄÁÀÝÉÍ anacron.
.
âÏÌØÛÅ ÉÎÆÏÒÍÁÃÉÉ Ï ÜÔÏÊ ÐÒÏÂÌÅÍÅ ÄÏÓÔÕÐÎÏ × ÆÁÊÌÅ
/usr/share/doc/fcron/README.Debian

View File

@ -1,243 +0,0 @@
############################
# fcron-doc's Makefile ####
############################
# @configure_input@
# The following should not be edited manually (use configure options)
# If you must do it, BEWARE: some of the following is also defined
# in config.h, so you must modify config.h AND Makefile in order
# to set the same values in the two files.
SRCDIR = @srcdir@
prefix = @prefix@
datarootdir = @datarootdir@
DESTMAN = @mandir@
DESTDOC = @DOCDIR@
INSTALL = @INSTALL@
JADE = @JADE@
DB2MAN_BEFORE = @DB2MAN_BEFORE@
DB2MAN_AFTER = @DB2MAN_AFTER@
ROOTNAME = @ROOTNAME@
ROOTGROUP = @ROOTGROUP@
ANSWERALL = @ANSWERALL@
####################################
# Should not be changed under this #
####################################
STYLESHEET = stylesheets/fcron-doc.dsl
MODFILE = fcron-doc.mod
VERSION = @VERSION@
SGMLFILES = fcron-doc.sgml readme.sgml relnotes.sgml changes.sgml faq.sgml thanks.sgml todo.sgml fcron.8.sgml fcrontab.1.sgml install.sgml fcron.conf.5.sgml fcrontab.5.sgml fcrondyn.1.sgml fdl.sgml gpl.sgml
TXTFILES = readme install thanks faq gpl todo relnotes changes
MANPAGES = fcron.8 fcron.conf.5 fcrontab.1 fcrontab.5 fcrondyn.1
LANGUAGES = en fr
# this is a regular expression:
# do not ci these files
RCSNOCI=.*\(bitstring.3\|fcron-doc.ced\|Makefile\|${STYLESHEET}\|fcron-doc.mod\|HTML.*\|txt.*\|man\/.*\|CVS.*\|.git.*\)
all: doc
doc:
# Build all the HTML, text and manual pages in all the languages
@(for i in $(LANGUAGES); \
do \
test -d $(SRCDIR)/$$i/HTML || mkdir $(SRCDIR)/$$i/HTML ; \
test -d $(SRCDIR)/$$i/txt || mkdir $(SRCDIR)/$$i/txt ; \
test -d $(SRCDIR)/$$i/man || mkdir $(SRCDIR)/$$i/man ; \
$(MAKE) $(SRCDIR)/$$i/HTML/index.html $(SRCDIR)/$$i/txt/readme.txt \
$(SRCDIR)/$$i/man/fcron.8 ; \
done)
doc-if-none:
# Only generate the doc if there is none (e.g. if the sources came from git
# and not a tarball)
# The reason we don't try to generate the doc everytime is that we want the user
# to be able to compile and install fcron without needing all the tools required
# to generate the documentations.
#
# "make doc" will be called once at max, as all the tests will
# succeed after the first time "make doc" is called
@(for i in $(LANGUAGES); \
do \
test -f $(SRCDIR)/$$i/HTML/index.html || $(MAKE) doc ; \
test -f $(SRCDIR)/$$i/txt/readme.txt || $(MAKE) doc ; \
test -f $(SRCDIR)/$$i/man/fcron.8 || $(MAKE) doc ; \
done)
# man/fcron.8 means in fact "build *all* the man pages"
%/man/fcron.8: %/*.sgml fcron-doc.mod ${STYLESHEET}.in
@(if test -z "$(DB2MAN_BEFORE)"; then \
echo "ERROR: cannot generate man pages." ; \
echo " Please check if a db2man converter is installed, or if" \
echo " nsgmls, sgmlspl are installed, and if configure's options" \
echo " --with-db2man and --with-db2man-spec are correctly set." ; \
exit 1 ; \
fi)
@(echo ; echo "Building $(@D) manual pages..."; echo )
@(cp -f bitstring.3 $(@D)/)
@(cd $(@D)/../ ; \
ln ../fcron-doc.mod ./ ; \
for i in $(MANPAGES); do \
echo " $(@D)/$$i..."; \
echo '<!doctype refentry PUBLIC "-//OASIS//DTD DocBook V4.1//EN" [<!ENTITY % decl SYSTEM "fcron-doc.mod">%decl;]>' > _tmp_ ; \
echo "&$$i;" >> _tmp_ ; \
$(DB2MAN_BEFORE) _tmp_ $(DB2MAN_AFTER) > /dev/null 2>&1 ; \
rm -f _tmp_ ; \
mv `basename $$i .sgml` man/ ; \
done ; \
rm fcron-doc.mod ; \
rm -f manpage.links manpage.refs)
# txt/readme.txt means in fact "build *all* the text pages"
%/txt/readme.txt: %/HTML/index.html
@(echo ; echo "Building $(@D) files..."; echo )
@(for i in $(TXTFILES); do \
echo " $(@D)/$$i..."; \
lynx -dump -nolist $(@D)/../HTML/$$i.html > $(@D)/$$i.txt; done )
fcron-doc.mod: fcron-doc.mod.in ../configure.in
@(echo ; echo "Building fcron-doc.mod")
@(../script/gen-in.pl fcron-doc.mod.in fcron-doc.mod ../)
# HTML/index.html means in fact "build *all* the HTML pages"
%/HTML/index.html: %/*.sgml fcron-doc.mod ${STYLESHEET}.in
@(echo ; echo "Building $(@D)...")
@(rm -fR $(@D)/*.html)
@(cd $(@D)/../ ; $(JADE) -D ../ -D ./ -t sgml -i html -d ../${STYLESHEET}\#html fcron-doc.sgml)
install: install-staged perms
install-staged: doc-if-none clean
@(echo "Installing man pages in $(DESTDIR)$(DESTMAN)...")
@(for l in $(LANGUAGES); do \
if test "x$$l" = "xen"; then \
DIR=$(DESTDIR)$(DESTMAN); \
else \
DIR=$(DESTDIR)$(DESTMAN)/$$l; \
fi ; \
for i in 1 3 5 8; do \
if test ! -d $$DIR/man$$i; then \
$(INSTALL) -m 755 -d $$DIR/man$$i ; \
fi ; \
for m in $(SRCDIR)/$$l/man/*.$$i; do \
$(INSTALL) -m 644 $$m $$DIR/man$$i ; \
done ; \
done ; \
done )
@(echo "Installing documentation files in $(DESTDIR)$(DESTDOC)/fcron-$(VERSION)...")
@(if test ! -d $(DESTDIR)$(DESTDOC)/fcron-$(VERSION); then $(INSTALL) -m 755 -d $(DESTDIR)$(DESTDOC)/fcron-$(VERSION) ; fi)
@(for l in $(LANGUAGES); do \
DIR=$(DESTDIR)$(DESTDOC)/fcron-$(VERSION) ; \
if test ! -d $$DIR/$$l; then \
$(INSTALL) -m 755 -d $$DIR/$$l ; \
fi ; \
for i in txt HTML; do \
if test ! -d $$DIR/$$l/$$i; then \
$(INSTALL) -m 755 -d $$DIR/$$l/$$i ; \
fi ; \
for m in $(SRCDIR)/$$l/$$i/* ; do \
$(INSTALL) -m 644 $$m $$DIR/$$l/$$i/ ;\
done ; \
done ; \
done )
perms:
for l in $(LANGUAGES); do \
if test "x$$l" = "xen"; then \
DIR=$(DESTDIR)$(DESTMAN); \
else \
DIR=$(DESTDIR)$(DESTMAN)/$$l; \
fi ; \
chown $(ROOTNAME) $$DIR; \
chgrp $(ROOTGROUP) $$DIR; \
for i in 1 3 5 8; do \
chown $(ROOTNAME) $$DIR/man$$i; \
chgrp $(ROOTGROUP) $$DIR/man$$i; \
done ; \
for f in man1/fcrontab.1 man1/fcrondyn.1 man3/bitstring.3 \
man5/fcrontab.5 man5/fcron.conf.5 man8/fcron.8 ; do \
chown $(ROOTNAME) $$DIR/$$f; \
chgrp $(ROOTGROUP) $$DIR/$$f; \
done ; \
done
chown $(ROOTNAME) $(DESTDIR)$(DESTDOC)
chgrp $(ROOTGROUP) $(DESTDIR)$(DESTDOC)
chown $(ROOTNAME) $(DESTDIR)$(DESTDOC)/fcron-$(VERSION)
chgrp $(ROOTGROUP) $(DESTDIR)$(DESTDOC)/fcron-$(VERSION)
for l in $(LANGUAGES); do \
DIR=$(DESTDIR)$(DESTDOC)/fcron-$(VERSION)/$$l ; \
chown $(ROOTNAME) $$DIR ; \
chgrp $(ROOTGROUP) $$DIR ; \
for i in txt HTML; do \
chown $(ROOTNAME) $$DIR/$$i; \
chgrp $(ROOTGROUP) $$DIR/$$i; \
chown $(ROOTNAME) $$DIR/$$i/*; \
chgrp $(ROOTGROUP) $$DIR/$$i/*; \
done ; \
done
uninstall:
rm -fR $(DESTDOC)/fcron-$(VERSION)
@(echo "Removing man pages ...")
@(for l in $(LANGUAGES); do \
if test "x$$l" = "xen"; then \
DIR=$(DESTDIR)$(DESTMAN); \
else \
DIR=$(DESTDIR)$(DESTMAN)/$$l; \
fi ; \
rm -f $$DIR/man1/fcrontab.1 ; \
rm -f $$DIR/man1/fcrondyn.1 ; \
rm -f $$DIR/man3/bitstring.3 ; \
rm -f $$DIR/man5/fcrontab.5 ; \
rm -f $$DIR/man5/fcron.conf.5 ; \
rm -f $$DIR/man8/fcron.8 ; \
done )
clean:
@(cd $(SRCDIR) ; \
BASEDIR=`pwd` ; \
for i in stylesheets $(LANGUAGES) . ; do \
cd $$i ; \
echo "Cleaning: `pwd`"; \
rm -f *~ *.html *.htm *.texi *.info *.refs manpage.links manpage.refs \
core *.tar.gz ; \
cd $$BASEDIR ; \
done)
tarclean: clean
rm -f Makefile ${STYLESHEET} fcron-doc.mod
vclean: clean
# rm -f */HTML/* */man/* */txt/*
rm -f Makefile ${STYLESHEET}
ci: clean
# we run a "cd .." because it makes the path of the file appear ( ./doc/XXXX )
# during the ci-ing
# the symbolic links verX_X_X has been created since version 2.9.4
@(cd ..; find ./doc/ -type f ! -regex '.*RCS.*' ! -regex "$(RCSNOCI)" \
-exec ci -l -Nver`echo $(VERSION) | tr '.' '_'` {} \;)
tarhtmldoc: doc
for i in $(LANGUAGES); do \
cd $$i ; \
mkdir fcron-$(VERSION)-doc-$$i-html ;\
cp HTML/*.html fcron-$(VERSION)-doc-$$i-html ;\
rm -f fcron-doc-$$i-html.tar.gz ;\
tar -czvf fcron-doc-$$i-html.tar.gz fcron-$(VERSION)-doc-$$i-html/* ;\
rm -fR fcron-$(VERSION)-doc-$$i-html ; \
cd .. ; \
done

View File

@ -1,168 +0,0 @@
.\" Copyright (c) 1989 The Regents of the University of California.
.\" All rights reserved.
.\"
.\" This code is derived from software contributed to Berkeley by
.\" Paul Vixie.
.\"
.\" Redistribution and use in source and binary forms are permitted
.\" provided that the above copyright notice and this paragraph are
.\" duplicated in all such forms and that any documentation,
.\" advertising materials, and other materials related to such
.\" distribution and use acknowledge that the software was developed
.\" by the University of California, Berkeley. The name of the
.\" University may not be used to endorse or promote products derived
.\" from this software without specific prior written permission.
.\" THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
.\" IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
.\" WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
.\"
.\" @(#)bitstring.3 5.1 (Berkeley) 12/13/89
.\"
.TH BITSTRING 3 "December 13, 1989"
.UC 4
.SH NAME
bit_alloc, bit_clear, bit_decl, bit_ffs, bit_nclear, bit_nset,
bit_set, bitstr_size, bit_test \- bit-string manipulation macros
.SH SYNOPSIS
.ft B
.nf
#include <bitstring.h>
name = bit_alloc(nbits)
bitstr_t *name;
int nbits;
bit_decl(name, nbits)
bitstr_t name;
int nbits;
bit_clear(name, bit)
bitstr_t name;
int bit;
bit_ffc(name, nbits, value)
bitstr_t name;
int nbits, *value;
bit_ffs(name, nbits, value)
bitstr_t name;
int nbits, *value;
bit_nclear(name, start, stop)
bitstr_t name;
int start, stop;
bit_nset(name, start, stop)
bitstr_t name;
int start, stop;
bit_set(name, bit)
bitstr_t name;
int bit;
bitstr_size(nbits)
int nbits;
bit_test(name, bit)
bitstr_t name;
int bit;
.fi
.ft R
.SH DESCRIPTION
These macros operate on strings of bits.
.PP
.I Bit_alloc
returns a pointer of type
.I bitstr_t\ *
to sufficient space to store
.I nbits
bits, or NULL if no space is available.
.PP
.I Bit_decl
is a macro for allocating sufficient space to store
.I nbits
bits on the stack.
.PP
.I Bitstr_size
returns the number of elements of type
.I bitstr_t
necessary to store
.I nbits
bits.
This is useful for copying bit strings.
.PP
.I Bit_clear
and
.I bit_set
clear or set the zero-based numbered bit
.IR bit ,
in the bit string
.IR name .
.PP
.I Bit_nset
and
.I bit_nclear
set or clear the zero-based numbered bits from
.I start
to
.I stop
in the bit string
.IR name .
.PP
.I Bit_test
evaluates to zero if the zero-based numbered bit
.I bit
of bit string
.I name
is set, and non-zero otherwise.
.PP
.I Bit_ffs
sets
.I *value
to the zero-based number of the first bit set in the array of
.I nbits
bits referenced by
.IR name .
If no bits are set,
.I *value
is set to -1.
.PP
.I Bit_ffc
sets
.I *value
to the zero-based number of the first bit not set in the array of
.I nbits
bits referenced by
.IR name .
If all bits are set,
.I value
is set to -1.
.SH EXAMPLE
.nf
.in +5
#include <limits.h>
#include <bitstring.h>
...
#define LPR_BUSY_BIT 0
#define LPR_FORMAT_BIT 1
#define LPR_DOWNLOAD_BIT 2
...
#define LPR_AVAILABLE_BIT 9
#define LPR_MAX_BITS 10
make_lpr_available()
{
bitstr_t bit_decl(bitlist, LPR_MAX_BITS);
...
bit_nclear(bitlist, 0, LPR_MAX_BITS - 1);
...
if (!bit_test(bitlist, LPR_BUSY_BIT)) {
bit_clear(bitlist, LPR_FORMAT_BIT);
bit_clear(bitlist, LPR_DOWNLOAD_BIT);
bit_set(bitlist, LPR_AVAILABLE_BIT);
}
}
.fi
.SH "SEE ALSO"
malloc(3)

View File

@ -1,142 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
<HTML
><HEAD
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK
REL="HOME"
TITLE="Fcron documentation"
HREF="index.html"><LINK
REL="NEXT"
TITLE="Fcron: how and why?"
HREF="how-and-why.html"></HEAD
><BODY
BGCOLOR="#FFFFFF"
TEXT="#000000"
LINK="#0000FF"
VLINK="#840084"
ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="40%"
ALIGN="left"
VALIGN="top"
><A
HREF="LEGALNOTICE.html"
>Copyright</A
> &copy; 2000-2014 <A
HREF="mailto:fcron@free.fr"
>Thibault Godouet</A
></TD
><TD
WIDTH="20%"
ALIGN="center"
VALIGN="top"
>Fcron 3.2.0 </TD
><TD
WIDTH="40%"
ALIGN="right"
VALIGN="top"
>Web page : <A
HREF="http://fcron.free.fr"
>http://fcron.free.fr</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
>Fcron documentation</TH
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="LEGALNOTICE"
><P
></P
><A
NAME="LEGALNOTICE"
></A
><P
><I
CLASS="CITETITLE"
>Fcron documentation</I
> Copyright ©
2000-2014 Thibault Godouet, <CODE
CLASS="EMAIL"
>&#60;<A
HREF="mailto:fcron@free.fr"
>fcron@free.fr</A
>&#62;</CODE
></P
><P
>Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.1 or
any later version published by the Free Software Foundation; with the Back-Cover
Texts being <A
HREF="#backcover"
TARGET="_top"
>Back Cover Text</A
>. A copy of the license is included in
<A
HREF="fdl.html"
>Appendix B</A
>.</P
><P
></P
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>&nbsp;</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>&nbsp;</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,684 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
<HTML
><HEAD
><TITLE
>fcron.conf</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK
REL="HOME"
TITLE="Fcron documentation"
HREF="index.html"><LINK
REL="UP"
TITLE="Manual pages of fcron"
HREF="manpages.html"><LINK
REL="PREVIOUS"
TITLE="fcron"
HREF="fcron.8.html"><LINK
REL="NEXT"
TITLE="fcrontab"
HREF="fcrontab.1.html"></HEAD
><BODY
CLASS="REFENTRY"
BGCOLOR="#FFFFFF"
TEXT="#000000"
LINK="#0000FF"
VLINK="#840084"
ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="40%"
ALIGN="left"
VALIGN="top"
><A
HREF="LEGALNOTICE.html"
>Copyright</A
> &copy; 2000-2014 <A
HREF="mailto:fcron@free.fr"
>Thibault Godouet</A
></TD
><TD
WIDTH="20%"
ALIGN="center"
VALIGN="top"
>Fcron 3.2.0 </TD
><TD
WIDTH="40%"
ALIGN="right"
VALIGN="top"
>Web page : <A
HREF="http://fcron.free.fr"
>http://fcron.free.fr</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
>Fcron documentation</TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="fcron.8.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
></TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="fcrontab.1.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><H1
><A
NAME="FCRON.CONF.5"
></A
>fcron.conf</H1
><DIV
CLASS="REFNAMEDIV"
><A
NAME="AEN1421"
></A
><H2
>Name</H2
>fcron.conf&nbsp;--&nbsp;configuration file for fcron and fcrontab</DIV
><DIV
CLASS="REFSECT1"
><A
NAME="AEN1424"
></A
><H2
>Description</H2
><BLOCKQUOTE
CLASS="ABSTRACT"
><DIV
CLASS="ABSTRACT"
><P
></P
><A
NAME="AEN1426"
></A
><P
>This page describes the syntax used for the configuration file
of <A
HREF="fcrontab.1.html"
><SPAN
CLASS="APPLICATION"
>fcrontab</SPAN
></A
>(1), <A
HREF="fcrondyn.1.html"
><SPAN
CLASS="APPLICATION"
>fcrondyn</SPAN
></A
>(1) and <A
HREF="fcron.8.html"
><SPAN
CLASS="APPLICATION"
>fcron</SPAN
></A
>(8).</P
><P
></P
></DIV
></BLOCKQUOTE
><P
>Blank lines, line beginning by a hash sign (#) (which are
considered comments), leading blanks and tabs are ignored. Each line in a
<SPAN
CLASS="SYSTEMITEM"
>fcron.conf</SPAN
> file is of the form
<A
NAME="AEN1436"
></A
><BLOCKQUOTE
CLASS="BLOCKQUOTE"
><P
>name = value</P
></BLOCKQUOTE
> where the blanks around equal-sign (=) are ignored and
optional. Trailing blanks are also ignored.</P
><P
>The following names are recognized (default value in parentheses):
<P
></P
><DIV
CLASS="VARIABLELIST"
><P
><B
>Valid variables in a fcron.conf file</B
></P
><DL
><DT
><B
><CODE
CLASS="VARNAME"
>fcrontabs</CODE
>=<TT
CLASS="REPLACEABLE"
><I
>directory</I
></TT
>
(<TT
CLASS="FILENAME"
>/usr/local/var/spool/fcron</TT
>)</B
></DT
><DD
><P
><SPAN
CLASS="APPLICATION"
>Fcron</SPAN
> spool directory.</P
></DD
><DT
><B
><CODE
CLASS="VARNAME"
>pidfile</CODE
>=<TT
CLASS="REPLACEABLE"
><I
>file-path</I
></TT
>
(<TT
CLASS="FILENAME"
>/usr/local/var/run/fcron.pid</TT
>)</B
></DT
><DD
><P
>Location of <SPAN
CLASS="APPLICATION"
>fcron</SPAN
> pid file (needed by <SPAN
CLASS="APPLICATION"
>fcrontab</SPAN
>
to work properly).</P
></DD
><DT
><B
><CODE
CLASS="VARNAME"
>fifofile</CODE
>=<TT
CLASS="REPLACEABLE"
><I
>file-path</I
></TT
>
(<TT
CLASS="FILENAME"
>/usr/local/var/run/fcron.fifo</TT
>)</B
></DT
><DD
><P
>Location of <SPAN
CLASS="APPLICATION"
>fcron</SPAN
> fifo file (needed by
<SPAN
CLASS="APPLICATION"
>fcrondyn</SPAN
> to communicate with <SPAN
CLASS="APPLICATION"
>fcron</SPAN
>).</P
></DD
><DT
><B
><CODE
CLASS="VARNAME"
>fcronallow</CODE
>=<TT
CLASS="REPLACEABLE"
><I
>file-path</I
></TT
>
(<TT
CLASS="FILENAME"
>/usr/local/etc/fcron.allow</TT
>)</B
></DT
><DD
><P
>Location of fcron.allow file.</P
></DD
><DT
><B
><CODE
CLASS="VARNAME"
>fcrondeny</CODE
>=<TT
CLASS="REPLACEABLE"
><I
>file-path</I
></TT
>
(<TT
CLASS="FILENAME"
>/usr/local/etc/fcron.deny</TT
>)</B
></DT
><DD
><P
>Location of fcron.deny file.</P
></DD
><DT
><B
><CODE
CLASS="VARNAME"
>shell</CODE
>=<TT
CLASS="REPLACEABLE"
><I
>file-path</I
></TT
>
(<TT
CLASS="FILENAME"
>/bin/sh</TT
>)</B
></DT
><DD
><P
>Location of default shell called by <SPAN
CLASS="APPLICATION"
>fcron</SPAN
> when
running a job. When <SPAN
CLASS="APPLICATION"
>fcron</SPAN
> runs a job, <SPAN
CLASS="APPLICATION"
>fcron</SPAN
> uses the value of <CODE
CLASS="ENVAR"
>SHELL</CODE
> from the fcrontab if any, otherwise it uses the value from <TT
CLASS="FILENAME"
>fcron.conf</TT
> if any, or in last resort the value from <TT
CLASS="FILENAME"
>/etc/passwd</TT
>.</P
></DD
><DT
><B
><CODE
CLASS="VARNAME"
>sendmail</CODE
>=<TT
CLASS="REPLACEABLE"
><I
>file-path</I
></TT
>
(<TT
CLASS="FILENAME"
>/usr/sbin/sendmail</TT
>)</B
></DT
><DD
><P
>Location of mailer program called by <SPAN
CLASS="APPLICATION"
>fcron</SPAN
> to
send job output.</P
></DD
><DT
><B
><CODE
CLASS="VARNAME"
>editor</CODE
>=<TT
CLASS="REPLACEABLE"
><I
>file-path</I
></TT
>
(<TT
CLASS="FILENAME"
>/usr/bin/vi</TT
>)</B
></DT
><DD
><P
>Location of default editor used when invoking
"fcrontab -e".</P
></DD
></DL
></DIV
> File-paths and directories are complete and absolute
(i.e. beginning by a "/").</P
><P
>To run several instances of <SPAN
CLASS="APPLICATION"
>fcron</SPAN
> simultaneously on the same
system, you must use a different configuration file for each instance. Each
instance must have a different <CODE
CLASS="VARNAME"
>fcrontabs</CODE
>,
<CODE
CLASS="VARNAME"
>pidfile</CODE
> and <CODE
CLASS="VARNAME"
>fifofile</CODE
>. Then, use <A
HREF="fcron.8.html"
><SPAN
CLASS="APPLICATION"
>fcron</SPAN
></A
>(8)'s command line option
<CODE
CLASS="PARAMETER"
>-c</CODE
> to select which config file (so which instance) you
refer to.</P
></DIV
><DIV
CLASS="REFSECT1"
><A
NAME="AEN1518"
></A
><H2
>Files</H2
><P
></P
><DIV
CLASS="VARIABLELIST"
><DL
><DT
><B
><TT
CLASS="FILENAME"
>/usr/local/etc/fcron.conf</TT
></B
></DT
><DD
><P
>Configuration file for <SPAN
CLASS="APPLICATION"
>fcron</SPAN
>, <SPAN
CLASS="APPLICATION"
>fcrontab</SPAN
> and
<SPAN
CLASS="APPLICATION"
>fcrondyn</SPAN
>: contains paths (spool dir, pid file) and default programs to use
(editor, shell, etc). See <A
HREF="fcron.conf.5.html"
><SPAN
CLASS="SYSTEMITEM"
>fcron.conf</SPAN
></A
>(5) for
more details.</P
></DD
><DT
><B
><TT
CLASS="FILENAME"
>/usr/local/etc/fcron.allow</TT
></B
></DT
><DD
><P
>Users allowed to use <SPAN
CLASS="APPLICATION"
>fcrontab</SPAN
> and <SPAN
CLASS="APPLICATION"
>fcrondyn</SPAN
> (one
name per line, special name "all" acts for everyone)</P
></DD
><DT
><B
><TT
CLASS="FILENAME"
>/usr/local/etc/fcron.deny</TT
></B
></DT
><DD
><P
>Users who are not allowed to use <SPAN
CLASS="APPLICATION"
>fcrontab</SPAN
> and
<SPAN
CLASS="APPLICATION"
>fcrondyn</SPAN
> (same format as allow file)</P
></DD
><DT
><B
><TT
CLASS="FILENAME"
>/usr/local/etc/pam.d/fcron</TT
> (or
<TT
CLASS="FILENAME"
>/usr/local/etc/pam.conf</TT
>)</B
></DT
><DD
><P
><SPAN
CLASS="PRODUCTNAME"
>PAM</SPAN
> configuration file for
<SPAN
CLASS="APPLICATION"
>fcron</SPAN
>. Take a look at <SPAN
CLASS="APPLICATION"
>pam</SPAN
>(8) for more details.</P
></DD
></DL
></DIV
></DIV
><DIV
CLASS="REFSECT1"
><A
NAME="AEN1554"
></A
><H2
>See also</H2
><P
></P
><TABLE
BORDER="0"
><TBODY
><TR
><TD
><A
HREF="fcrontab.1.html"
><SPAN
CLASS="APPLICATION"
>fcrontab</SPAN
>(1),</A
></TD
></TR
><TR
><TD
><A
HREF="fcrondyn.1.html"
><SPAN
CLASS="APPLICATION"
>fcrondyn</SPAN
>(1),</A
></TD
></TR
><TR
><TD
><A
HREF="fcrontab.5.html"
><SPAN
CLASS="APPLICATION"
>fcrontab</SPAN
>(5),</A
></TD
></TR
><TR
><TD
><A
HREF="fcron.conf.5.html"
><SPAN
CLASS="SYSTEMITEM"
>fcron.conf</SPAN
>(5),</A
></TD
></TR
><TR
><TD
><A
HREF="fcron.8.html"
><SPAN
CLASS="APPLICATION"
>fcron</SPAN
>(8).</A
></TD
></TR
><TR
><TD
>If you're learning how to use fcron from scratch, I suggest
that you read the HTML version of the documentation (if your are not reading it
right now! :) ): the content is the same, but it is easier to navigate thanks
to the hyperlinks.</TD
></TR
></TBODY
></TABLE
><P
></P
></DIV
><DIV
CLASS="REFSECT1"
><A
NAME="AEN1573"
></A
><H2
>Author</H2
><P
>Thibault Godouet <CODE
CLASS="EMAIL"
>&#60;<A
HREF="mailto:fcron@free.fr"
>fcron@free.fr</A
>&#62;</CODE
></P
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="fcron.8.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="fcrontab.1.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>fcron</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="manpages.html"
ACCESSKEY="U"
>Up</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>fcrontab</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>

File diff suppressed because it is too large Load Diff

View File

@ -1,858 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
<HTML
><HEAD
><TITLE
>fcrontab</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK
REL="HOME"
TITLE="Fcron documentation"
HREF="index.html"><LINK
REL="UP"
TITLE="Manual pages of fcron"
HREF="manpages.html"><LINK
REL="PREVIOUS"
TITLE="fcron.conf"
HREF="fcron.conf.5.html"><LINK
REL="NEXT"
TITLE="fcrontab"
HREF="fcrontab.5.html"></HEAD
><BODY
CLASS="REFENTRY"
BGCOLOR="#FFFFFF"
TEXT="#000000"
LINK="#0000FF"
VLINK="#840084"
ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="40%"
ALIGN="left"
VALIGN="top"
><A
HREF="LEGALNOTICE.html"
>Copyright</A
> &copy; 2000-2014 <A
HREF="mailto:fcron@free.fr"
>Thibault Godouet</A
></TD
><TD
WIDTH="20%"
ALIGN="center"
VALIGN="top"
>Fcron 3.2.0 </TD
><TD
WIDTH="40%"
ALIGN="right"
VALIGN="top"
>Web page : <A
HREF="http://fcron.free.fr"
>http://fcron.free.fr</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
>Fcron documentation</TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="fcron.conf.5.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
></TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="fcrontab.5.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><H1
><A
NAME="FCRONTAB.1"
></A
>fcrontab</H1
><DIV
CLASS="REFNAMEDIV"
><A
NAME="AEN1583"
></A
><H2
>Name</H2
>fcrontab&nbsp;--&nbsp;manipulate per-user fcrontab
files</DIV
><DIV
CLASS="REFSYNOPSISDIV"
><A
NAME="FCRONTAB.1.SYNOPSIS"
></A
><H2
>Synopsis</H2
><P
><B
CLASS="COMMAND"
>fcrontab</B
> [-c
<TT
CLASS="REPLACEABLE"
><I
>file</I
></TT
>] [-n] <TT
CLASS="REPLACEABLE"
><I
>file</I
></TT
> [<TT
CLASS="REPLACEABLE"
><I
>user</I
></TT
> | -u
<TT
CLASS="REPLACEABLE"
><I
>user</I
></TT
>]</P
><P
><B
CLASS="COMMAND"
>fcrontab</B
> [-c
<TT
CLASS="REPLACEABLE"
><I
>file</I
></TT
>] [-n] {-l | -r | -e | -z} [<TT
CLASS="REPLACEABLE"
><I
>user</I
></TT
> | -u
<TT
CLASS="REPLACEABLE"
><I
>user</I
></TT
>]</P
><P
><B
CLASS="COMMAND"
>fcrontab</B
> [-h]</P
></DIV
><DIV
CLASS="REFSECT1"
><A
NAME="AEN1617"
></A
><H2
>Description</H2
><P
><SPAN
CLASS="APPLICATION"
>Fcrontab</SPAN
> is the program intended to
install, edit, list and remove the tables used by <A
HREF="fcron.8.html"
><SPAN
CLASS="APPLICATION"
>fcron</SPAN
>(8)</A
> daemon. As <SPAN
CLASS="APPLICATION"
>fcron</SPAN
> internally
uses a non-human readable format (this is needed because <SPAN
CLASS="APPLICATION"
>fcron</SPAN
>
saves more informations than the user gives, for example the time
and date of next execution), the user cannot edit directly his
<SPAN
CLASS="SYSTEMITEM"
>fcrontab</SPAN
> (the one used by <SPAN
CLASS="APPLICATION"
>fcron</SPAN
>).</P
><P
>When a user
installs a <SPAN
CLASS="SYSTEMITEM"
>fcrontab</SPAN
>, the source file is saved in the spool
directory (<TT
CLASS="FILENAME"
>/usr/local/var/spool/fcron</TT
>) to allow future
editions, and a formatted file is generated for the <SPAN
CLASS="APPLICATION"
>fcron</SPAN
> daemon,
which is signaled once about ten seconds before the next minute for
all changes made previously. The daemon is not informed of the changes
immediately but at most once a minute
to keep ill disposed users from blocking the daemon by installing
<SPAN
CLASS="SYSTEMITEM"
>fcrontab</SPAN
>s over and over (ie. denial of service attack). We will call
"<EM
>fcrontab</EM
>" the source file of the <SPAN
CLASS="SYSTEMITEM"
>fcrontab</SPAN
>
in the following.</P
><P
>A user can install a <SPAN
CLASS="SYSTEMITEM"
>fcrontab</SPAN
> if
he is listed in the <TT
CLASS="FILENAME"
>/usr/local/etc/fcron.allow</TT
> and not
(unless by the keyword all) listed in
<TT
CLASS="FILENAME"
>/usr/local/etc/fcron.deny</TT
> (see section "<A
HREF="fcrontab.1.html#FCRONTAB.1.FILES"
>files</A
>" below). If neither
<TT
CLASS="FILENAME"
>fcron.allow</TT
> nor <TT
CLASS="FILENAME"
>fcron.deny</TT
>
exist, all users are allowed. None of these files have to exist, but
if they do, the deny file takes precedence.</P
><P
>The first
form of the command is used to install a new <SPAN
CLASS="SYSTEMITEM"
>fcrontab</SPAN
> file, from
any named file or from standard input if the pseudo-filename "-" is
given, replacing the previous one (if any): each user can have only
one <SPAN
CLASS="SYSTEMITEM"
>fcrontab</SPAN
>.</P
><P
>For instance, root can create a
systemwide fcrontab file, say <TT
CLASS="FILENAME"
>/etc/fcrontab</TT
>,
and run "<B
CLASS="COMMAND"
>fcrontab</B
>
<TT
CLASS="FILENAME"
>/etc/fcrontab</TT
>" to install the new version after
each change of the file. Or (s)he can create a new fcrontab running
a simple "<B
CLASS="COMMAND"
>fcrontab</B
>", and then maintain it using
"<B
CLASS="COMMAND"
>fcrontab</B
> <CODE
CLASS="OPTION"
>-e</CODE
>". Same
considerations apply to a non privileged user.</P
></DIV
><DIV
CLASS="REFSECT1"
><A
NAME="AEN1651"
></A
><H2
>Options</H2
><P
></P
><DIV
CLASS="VARIABLELIST"
><DL
><DT
><B
><CODE
CLASS="OPTION"
>-u</CODE
> <TT
CLASS="REPLACEABLE"
><I
>user</I
></TT
></B
></DT
><DD
><P
>Specify the user whose <SPAN
CLASS="SYSTEMITEM"
>fcrontab</SPAN
> will be managed, or
"systab" for the system fcrontab. Should only be
used by root. If not given, the <SPAN
CLASS="SYSTEMITEM"
>fcrontab</SPAN
> file of the
user invoking <SPAN
CLASS="APPLICATION"
>fcrontab</SPAN
> will be handled. It may be useful
since the <SPAN
CLASS="APPLICATION"
>su</SPAN
>(8) command may
confuse <SPAN
CLASS="APPLICATION"
>fcrontab</SPAN
>. <DIV
CLASS="NOTE"
><BLOCKQUOTE
CLASS="NOTE"
><P
><B
>Note: </B
>the
'<TT
CLASS="REPLACEABLE"
><I
>user</I
></TT
>' in the <A
HREF="fcrontab.1.html#FCRONTAB.1.SYNOPSIS"
>synopsys</A
> is equivalent
to a '<CODE
CLASS="OPTION"
>-u</CODE
>
<TT
CLASS="REPLACEABLE"
><I
>user</I
></TT
>'.</P
></BLOCKQUOTE
></DIV
></P
></DD
><DT
><B
><CODE
CLASS="OPTION"
>-l</CODE
></B
></DT
><DD
><P
>List user's current <SPAN
CLASS="SYSTEMITEM"
>fcrontab</SPAN
> to standard
output.</P
></DD
><DT
><B
><CODE
CLASS="OPTION"
>-e</CODE
></B
></DT
><DD
><P
>Edit user's current <SPAN
CLASS="SYSTEMITEM"
>fcrontab</SPAN
> using either the editor
specified by the environment variable
<CODE
CLASS="ENVAR"
>VISUAL</CODE
>, or <CODE
CLASS="ENVAR"
>EDITOR</CODE
> if
<CODE
CLASS="ENVAR"
>VISUAL</CODE
> is not set. If none or them are set,
<B
CLASS="COMMAND"
>/usr/bin/vi</B
> will be used.</P
></DD
><DT
><B
><CODE
CLASS="OPTION"
>-r</CODE
></B
></DT
><DD
><P
>Remove user's <SPAN
CLASS="SYSTEMITEM"
>fcrontab</SPAN
>.</P
></DD
><DT
><B
><CODE
CLASS="OPTION"
>-z</CODE
></B
></DT
><DD
><P
>Reinstall user's <SPAN
CLASS="SYSTEMITEM"
>fcrontab</SPAN
> from its source code. All
informations <SPAN
CLASS="APPLICATION"
>fcron</SPAN
> may have kept in the binary
<SPAN
CLASS="SYSTEMITEM"
>fcrontab</SPAN
> (such as the last execution time and date) will
be forgotten (ie. lost).</P
></DD
><DT
><B
><CODE
CLASS="OPTION"
>-n</CODE
></B
></DT
><DD
><P
>Ignore previous version. If this option is not given,
<SPAN
CLASS="APPLICATION"
>fcron</SPAN
> will try to keep as much information as possible
between old and new version of the <SPAN
CLASS="SYSTEMITEM"
>fcrontab</SPAN
> (time and
date of next execution, if job is in serial queue, etc) if
the line hasn't been modified (same fields, same shell
command).</P
></DD
><DT
><B
><CODE
CLASS="OPTION"
>-c</CODE
> <TT
CLASS="REPLACEABLE"
><I
>file</I
></TT
></B
></DT
><DD
><P
>Make <SPAN
CLASS="APPLICATION"
>fcrontab</SPAN
> use config file
<TT
CLASS="REPLACEABLE"
><I
>file</I
></TT
> instead of default config
file <TT
CLASS="FILENAME"
>/usr/local/etc/fcron.conf</TT
>. To
interact with a running <SPAN
CLASS="APPLICATION"
>fcron</SPAN
> process, <SPAN
CLASS="APPLICATION"
>fcrontab</SPAN
> must
use the same config file as the process. That way, several
<SPAN
CLASS="APPLICATION"
>fcron</SPAN
> processes can run simultaneously on an only
system.</P
></DD
><DT
><B
><CODE
CLASS="OPTION"
>-d</CODE
></B
></DT
><DD
><P
>Run in debug mode. In this mode, many informational
messages will be output in order to check if anything went
wrong.</P
></DD
><DT
><B
><CODE
CLASS="OPTION"
>-h</CODE
></B
></DT
><DD
><P
>Display a brief description of the options.</P
></DD
><DT
><B
><CODE
CLASS="OPTION"
>-V</CODE
></B
></DT
><DD
><P
>Display an informational message about <SPAN
CLASS="APPLICATION"
>fcrontab</SPAN
>,
including its version and the license under which it is
distributed.</P
></DD
></DL
></DIV
></DIV
><DIV
CLASS="REFSECT1"
><A
NAME="AEN1736"
></A
><H2
>Return values</H2
><P
><SPAN
CLASS="APPLICATION"
>Fcrontab</SPAN
> returns 0 on
normal exit and 1 on error.</P
></DIV
><DIV
CLASS="REFSECT1"
><A
NAME="AEN1740"
></A
><H2
>Conforming to</H2
><P
>Should be POSIX compliant.</P
></DIV
><DIV
CLASS="REFSECT1"
><A
NAME="FCRONTAB.1.FILES"
></A
><H2
>Files</H2
><P
></P
><DIV
CLASS="VARIABLELIST"
><DL
><DT
><B
><TT
CLASS="FILENAME"
>/usr/local/etc/fcron.conf</TT
></B
></DT
><DD
><P
>Configuration file for <SPAN
CLASS="APPLICATION"
>fcron</SPAN
>, <SPAN
CLASS="APPLICATION"
>fcrontab</SPAN
> and
<SPAN
CLASS="APPLICATION"
>fcrondyn</SPAN
>: contains paths (spool dir, pid file) and
default programs to use (editor, shell, etc). See <A
HREF="fcron.conf.5.html"
><SPAN
CLASS="SYSTEMITEM"
>fcron.conf</SPAN
>(5)</A
> for more
details.</P
></DD
><DT
><B
><TT
CLASS="FILENAME"
>/usr/local/etc/fcron.allow</TT
></B
></DT
><DD
><P
>Users allowed to use <SPAN
CLASS="APPLICATION"
>fcrontab</SPAN
> and <SPAN
CLASS="APPLICATION"
>fcrondyn</SPAN
> (one name
per line, special name "all" acts for everyone)</P
></DD
><DT
><B
><TT
CLASS="FILENAME"
>/usr/local/etc/fcron.deny</TT
></B
></DT
><DD
><P
>Users who are not allowed to use <SPAN
CLASS="APPLICATION"
>fcrontab</SPAN
> and
<SPAN
CLASS="APPLICATION"
>fcrondyn</SPAN
> (same format as allow file)</P
></DD
><DT
><B
><TT
CLASS="FILENAME"
>/usr/local/etc/pam.d/fcron</TT
> (or
<TT
CLASS="FILENAME"
>/usr/local/etc/pam.conf</TT
>)</B
></DT
><DD
><P
><SPAN
CLASS="PRODUCTNAME"
>PAM</SPAN
> configuration file for
<SPAN
CLASS="APPLICATION"
>fcron</SPAN
>. Take a look at pam(8) for more details.</P
></DD
></DL
></DIV
></DIV
><DIV
CLASS="REFSECT1"
><A
NAME="AEN1778"
></A
><H2
>See also</H2
><P
></P
><TABLE
BORDER="0"
><TBODY
><TR
><TD
><A
HREF="fcrontab.1.html"
><SPAN
CLASS="APPLICATION"
>fcrontab</SPAN
>(1),</A
></TD
></TR
><TR
><TD
><A
HREF="fcrondyn.1.html"
><SPAN
CLASS="APPLICATION"
>fcrondyn</SPAN
>(1),</A
></TD
></TR
><TR
><TD
><A
HREF="fcrontab.5.html"
><SPAN
CLASS="APPLICATION"
>fcrontab</SPAN
>(5),</A
></TD
></TR
><TR
><TD
><A
HREF="fcron.conf.5.html"
><SPAN
CLASS="SYSTEMITEM"
>fcron.conf</SPAN
>(5),</A
></TD
></TR
><TR
><TD
><A
HREF="fcron.8.html"
><SPAN
CLASS="APPLICATION"
>fcron</SPAN
>(8).</A
></TD
></TR
><TR
><TD
>If you're learning how to use fcron from scratch, I suggest
that you read the HTML version of the documentation (if your are not reading it
right now! :) ): the content is the same, but it is easier to navigate thanks
to the hyperlinks.</TD
></TR
></TBODY
></TABLE
><P
></P
></DIV
><DIV
CLASS="REFSECT1"
><A
NAME="AEN1797"
></A
><H2
>Author</H2
><P
>Thibault Godouet <CODE
CLASS="EMAIL"
>&#60;<A
HREF="mailto:fcron@free.fr"
>fcron@free.fr</A
>&#62;</CODE
></P
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="fcron.conf.5.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="fcrontab.5.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>fcron.conf</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="manpages.html"
ACCESSKEY="U"
>Up</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>fcrontab</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>

File diff suppressed because it is too large Load Diff

View File

@ -1,709 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
<HTML
><HEAD
><TITLE
>GNU Free Documentation License</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK
REL="HOME"
TITLE="Fcron documentation"
HREF="index.html"><LINK
REL="PREVIOUS"
TITLE="GNU GENERAL PUBLIC LICENSE"
HREF="gpl.html"></HEAD
><BODY
CLASS="APPENDIX"
BGCOLOR="#FFFFFF"
TEXT="#000000"
LINK="#0000FF"
VLINK="#840084"
ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="40%"
ALIGN="left"
VALIGN="top"
><A
HREF="LEGALNOTICE.html"
>Copyright</A
> &copy; 2000-2014 <A
HREF="mailto:fcron@free.fr"
>Thibault Godouet</A
></TD
><TD
WIDTH="20%"
ALIGN="center"
VALIGN="top"
>Fcron 3.2.0 </TD
><TD
WIDTH="40%"
ALIGN="right"
VALIGN="top"
>Web page : <A
HREF="http://fcron.free.fr"
>http://fcron.free.fr</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
>Fcron documentation</TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="gpl.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
></TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
>&nbsp;</TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="APPENDIX"
><H1
><A
NAME="FDL"
></A
>Appendix B. GNU Free Documentation License</H1
><DIV
CLASS="TOC"
><DL
><DT
><B
>Table of Contents</B
></DT
><DT
>0. <A
HREF="fdl.html#FDL-PREAMBLE"
>PREAMBLE</A
></DT
><DT
>1. <A
HREF="fdl.html#FDL-APPLICABILITY"
>APPLICABILITY AND DEFINITIONS</A
></DT
><DT
>2. <A
HREF="fdl.html#FDL-VERBATIM"
>VERBATIM COPYING</A
></DT
><DT
>3. <A
HREF="fdl.html#FDL-COPYING"
>COPYING IN QUANTITY</A
></DT
><DT
>4. <A
HREF="fdl.html#FDL-MODIFICATIONS"
>MODIFICATIONS</A
></DT
><DT
>5. <A
HREF="fdl.html#FDL-COMBINING"
>COMBINING DOCUMENTS</A
></DT
><DT
>6. <A
HREF="fdl.html#FDL-COLLECTIONS"
>COLLECTIONS OF DOCUMENTS</A
></DT
><DT
>7. <A
HREF="fdl.html#FDL-AGGREGATION"
>AGGREGATION WITH INDEPENDENT WORKS</A
></DT
><DT
>8. <A
HREF="fdl.html#FDL-TRANSLATION"
>TRANSLATION</A
></DT
><DT
>9. <A
HREF="fdl.html#FDL-TERMINATION"
>TERMINATION</A
></DT
><DT
>10. <A
HREF="fdl.html#FDL-FUTURE"
>FUTURE REVISIONS OF THIS LICENSE</A
></DT
><DT
><A
HREF="fdl.html#FDL-HOWTO"
>How to use this License for your documents</A
></DT
></DL
></DIV
><P
>Version 1.1, March 2000</P
><A
NAME="AEN3413"
></A
><BLOCKQUOTE
CLASS="BLOCKQUOTE"
><P
>Copyright (C) 2000 Free Software Foundation, Inc. 59 Temple
Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and
distribute verbatim copies of this license document, but changing it is not
allowed.</P
></BLOCKQUOTE
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
NAME="FDL-PREAMBLE"
>0. PREAMBLE</A
></H1
><P
>The purpose of this License is to make a manual, textbook, or
other written document "free" in the sense of freedom: to assure everyone the
effective freedom to copy and redistribute it, with or without modifying it,
either commercially or noncommercially. Secondarily, this License preserves for
the author and publisher a way to get credit for their work, while not being
considered responsible for modifications made by others.</P
><P
>This License is a kind of "copyleft", which means that
derivative works of the document must themselves be free in the same sense. It
complements the GNU General Public License, which is a copyleft license designed
for free software.</P
><P
>We have designed this License in order to use it for manuals
for free software, because free software needs free documentation: a free
program should come with manuals providing the same freedoms that the software
does. But this License is not limited to software manuals; it can be used for
any textual work, regardless of subject matter or whether it is published as a
printed book. We recommend this License principally for works whose purpose is
instruction or reference.</P
></DIV
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
NAME="FDL-APPLICABILITY"
>1. APPLICABILITY AND DEFINITIONS</A
></H1
><P
>This License applies to any manual or other work that contains
a notice placed by the copyright holder saying it can be distributed under the
terms of this License. The "Document", below, refers to any such manual or
work. Any member of the public is a licensee, and is addressed as "you".</P
><P
>A "Modified Version" of the Document means any work containing
the Document or a portion of it, either copied verbatim, or with modifications
and/or translated into another language.</P
><P
>A "Secondary Section" is a named appendix or a front-matter
section of the Document that deals exclusively with the relationship of the
publishers or authors of the Document to the Document's overall subject (or to
related matters) and contains nothing that could fall directly within that
overall subject. (For example, if the Document is in part a textbook of
mathematics, a Secondary Section may not explain any mathematics.) The
relationship could be a matter of historical connection with the subject or with
related matters, or of legal, commercial, philosophical, ethical or political
position regarding them.</P
><P
>The "Invariant Sections" are certain Secondary Sections whose
titles are designated, as being those of Invariant Sections, in the notice that
says that the Document is released under this License.</P
><P
>The "Cover Texts" are certain short passages of text that are
listed, as Front-Cover Texts or Back-Cover Texts, in the notice that says that
the Document is released under this License.</P
><P
>A "Transparent" copy of the Document means a machine-readable
copy, represented in a format whose specification is available to the general
public, whose contents can be viewed and edited directly and straightforwardly
with generic text editors or (for images composed of pixels) generic paint
programs or (for drawings) some widely available drawing editor, and that is
suitable for input to text formatters or for automatic translation to a variety
of formats suitable for input to text formatters. A copy made in an otherwise
Transparent file format whose markup has been designed to thwart or discourage
subsequent modification by readers is not Transparent. A copy that is not
"Transparent" is called "Opaque".</P
><P
>Examples of suitable formats for Transparent copies include
plain ASCII without markup, Texinfo input format, LaTeX input format, SGML or
XML using a publicly available DTD, and standard-conforming simple HTML designed
for human modification. Opaque formats include PostScript, PDF, proprietary
formats that can be read and edited only by proprietary word processors, SGML or
XML for which the DTD and/or processing tools are not generally available, and
the machine-generated HTML produced by some word processors for output purposes
only.</P
><P
>The "Title Page" means, for a printed book, the title page
itself, plus such following pages as are needed to hold, legibly, the material
this License requires to appear in the title page. For works in formats which do
not have any title page as such, "Title Page" means the text near the most
prominent appearance of the work's title, preceding the beginning of the body of
the text.</P
></DIV
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
NAME="FDL-VERBATIM"
>2. VERBATIM COPYING</A
></H1
><P
>You may copy and distribute the Document in any medium, either
commercially or noncommercially, provided that this License, the copyright
notices, and the license notice saying this License applies to the Document are
reproduced in all copies, and that you add no other conditions whatsoever to
those of this License. You may not use technical measures to obstruct or
control the reading or further copying of the copies you make or distribute.
However, you may accept compensation in exchange for copies. If you distribute
a large enough number of copies you must also follow the conditions in section
3.</P
><P
>You may also lend copies, under the same conditions stated
above, and you may publicly display copies.</P
></DIV
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
NAME="FDL-COPYING"
>3. COPYING IN QUANTITY</A
></H1
><P
>If you publish printed copies of the Document numbering more
than 100, and the Document's license notice requires Cover Texts, you must
enclose the copies in covers that carry, clearly and legibly, all these Cover
Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the back
cover. Both covers must also clearly and legibly identify you as the publisher
of these copies. The front cover must present the full title with all words of
the title equally prominent and visible. You may add other material on the
covers in addition. Copying with changes limited to the covers, as long as they
preserve the title of the Document and satisfy these conditions, can be treated
as verbatim copying in other respects.</P
><P
>If the required texts for either cover are too voluminous to
fit legibly, you should put the first ones listed (as many as fit reasonably) on
the actual cover, and continue the rest onto adjacent pages.</P
><P
>If you publish or distribute Opaque copies of the Document
numbering more than 100, you must either include a machine-readable Transparent
copy along with each Opaque copy, or state in or with each Opaque copy a
publicly-accessible computer-network location containing a complete Transparent
copy of the Document, free of added material, which the general network-using
public has access to download anonymously at no charge using public-standard
network protocols. If you use the latter option, you must take reasonably
prudent steps, when you begin distribution of Opaque copies in quantity, to
ensure that this Transparent copy will remain thus accessible at the stated
location until at least one year after the last time you distribute an Opaque
copy (directly or through your agents or retailers) of that edition to the
public.</P
><P
>It is requested, but not required, that you contact the
authors of the Document well before redistributing any large number of copies,
to give them a chance to provide you with an updated version of the
Document.</P
></DIV
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
NAME="FDL-MODIFICATIONS"
>4. MODIFICATIONS</A
></H1
><P
>You may copy and distribute a Modified Version of the Document
under the conditions of sections 2 and 3 above, provided that you release the
Modified Version under precisely this License, with the Modified Version filling
the role of the Document, thus licensing distribution and modification of the
Modified Version to whoever possesses a copy of it. In addition, you must do
these things in the Modified Version:</P
><P
></P
><OL
TYPE="A"
><LI
><P
>Use in the Title Page (and on the covers, if
any) a title distinct from that of the Document, and from those of previous
versions (which should, if there were any, be listed in the History section of
the Document). You may use the same title as a previous version if the original
publisher of that version gives permission.</P
></LI
><LI
><P
>List on the Title Page, as authors, one or more
persons or entities responsible for authorship of the modifications in the
Modified Version, together with at least five of the principal authors of the
Document (all of its principal authors, if it has less than five).</P
></LI
><LI
><P
>State on the Title page the name of the
publisher of the Modified Version, as the publisher.</P
></LI
><LI
><P
>Preserve all the copyright notices of the
Document.</P
></LI
><LI
><P
>Add an appropriate copyright notice for your
modifications adjacent to the other copyright notices.</P
></LI
><LI
><P
>Include, immediately after the copyright
notices, a license notice giving the public permission to use the Modified
Version under the terms of this License, in the form shown in the Addendum
below.</P
></LI
><LI
><P
>Preserve in that license notice the full lists
of Invariant Sections and required Cover Texts given in the Document's license
notice.</P
></LI
><LI
><P
>Include an unaltered copy of this
License.</P
></LI
><LI
><P
>Preserve the section entitled "History", and its
title, and add to it an item stating at least the title, year, new authors, and
publisher of the Modified Version as given on the Title Page. If there is no
section entitled "History" in the Document, create one stating the title, year,
authors, and publisher of the Document as given on its Title Page, then add an
item describing the Modified Version as stated in the previous sentence.</P
></LI
><LI
><P
>Preserve the network location, if any, given in
the Document for public access to a Transparent copy of the Document, and
likewise the network locations given in the Document for previous versions it
was based on. These may be placed in the "History" section. You may omit a
network location for a work that was published at least four years before the
Document itself, or if the original publisher of the version it refers to gives
permission.</P
></LI
><LI
><P
>In any section entitled "Acknowledgements" or
"Dedications", preserve the section's title, and preserve in the section all the
substance and tone of each of the contributor acknowledgements and/or
dedications given therein.</P
></LI
><LI
><P
>Preserve all the Invariant Sections of the
Document, unaltered in their text and in their titles. Section numbers or the
equivalent are not considered part of the section titles.</P
></LI
><LI
><P
>Delete any section entitled "Endorsements".
Such a section may not be included in the Modified Version.</P
></LI
><LI
><P
>Do not retitle any existing section as
"Endorsements" or to conflict in title with any Invariant Section.</P
></LI
></OL
><P
>If the Modified Version includes new front-matter sections or
appendices that qualify as Secondary Sections and contain no material copied
from the Document, you may at your option designate some or all of these
sections as invariant. To do this, add their titles to the list of Invariant
Sections in the Modified Version's license notice. These titles must be
distinct from any other section titles.</P
><P
>You may add a section entitled "Endorsements", provided it
contains nothing but endorsements of your Modified Version by various
parties--for example, statements of peer review or that the text has been
approved by an organization as the authoritative definition of a
standard.</P
><P
>You may add a passage of up to five words as a Front-Cover
Text, and a passage of up to 25 words as a Back-Cover Text, to the end of the
list of Cover Texts in the Modified Version. Only one passage of Front-Cover
Text and one of Back-Cover Text may be added by (or through arrangements made
by) any one entity. If the Document already includes a cover text for the same
cover, previously added by you or by arrangement made by the same entity you are
acting on behalf of, you may not add another; but you may replace the old one,
on explicit permission from the previous publisher that added the old
one.</P
><P
>The author(s) and publisher(s) of the Document do not by this
License give permission to use their names for publicity for or to assert or
imply endorsement of any Modified Version.</P
></DIV
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
NAME="FDL-COMBINING"
>5. COMBINING DOCUMENTS</A
></H1
><P
>You may combine the Document with other documents released
under this License, under the terms defined in section 4 above for modified
versions, provided that you include in the combination all of the Invariant
Sections of all of the original documents, unmodified, and list them all as
Invariant Sections of your combined work in its license notice.</P
><P
>The combined work need only contain one copy of this License,
and multiple identical Invariant Sections may be replaced with a single copy.
If there are multiple Invariant Sections with the same name but different
contents, make the title of each such section unique by adding at the end of it,
in parentheses, the name of the original author or publisher of that section if
known, or else a unique number. Make the same adjustment to the section titles
in the list of Invariant Sections in the license notice of the combined
work.</P
><P
>In the combination, you must combine any sections entitled
"History" in the various original documents, forming one section entitled
"History"; likewise combine any sections entitled "Acknowledgements", and any
sections entitled "Dedications". You must delete all sections entitled
"Endorsements."</P
></DIV
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
NAME="FDL-COLLECTIONS"
>6. COLLECTIONS OF DOCUMENTS</A
></H1
><P
>You may make a collection consisting of the Document and other
documents released under this License, and replace the individual copies of this
License in the various documents with a single copy that is included in the
collection, provided that you follow the rules of this License for verbatim
copying of each of the documents in all other respects.</P
><P
>You may extract a single document from such a collection, and
distribute it individually under this License, provided you insert a copy of
this License into the extracted document, and follow this License in all other
respects regarding verbatim copying of that document.</P
></DIV
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
NAME="FDL-AGGREGATION"
>7. AGGREGATION WITH INDEPENDENT WORKS</A
></H1
><P
>A compilation of the Document or its derivatives with other
separate and independent documents or works, in or on a volume of a storage or
distribution medium, does not as a whole count as a Modified Version of the
Document, provided no compilation copyright is claimed for the compilation.
Such a compilation is called an "aggregate", and this License does not apply to
the other self-contained works thus compiled with the Document, on account of
their being thus compiled, if they are not themselves derivative works of the
Document.</P
><P
>If the Cover Text requirement of section 3 is applicable to
these copies of the Document, then if the Document is less than one quarter of
the entire aggregate, the Document's Cover Texts may be placed on covers that
surround only the Document within the aggregate. Otherwise they must appear on
covers around the whole aggregate.</P
></DIV
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
NAME="FDL-TRANSLATION"
>8. TRANSLATION</A
></H1
><P
>Translation is considered a kind of modification, so you may
distribute translations of the Document under the terms of section 4. Replacing
Invariant Sections with translations requires special permission from their
copyright holders, but you may include translations of some or all Invariant
Sections in addition to the original versions of these Invariant Sections. You
may include a translation of this License provided that you also include the
original English version of this License. In case of a disagreement between the
translation and the original English version of this License, the original
English version will prevail.</P
></DIV
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
NAME="FDL-TERMINATION"
>9. TERMINATION</A
></H1
><P
>You may not copy, modify, sublicense, or distribute the
Document except as expressly provided for under this License. Any other attempt
to copy, modify, sublicense or distribute the Document is void, and will
automatically terminate your rights under this License. However, parties who
have received copies, or rights, from you under this License will not have their
licenses terminated so long as such parties remain in full compliance.</P
></DIV
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
NAME="FDL-FUTURE"
>10. FUTURE REVISIONS OF THIS LICENSE</A
></H1
><P
>The Free Software Foundation may publish new, revised versions
of the GNU Free Documentation License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to address
new problems or concerns. See <A
HREF="http://www.gnu.org/copyleft/"
TARGET="_top"
>http://www.gnu.org/copyleft/</A
>.</P
><P
>Each version of the License is given a distinguishing version
number. If the Document specifies that a particular numbered version of this
License "or any later version" applies to it, you have the option of following
the terms and conditions either of that specified version or of any later
version that has been published (not as a draft) by the Free Software
Foundation. If the Document does not specify a version number of this License,
you may choose any version ever published (not as a draft) by the Free Software
Foundation.</P
></DIV
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
NAME="FDL-HOWTO"
>How to use this License for your documents</A
></H1
><P
>To use this License in a document you have written, include a
copy of the License in the document and put the following copyright and license
notices just after the title page:</P
><A
NAME="AEN3503"
></A
><BLOCKQUOTE
CLASS="BLOCKQUOTE"
><P
> Copyright (c) YEAR YOUR NAME. Permission is granted to copy, distribute
and/or modify this document under the terms of the GNU Free Documentation
License, Version 1.1 or any later version published by the Free Software
Foundation; with the Invariant Sections being LIST THEIR TITLES, with the
Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST. A copy
of the license is included in the section entitled "GNU Free Documentation
License".</P
></BLOCKQUOTE
><P
>If you have no Invariant Sections, write "with no Invariant
Sections" instead of saying which ones are invariant. If you have no
Front-Cover Texts, write "no Front-Cover Texts" instead of "Front-Cover Texts
being LIST"; likewise for Back-Cover Texts.</P
><P
>If your document contains nontrivial examples of program code,
we recommend releasing these examples in parallel under your choice of free
software license, such as the GNU General Public License, to permit their use in
free software.</P
></DIV
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="gpl.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>&nbsp;</TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>GNU GENERAL PUBLIC LICENSE</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
>&nbsp;</TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>&nbsp;</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>

View File

@ -1,592 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
<HTML
><HEAD
><TITLE
>GNU GENERAL PUBLIC LICENSE</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK
REL="HOME"
TITLE="Fcron documentation"
HREF="index.html"><LINK
REL="PREVIOUS"
TITLE="Frequently Asked Questions"
HREF="faq.html"><LINK
REL="NEXT"
TITLE="GNU Free Documentation License"
HREF="fdl.html"></HEAD
><BODY
CLASS="APPENDIX"
BGCOLOR="#FFFFFF"
TEXT="#000000"
LINK="#0000FF"
VLINK="#840084"
ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="40%"
ALIGN="left"
VALIGN="top"
><A
HREF="LEGALNOTICE.html"
>Copyright</A
> &copy; 2000-2014 <A
HREF="mailto:fcron@free.fr"
>Thibault Godouet</A
></TD
><TD
WIDTH="20%"
ALIGN="center"
VALIGN="top"
>Fcron 3.2.0 </TD
><TD
WIDTH="40%"
ALIGN="right"
VALIGN="top"
>Web page : <A
HREF="http://fcron.free.fr"
>http://fcron.free.fr</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
>Fcron documentation</TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="faq.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
></TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="fdl.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="APPENDIX"
><H1
><A
NAME="GPL"
></A
>Appendix A. GNU GENERAL PUBLIC LICENSE</H1
><DIV
CLASS="TOC"
><DL
><DT
><B
>Table of Contents</B
></DT
><DT
>0. <A
HREF="gpl.html#GPL-PREAMBLE"
>PREAMBLE</A
></DT
><DT
>1. <A
HREF="gpl.html#GPL-TERMS"
>TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND
MODIFICATION</A
></DT
><DT
><A
HREF="gpl.html#GPL-HOWTO"
>How to use this License for your documents</A
></DT
></DL
></DIV
><P
>Version 2, June 1991</P
><A
NAME="AEN3342"
></A
><BLOCKQUOTE
CLASS="BLOCKQUOTE"
><P
>Copyright (C) 1989, 1991 Free Software Foundation, Inc. 59
Temple Place - Suite 330, Boston, MA 02111-1307, USA Everyone is permitted to
copy and distribute verbatim copies of this license document, but changing it is
not allowed.</P
></BLOCKQUOTE
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
NAME="GPL-PREAMBLE"
>0. PREAMBLE</A
></H1
><P
>The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public License is
intended to guarantee your freedom to share and change free software--to make
sure the software is free for all its users. This General Public License applies
to most of the Free Software Foundation's software and to any other program
whose authors commit to using it. (Some other Free Software Foundation software
is covered by the GNU Library General Public License instead.) You can apply it
to your programs, too.</P
><P
>When we speak of free software, we are referring to freedom, not price. Our
General Public Licenses are designed to make sure that you have the freedom to
distribute copies of free software (and charge for this service if you wish),
that you receive source code or can get it if you want it, that you can change
the software or use pieces of it in new free programs; and that you know you can
do these things.</P
><P
>To protect your rights, we need to make restrictions that forbid anyone to deny
you these rights or to ask you to surrender the rights. These restrictions
translate to certain responsibilities for you if you distribute copies of the
software, or if you modify it.</P
><P
>For example, if you distribute copies of such a program, whether gratis or for a
fee, you must give the recipients all the rights that you have. You must make
sure that they, too, receive or can get the source code. And you must show them
these terms so they know their rights.</P
><P
>We protect your rights with two steps: (1) copyright the software, and (2) offer
you this license which gives you legal permission to copy, distribute and/or
modify the software.</P
><P
>Also, for each author's protection and ours, we want to make certain that
everyone understands that there is no warranty for this free software. If the
software is modified by someone else and passed on, we want its recipients to
know that what they have is not the original, so that any problems introduced by
others will not reflect on the original authors' reputations.</P
><P
>Finally, any free program is threatened constantly by software patents. We wish
to avoid the danger that redistributors of a free program will individually
obtain patent licenses, in effect making the program proprietary. To prevent
this, we have made it clear that any patent must be licensed for everyone's free
use or not licensed at all.</P
><P
>The precise terms and conditions for copying, distribution and modification
follow.</P
></DIV
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
NAME="GPL-TERMS"
>1. TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND
MODIFICATION</A
></H1
><P
>0. This License applies to any program or other work which
contains a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below, refers to
any such program or work, and a "work based on the Program" means either the
Program or any derivative work under copyright law: that is to say, a work
containing the Program or a portion of it, either verbatim or with modifications
and/or translated into another language. (Hereinafter, translation is included
without limitation in the term "modification".) Each licensee is addressed as
"you".</P
><P
>Activities other than copying, distribution and modification are not covered by
this License; they are outside its scope. The act of running the Program is not
restricted, and the output from the Program is covered only if its contents
constitute a work based on the Program (independent of having been made by
running the Program). Whether that is true depends on what the Program
does.</P
><P
>1. You may copy and distribute verbatim copies of the Program's source code as
you receive it, in any medium, provided that you conspicuously and appropriately
publish on each copy an appropriate copyright notice and disclaimer of warranty;
keep intact all the notices that refer to this License and to the absence of any
warranty; and give any other recipients of the Program a copy of this License
along with the Program.</P
><P
>You may charge a fee for the physical act of transferring a copy, and you may at
your option offer warranty protection in exchange for a fee.</P
><P
>2. You may modify your copy or copies of the Program or any portion of it, thus
forming a work based on the Program, and copy and distribute such modifications
or work under the terms of Section 1 above, provided that you also meet all of
these conditions:</P
><P
> * a) You must cause the modified files to carry prominent notices stating
that you changed the files and the date of any change.</P
><P
> * b) You must cause any work that you distribute or publish, that in whole
or in part contains or is derived from the Program or any part thereof, to be
licensed as a whole at no charge to all third parties under the terms of this
License.</P
><P
> * c) If the modified program normally reads commands interactively when run,
you must cause it, when started running for such interactive use in the most
ordinary way, to print or display an announcement including an appropriate
copyright notice and a notice that there is no warranty (or else, saying that
you provide a warranty) and that users may redistribute the program under these
conditions, and telling the user how to view a copy of this License. (Exception:
if the Program itself is interactive but does not normally print such an
announcement, your work based on the Program is not required to print an
announcement.)</P
><P
>These requirements apply to the modified work as a whole. If identifiable
sections of that work are not derived from the Program, and can be reasonably
considered independent and separate works in themselves, then this License, and
its terms, do not apply to those sections when you distribute them as separate
works. But when you distribute the same sections as part of a whole which is a
work based on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the entire whole,
and thus to each and every part regardless of who wrote it.</P
><P
>Thus, it is not the intent of this section to claim rights or contest your
rights to work written entirely by you; rather, the intent is to exercise the
right to control the distribution of derivative or collective works based on the
Program.</P
><P
>In addition, mere aggregation of another work not based on the Program with the
Program (or with a work based on the Program) on a volume of a storage or
distribution medium does not bring the other work under the scope of this
License.</P
><P
>3. You may copy and distribute the Program (or a work based on it, under Section
2) in object code or executable form under the terms of Sections 1 and 2 above
provided that you also do one of the following:</P
><P
> * a) Accompany it with the complete corresponding machine-readable source
code, which must be distributed under the terms of Sections 1 and 2 above on a
medium customarily used for software interchange; or,</P
><P
> * b) Accompany it with a written offer, valid for at least three years, to
give any third party, for a charge no more than your cost of physically
performing source distribution, a complete machine-readable copy of the
corresponding source code, to be distributed under the terms of Sections 1 and 2
above on a medium customarily used for software interchange; or,</P
><P
> * c) Accompany it with the information you received as to the offer to
distribute corresponding source code. (This alternative is allowed only for
noncommercial distribution and only if you received the program in object code
or executable form with such an offer, in accord with Subsection b
above.)</P
><P
>The source code for a work means the preferred form of the work for making
modifications to it. For an executable work, complete source code means all the
source code for all modules it contains, plus any associated interface
definition files, plus the scripts used to control compilation and installation
of the executable. However, as a special exception, the source code distributed
need not include anything that is normally distributed (in either source or
binary form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component itself
accompanies the executable.</P
><P
>If distribution of executable or object code is made by offering access to copy
from a designated place, then offering equivalent access to copy the source code
from the same place counts as distribution of the source code, even though third
parties are not compelled to copy the source along with the object code.</P
><P
>4. You may not copy, modify, sublicense, or distribute the Program except as
expressly provided under this License. Any attempt otherwise to copy, modify,
sublicense or distribute the Program is void, and will automatically terminate
your rights under this License. However, parties who have received copies, or
rights, from you under this License will not have their licenses terminated so
long as such parties remain in full compliance.</P
><P
>5. You are not required to accept this License, since you have not signed it.
However, nothing else grants you permission to modify or distribute the Program
or its derivative works. These actions are prohibited by law if you do not
accept this License. Therefore, by modifying or distributing the Program (or any
work based on the Program), you indicate your acceptance of this License to do
so, and all its terms and conditions for copying, distributing or modifying the
Program or works based on it.</P
><P
>6. Each time you redistribute the Program (or any work based on the Program),
the recipient automatically receives a license from the original licensor to
copy, distribute or modify the Program subject to these terms and conditions.
You may not impose any further restrictions on the recipients' exercise of the
rights granted herein. You are not responsible for enforcing compliance by third
parties to this License.</P
><P
>7. If, as a consequence of a court judgment or allegation of patent infringement
or for any other reason (not limited to patent issues), conditions are imposed
on you (whether by court order, agreement or otherwise) that contradict the
conditions of this License, they do not excuse you from the conditions of this
License. If you cannot distribute so as to satisfy simultaneously your
obligations under this License and any other pertinent obligations, then as a
consequence you may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by all those
who receive copies directly or indirectly through you, then the only way you
could satisfy both it and this License would be to refrain entirely from
distribution of the Program.</P
><P
>If any portion of this section is held invalid or unenforceable under any
particular circumstance, the balance of the section is intended to apply and the
section as a whole is intended to apply in other circumstances.</P
><P
>It is not the purpose of this section to induce you to infringe any patents or
other property right claims or to contest validity of any such claims; this
section has the sole purpose of protecting the integrity of the free software
distribution system, which is implemented by public license practices. Many
people have made generous contributions to the wide range of software
distributed through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing to
distribute software through any other system and a licensee cannot impose that
choice.</P
><P
>This section is intended to make thoroughly clear what is believed to be a
consequence of the rest of this License.</P
><P
>8. If the distribution and/or use of the Program is restricted in certain
countries either by patents or by copyrighted interfaces, the original copyright
holder who places the Program under this License may add an explicit
geographical distribution limitation excluding those countries, so that
distribution is permitted only in or among countries not thus excluded. In such
case, this License incorporates the limitation as if written in the body of this
License.</P
><P
>9. The Free Software Foundation may publish revised and/or new versions of the
General Public License from time to time. Such new versions will be similar in
spirit to the present version, but may differ in detail to address new problems
or concerns.</P
><P
>Each version is given a distinguishing version number. If the Program specifies
a version number of this License which applies to it and "any later version",
you have the option of following the terms and conditions either of that version
or of any later version published by the Free Software Foundation. If the
Program does not specify a version number of this License, you may choose any
version ever published by the Free Software Foundation.</P
><P
>10. If you wish to incorporate parts of the Program into other free programs
whose distribution conditions are different, write to the author to ask for
permission. For software which is copyrighted by the Free Software Foundation,
write to the Free Software Foundation; we sometimes make exceptions for this.
Our decision will be guided by the two goals of preserving the free status of
all derivatives of our free software and of promoting the sharing and reuse of
software generally.</P
><P
>NO WARRANTY</P
><P
>11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE
PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED
IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS
IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT
NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.</P
><P
>12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL
ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE
PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL,
SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY
TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF
THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER
PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</P
><P
>END OF TERMS AND CONDITIONS</P
></DIV
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
NAME="GPL-HOWTO"
>How to use this License for your documents</A
></H1
><P
> If you develop a new program, and you want it to be of the
greatest possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these
terms.</P
><P
>To do so, attach the following notices to the program. It is
safest to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least the
"copyright" line and a pointer to where the full notice is found.</P
><A
NAME="AEN3392"
></A
><BLOCKQUOTE
CLASS="BLOCKQUOTE"
><P
><TT
CLASS="REPLACEABLE"
><I
>one line to give the program's name and an idea of what it
does.</I
></TT
> Copyright (C) <TT
CLASS="REPLACEABLE"
><I
>yyyy</I
></TT
> name of author
This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
Foundation; either version 2 of the License, or (at your option) any later
version. This program 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 General Public License for more
details. You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc., 59
Temple Place - Suite 330, Boston, MA 02111-1307, USA.</P
></BLOCKQUOTE
><P
>Also add information on how to contact you by electronic and
paper mail.</P
><P
>If the program is interactive, make it output a short notice
like this when it starts in an interactive mode:</P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="SCREEN"
>Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This
is free software, and you are welcome to redistribute it under certain
conditions; type `show c' for details.</PRE
></TD
></TR
></TABLE
><P
>The hypothetical commands `<B
CLASS="COMMAND"
>show w</B
>' and
`<B
CLASS="COMMAND"
>show c</B
>' should show the appropriate parts of the General
Public License. Of course, the commands you use may be called something other
than `<B
CLASS="COMMAND"
>show w</B
>' and `<B
CLASS="COMMAND"
>show c</B
>'; they could
even be mouse-clicks or menu items--whatever suits your program.</P
><P
>You should also get your employer (if you work as a
programmer) or your school, if any, to sign a "copyright disclaimer" for the
program, if necessary. Here is a sample; alter the names:</P
><A
NAME="AEN3405"
></A
><BLOCKQUOTE
CLASS="BLOCKQUOTE"
><P
>Yoyodyne, Inc., hereby disclaims all copyright interest in
the program `Gnomovision' (which makes passes at compilers) written by James
Hacker.</P
><P
><TT
CLASS="REPLACEABLE"
><I
>signature of Ty Coon</I
></TT
>, 1 April
1989 Ty Coon, President of Vice</P
></BLOCKQUOTE
><P
>This General Public License does not permit incorporating your
program into proprietary programs. If your program is a subroutine library, you
may consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Library General Public
License instead of this License.</P
></DIV
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="faq.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="fdl.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>Frequently Asked Questions</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
>&nbsp;</TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>GNU Free Documentation License</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>

View File

@ -1,286 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
<HTML
><HEAD
><TITLE
>Fcron: how and why?</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK
REL="HOME"
TITLE="Fcron documentation"
HREF="index.html"><LINK
REL="PREVIOUS"
TITLE="Fcron documentation"
HREF="index.html"><LINK
REL="NEXT"
TITLE="About fcron"
HREF="readme.html"></HEAD
><BODY
CLASS="CHAPTER"
BGCOLOR="#FFFFFF"
TEXT="#000000"
LINK="#0000FF"
VLINK="#840084"
ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="40%"
ALIGN="left"
VALIGN="top"
><A
HREF="LEGALNOTICE.html"
>Copyright</A
> &copy; 2000-2014 <A
HREF="mailto:fcron@free.fr"
>Thibault Godouet</A
></TD
><TD
WIDTH="20%"
ALIGN="center"
VALIGN="top"
>Fcron 3.2.0 </TD
><TD
WIDTH="40%"
ALIGN="right"
VALIGN="top"
>Web page : <A
HREF="http://fcron.free.fr"
>http://fcron.free.fr</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
>Fcron documentation</TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="index.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
></TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="readme.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="CHAPTER"
><H1
><A
NAME="HOW-AND-WHY"
></A
>Chapter 1. Fcron: how and why?</H1
><DIV
CLASS="TOC"
><DL
><DT
><B
>Table of Contents</B
></DT
><DT
>1.1. <A
HREF="readme.html"
>About fcron</A
></DT
><DD
><DL
><DT
>1.1.1. <A
HREF="readme.html#AEN37"
>What is fcron?</A
></DT
><DT
>1.1.2. <A
HREF="readme.html#AEN82"
>License</A
></DT
><DT
>1.1.3. <A
HREF="readme.html#AEN87"
>Requirements</A
></DT
><DT
>1.1.4. <A
HREF="readme.html#AEN148"
>Compilation and installation</A
></DT
><DT
>1.1.5. <A
HREF="readme.html#AEN152"
>Configuration</A
></DT
><DT
>1.1.6. <A
HREF="readme.html#AEN161"
>Bug reports, corrections, propositions...</A
></DT
></DL
></DD
><DT
>1.2. <A
HREF="install.html"
>How to install fcron</A
></DT
><DD
><DL
><DT
>1.2.1. <A
HREF="install.html#AEN169"
>Compilation requirements</A
></DT
><DT
>1.2.2. <A
HREF="install.html#AEN203"
>Compilation and installation instructions</A
></DT
></DL
></DD
><DT
>1.3. <A
HREF="changes.html"
>Changes</A
></DT
><DT
>1.4. <A
HREF="relnotes.html"
>Release notes: <SPAN
CLASS="APPLICATION"
>fcron</SPAN
> 3.2.0</A
></DT
><DT
>1.5. <A
HREF="todo.html"
>Todo</A
></DT
><DD
><DL
><DT
>1.5.1. <A
HREF="todo.html#AEN988"
>High priority</A
></DT
><DT
>1.5.2. <A
HREF="todo.html#AEN997"
>Low priority</A
></DT
><DT
>1.5.3. <A
HREF="todo.html#AEN1024"
>Ideas</A
></DT
></DL
></DD
><DT
>1.6. <A
HREF="thanks.html"
>Thanks</A
></DT
></DL
></DIV
><P
>This chapter will explain you what is <SPAN
CLASS="APPLICATION"
>fcron</SPAN
>, why you should need
it, and how to install it.</P
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="readme.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>Fcron documentation</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
>&nbsp;</TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>About fcron</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>

View File

@ -1,489 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
<HTML
><HEAD
><TITLE
>Fcron documentation</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK
REL="NEXT"
TITLE="Fcron: how and why?"
HREF="how-and-why.html"></HEAD
><BODY
CLASS="BOOK"
BGCOLOR="#FFFFFF"
TEXT="#000000"
LINK="#0000FF"
VLINK="#840084"
ALINK="#0000FF"
><DIV
CLASS="BOOK"
><A
NAME="FCRON-DOC"
></A
><DIV
CLASS="TITLEPAGE"
><H1
CLASS="TITLE"
><A
NAME="BOOKINFO"
>Fcron documentation</A
></H1
><H3
CLASS="AUTHOR"
><A
NAME="AEN7"
></A
>Thibault Godouet</H3
><P
CLASS="COPYRIGHT"
><A
HREF="LEGALNOTICE.html"
>Copyright</A
> &copy; 2000-2014 Thibault Godouet</P
><DIV
><DIV
CLASS="ABSTRACT"
><P
></P
><A
NAME="AEN20"
></A
><P
><SPAN
CLASS="APPLICATION"
>Fcron</SPAN
> is distributed under GPL license (please read the
license in <A
HREF="gpl.html"
>Appendix A</A
>).</P
><P
>Project home page: <A
HREF="http://fcron.free.fr"
TARGET="_top"
>http://fcron.free.fr</A
></P
><P
>Author: Thibault GODOUET <CODE
CLASS="EMAIL"
>&#60;<A
HREF="mailto:fcron@free.fr"
>fcron@free.fr</A
>&#62;</CODE
></P
><P
></P
></DIV
></DIV
><DIV
><DIV
CLASS="ABSTRACT"
><P
></P
><A
NAME="AEN28"
></A
><P
>You can get the latest HTML version of this document at:
<A
HREF="http://fcron.free.fr/files/fcron-doc-en-html.tar.gz"
TARGET="_top"
>http://fcron.free.fr/files/fcron-doc-html.tar.gz</A
> . The SGML DocBook sources are included with fcron packages.</P
><P
></P
></DIV
></DIV
><SPAN
CLASS="RELEASEINFO"
>Fcron 3.2.0 <BR></SPAN
><HR></DIV
><DIV
CLASS="TOC"
><DL
><DT
><B
>Table of Contents</B
></DT
><DT
>1. <A
HREF="how-and-why.html"
>Fcron: how and why?</A
></DT
><DD
><DL
><DT
>1.1. <A
HREF="readme.html"
>About fcron</A
></DT
><DD
><DL
><DT
>1.1.1. <A
HREF="readme.html#AEN37"
>What is fcron?</A
></DT
><DT
>1.1.2. <A
HREF="readme.html#AEN82"
>License</A
></DT
><DT
>1.1.3. <A
HREF="readme.html#AEN87"
>Requirements</A
></DT
><DT
>1.1.4. <A
HREF="readme.html#AEN148"
>Compilation and installation</A
></DT
><DT
>1.1.5. <A
HREF="readme.html#AEN152"
>Configuration</A
></DT
><DT
>1.1.6. <A
HREF="readme.html#AEN161"
>Bug reports, corrections, propositions...</A
></DT
></DL
></DD
><DT
>1.2. <A
HREF="install.html"
>How to install fcron</A
></DT
><DD
><DL
><DT
>1.2.1. <A
HREF="install.html#AEN169"
>Compilation requirements</A
></DT
><DT
>1.2.2. <A
HREF="install.html#AEN203"
>Compilation and installation instructions</A
></DT
></DL
></DD
><DT
>1.3. <A
HREF="changes.html"
>Changes</A
></DT
><DT
>1.4. <A
HREF="relnotes.html"
>Release notes: <SPAN
CLASS="APPLICATION"
>fcron</SPAN
> 3.2.0</A
></DT
><DT
>1.5. <A
HREF="todo.html"
>Todo</A
></DT
><DD
><DL
><DT
>1.5.1. <A
HREF="todo.html#AEN988"
>High priority</A
></DT
><DT
>1.5.2. <A
HREF="todo.html#AEN997"
>Low priority</A
></DT
><DT
>1.5.3. <A
HREF="todo.html#AEN1024"
>Ideas</A
></DT
></DL
></DD
><DT
>1.6. <A
HREF="thanks.html"
>Thanks</A
></DT
></DL
></DD
><DT
>2. <A
HREF="using-fcron.html"
>Using fcron ...</A
></DT
><DD
><DL
><DT
>2.1. <A
HREF="manpages.html"
>Manual pages of fcron</A
></DT
><DD
><DL
><DT
><A
HREF="fcron.8.html"
>fcron</A
>&nbsp;--&nbsp;daemon to execute scheduled tasks</DT
><DT
><A
HREF="fcron.conf.5.html"
>fcron.conf</A
>&nbsp;--&nbsp;configuration file for fcron and fcrontab</DT
><DT
><A
HREF="fcrontab.1.html"
>fcrontab</A
>&nbsp;--&nbsp;manipulate per-user fcrontab
files</DT
><DT
><A
HREF="fcrontab.5.html"
>fcrontab</A
>&nbsp;--&nbsp;tables for driving fcron</DT
><DT
><A
HREF="fcrondyn.1.html"
>fcrondyn</A
>&nbsp;--&nbsp;dialog dyn-amically with a running fcron daemon</DT
></DL
></DD
><DT
>2.2. <A
HREF="faq.html"
>Frequently Asked Questions</A
></DT
></DL
></DD
><DT
>A. <A
HREF="gpl.html"
>GNU GENERAL PUBLIC LICENSE</A
></DT
><DD
><DL
><DT
>0. <A
HREF="gpl.html#GPL-PREAMBLE"
>PREAMBLE</A
></DT
><DT
>1. <A
HREF="gpl.html#GPL-TERMS"
>TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND
MODIFICATION</A
></DT
><DT
><A
HREF="gpl.html#GPL-HOWTO"
>How to use this License for your documents</A
></DT
></DL
></DD
><DT
>B. <A
HREF="fdl.html"
>GNU Free Documentation License</A
></DT
><DD
><DL
><DT
>0. <A
HREF="fdl.html#FDL-PREAMBLE"
>PREAMBLE</A
></DT
><DT
>1. <A
HREF="fdl.html#FDL-APPLICABILITY"
>APPLICABILITY AND DEFINITIONS</A
></DT
><DT
>2. <A
HREF="fdl.html#FDL-VERBATIM"
>VERBATIM COPYING</A
></DT
><DT
>3. <A
HREF="fdl.html#FDL-COPYING"
>COPYING IN QUANTITY</A
></DT
><DT
>4. <A
HREF="fdl.html#FDL-MODIFICATIONS"
>MODIFICATIONS</A
></DT
><DT
>5. <A
HREF="fdl.html#FDL-COMBINING"
>COMBINING DOCUMENTS</A
></DT
><DT
>6. <A
HREF="fdl.html#FDL-COLLECTIONS"
>COLLECTIONS OF DOCUMENTS</A
></DT
><DT
>7. <A
HREF="fdl.html#FDL-AGGREGATION"
>AGGREGATION WITH INDEPENDENT WORKS</A
></DT
><DT
>8. <A
HREF="fdl.html#FDL-TRANSLATION"
>TRANSLATION</A
></DT
><DT
>9. <A
HREF="fdl.html#FDL-TERMINATION"
>TERMINATION</A
></DT
><DT
>10. <A
HREF="fdl.html#FDL-FUTURE"
>FUTURE REVISIONS OF THIS LICENSE</A
></DT
><DT
><A
HREF="fdl.html#FDL-HOWTO"
>How to use this License for your documents</A
></DT
></DL
></DD
></DL
></DIV
><DIV
CLASS="LOT"
><DL
CLASS="LOT"
><DT
><B
>List of Tables</B
></DT
><DT
>2-1. <A
HREF="fcrontab.5.html#AEN1870"
>Valid time multipliers</A
></DT
><DT
>2-2. <A
HREF="fcrontab.5.html#AEN1936"
>Time and date fields</A
></DT
><DT
>2-3. <A
HREF="fcrontab.5.html#AEN2032"
>Needed time fields for each keyword</A
></DT
><DT
>2-4. <A
HREF="fcrontab.5.html#AEN2144"
>Vixie cron shortcuts</A
></DT
></DL
></DIV
><DIV
CLASS="LOT"
><DL
CLASS="LOT"
><DT
><B
>List of Examples</B
></DT
><DT
>2-1. <A
HREF="fcrontab.5.html#AEN1921"
>Some examples of lines based on elapsed system up
time</A
></DT
><DT
>2-2. <A
HREF="fcrontab.5.html#AEN2005"
>Some examples of entries based on time and date</A
></DT
><DT
>2-3. <A
HREF="fcrontab.5.html#AEN2755"
>An example of an option declaration:</A
></DT
><DT
>2-4. <A
HREF="fcrontab.5.html#AEN2761"
>An example of a user fcrontab</A
></DT
><DT
>2-5. <A
HREF="faq.html#AEN3236"
>Using fcron in a script: running a job once
every day, week, etc, at dialup connection</A
></DT
><DT
>2-6. <A
HREF="faq.html#AEN3244"
>Using fcron in a script: running a job until the
end of the connection</A
></DT
></DL
></DIV
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>&nbsp;</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
>&nbsp;</TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="how-and-why.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>&nbsp;</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
>&nbsp;</TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>Fcron: how and why?</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>

View File

@ -1,749 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
<HTML
><HEAD
><TITLE
>How to install fcron</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK
REL="HOME"
TITLE="Fcron documentation"
HREF="index.html"><LINK
REL="UP"
TITLE="Fcron: how and why?"
HREF="how-and-why.html"><LINK
REL="PREVIOUS"
TITLE="About fcron"
HREF="readme.html"><LINK
REL="NEXT"
TITLE="Changes"
HREF="changes.html"></HEAD
><BODY
CLASS="SECT1"
BGCOLOR="#FFFFFF"
TEXT="#000000"
LINK="#0000FF"
VLINK="#840084"
ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="40%"
ALIGN="left"
VALIGN="top"
><A
HREF="LEGALNOTICE.html"
>Copyright</A
> &copy; 2000-2014 <A
HREF="mailto:fcron@free.fr"
>Thibault Godouet</A
></TD
><TD
WIDTH="20%"
ALIGN="center"
VALIGN="top"
>Fcron 3.2.0 </TD
><TD
WIDTH="40%"
ALIGN="right"
VALIGN="top"
>Web page : <A
HREF="http://fcron.free.fr"
>http://fcron.free.fr</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
>Fcron documentation</TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="readme.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
>Chapter 1. Fcron: how and why?</TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="changes.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
NAME="INSTALL"
>1.2. How to install fcron</A
></H1
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN169"
>1.2.1. Compilation requirements</A
></H2
><P
></P
><UL
><LI
><P
>A C compiler (e.g. gcc)</P
></LI
><LI
><P
>(optional) <SPAN
CLASS="PRODUCTNAME"
>readline</SPAN
> development
library (e.g. libreadline-dev)</P
></LI
><LI
><P
>(optional) <SPAN
CLASS="PRODUCTNAME"
>PAM</SPAN
> development
library (e.g. libpam0g-dev)</P
></LI
><LI
><P
>(optional) <SPAN
CLASS="PRODUCTNAME"
>SE Linux</SPAN
> development library (e.g. libselinux1-dev)</P
></LI
><LI
><P
>(optional) <SPAN
CLASS="PRODUCTNAME"
>Linux audit</SPAN
> development library (e.g. libaudit-dev)</P
></LI
><LI
><P
>If compiling from git checkout (rather than a tarball), then no generated file will be included out of the box, so you will need more tools to generate them. In particular the ./configure script and the documentation will be generated from the sources.</P
><P
></P
><UL
><LI
><P
>git</P
></LI
><LI
><P
>autoconf</P
></LI
><LI
><P
>docbook</P
></LI
><LI
><P
>docbook-xsl</P
></LI
><LI
><P
>docbook-xml</P
></LI
><LI
><P
>docbook-util</P
></LI
><LI
><P
>manpages-dev</P
></LI
></UL
></LI
></UL
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN203"
>1.2.2. Compilation and installation instructions</A
></H2
><P
></P
><UL
><LI
><P
>uncompress the archive:</P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="90%"
><TR
><TD
><PRE
CLASS="SCREEN"
><SAMP
CLASS="PROMPT"
>bash$ </SAMP
><B
CLASS="COMMAND"
>tar -xzf fcron-X.Y.Z.src.tar.gz</B
></PRE
></TD
></TR
></TABLE
></LI
><LI
><P
>cd to the archive directory</P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="90%"
><TR
><TD
><PRE
CLASS="SCREEN"
><SAMP
CLASS="PROMPT"
>bash$ </SAMP
><B
CLASS="COMMAND"
>cd fcron-X.Y.Z</B
></PRE
></TD
></TR
></TABLE
></LI
><LI
><P
>run the <B
CLASS="COMMAND"
>configure</B
> script:</P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="90%"
><TR
><TD
><PRE
CLASS="SCREEN"
><SAMP
CLASS="PROMPT"
>bash$</SAMP
><B
CLASS="COMMAND"
>./configure</B
></PRE
></TD
></TR
></TABLE
><P
> <DIV
CLASS="NOTE"
><BLOCKQUOTE
CLASS="NOTE"
><P
></P
><UL
><LI
><P
> If you can't see a <TT
CLASS="FILENAME"
>./configure</TT
>, then you probably checked out the files from git, in which case you need to run <B
CLASS="COMMAND"
>autoconf</B
> to generate the <TT
CLASS="FILENAME"
>configure</TT
> script.</P
></LI
><LI
><P
> If using <SPAN
CLASS="PRODUCTNAME"
>PAM</SPAN
>, beware that by default the <SPAN
CLASS="PRODUCTNAME"
>PAM</SPAN
> configuration will be installed in <TT
CLASS="FILENAME"
>/usr/local/etc/</TT
>. That most likely mean that your system won't use this config, and may ask you to type your password everytime you start fcrontab or fcrondyn.</P
><P
>The simplest way to avoid this is to instruct configure to use <TT
CLASS="FILENAME"
>/etc</TT
> instead with:</P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="90%"
><TR
><TD
><PRE
CLASS="SCREEN"
><SAMP
CLASS="PROMPT"
>bash$ </SAMP
><B
CLASS="COMMAND"
>./configure --sysconfdir=/etc</B
></PRE
></TD
></TR
></TABLE
></LI
><LI
><P
> You may also want to change the place where
<SPAN
CLASS="APPLICATION"
>fcron</SPAN
> will be installed: you can use the <B
CLASS="COMMAND"
>configure </B
>'s
option <CODE
CLASS="OPTION"
>--prefix</CODE
> to do that. For instance:
</P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="90%"
><TR
><TD
><PRE
CLASS="SCREEN"
><SAMP
CLASS="PROMPT"
>bash$ </SAMP
><B
CLASS="COMMAND"
>./configure --prefix=/usr--sysconfdir=/etc</B
></PRE
></TD
></TR
></TABLE
><P
>(default is <CODE
CLASS="OPTION"
>prefix=/usr/local</CODE
> and <CODE
CLASS="OPTION"
>sysconfdir=${prefix}/etc</CODE
>).</P
></LI
><LI
><P
> To disable the use of
<SPAN
CLASS="PRODUCTNAME"
>PAM</SPAN
>, <SPAN
CLASS="PRODUCTNAME"
>SE Linux</SPAN
> or <SPAN
CLASS="APPLICATION"
>fcrondyn</SPAN
>, use <B
CLASS="COMMAND"
>configure</B
>'s
option <CODE
CLASS="OPTION"
>--with-pam=no</CODE
>, <CODE
CLASS="OPTION"
>--with-selinux=no</CODE
>
and/or <CODE
CLASS="OPTION"
>--with-fcrondyn=no</CODE
>.</P
></LI
><LI
><P
> The command <B
CLASS="COMMAND"
>make install</B
> asks
you by default some questions you have to answer. To avoid that (which can be
useful for automatic installers), you can use the
<B
CLASS="COMMAND"
>./configure</B
>'s option <CODE
CLASS="OPTION"
>--with-answer-all</CODE
>
and/or <CODE
CLASS="OPTION"
>--with-boot-install</CODE
> (see "<B
CLASS="COMMAND"
>./configure
--help</B
>" for more details).
</P
></LI
><LI
><P
>To debug <SPAN
CLASS="APPLICATION"
>fcron</SPAN
>, you should use
<B
CLASS="COMMAND"
>configure </B
>'s option <CODE
CLASS="OPTION"
>--with-debug</CODE
>.
</P
></LI
><LI
><P
> You can get info on the others
<B
CLASS="COMMAND"
>configure </B
>'s options by running
"<B
CLASS="COMMAND"
>./configure --help</B
>".
</P
></LI
></UL
></BLOCKQUOTE
></DIV
>
<DIV
CLASS="WARNING"
><P
></P
><TABLE
CLASS="WARNING"
BORDER="1"
WIDTH="90%"
><TR
><TD
ALIGN="CENTER"
><B
>Warning</B
></TD
></TR
><TR
><TD
ALIGN="LEFT"
><P
></P
><UL
><LI
><P
> The <B
CLASS="COMMAND"
>configure</B
> script may not
define a correct directory for the man pages and the documentation on some
systems. You may check the values defined by <B
CLASS="COMMAND"
>configure</B
> and if
necessary force a value by the options <CODE
CLASS="OPTION"
>--mandir</CODE
> and
<CODE
CLASS="OPTION"
>-with-docdir </CODE
> (see the help by running
"<B
CLASS="COMMAND"
>./configure</B
> <CODE
CLASS="OPTION"
>--help</CODE
>").
</P
></LI
><LI
><P
> If you get older <SPAN
CLASS="APPLICATION"
>fcron</SPAN
>'s man-pages with
<B
CLASS="COMMAND"
>man</B
> command after having upgraded, it's probably because
<SPAN
CLASS="APPLICATION"
>fcron</SPAN
> has changed its default man directory: you should remove manually the
outdated man-pages.
</P
></LI
><LI
><P
> The <TT
CLASS="FILENAME"
>Makefile</TT
> has been
designed for <SPAN
CLASS="APPLICATION"
>GNU make</SPAN
>. Some other version of
<B
CLASS="COMMAND"
>make</B
> may fail to use it.
</P
></LI
></UL
></TD
></TR
></TABLE
></DIV
>
</P
></LI
><LI
><P
><EM
>(optional)</EM
> check the file
<TT
CLASS="FILENAME"
>config.h</TT
>, and change it if necessary (the configurable part
is on the top of the file and clearly delimited).</P
></LI
><LI
><P
>compile:</P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="90%"
><TR
><TD
><PRE
CLASS="SCREEN"
><SAMP
CLASS="PROMPT"
>bash$ </SAMP
><B
CLASS="COMMAND"
>make</B
></PRE
></TD
></TR
></TABLE
></LI
><LI
><P
>then install binaries as root:</P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="90%"
><TR
><TD
><PRE
CLASS="SCREEN"
><SAMP
CLASS="PROMPT"
>bash$ </SAMP
><B
CLASS="COMMAND"
>su root</B
></PRE
></TD
></TR
></TABLE
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="90%"
><TR
><TD
><PRE
CLASS="SCREEN"
><SAMP
CLASS="PROMPT"
>bash# </SAMP
><B
CLASS="COMMAND"
>make install</B
></PRE
></TD
></TR
></TABLE
></LI
></UL
><P
>You can now run <B
CLASS="COMMAND"
>fcron</B
> and
<B
CLASS="COMMAND"
>fcrontab</B
>.</P
><DIV
CLASS="NOTE"
><BLOCKQUOTE
CLASS="NOTE"
><P
></P
><UL
><LI
><P
> This is a <SPAN
CLASS="PRODUCTNAME"
>POSIX</SPAN
> conforming
software. You must have a <SPAN
CLASS="PRODUCTNAME"
>POSIX</SPAN
> compiler
(<SPAN
CLASS="APPLICATION"
>gcc</SPAN
> for example) in order to compile it.
</P
></LI
><LI
><P
> This software has been written for
<SPAN
CLASS="PRODUCTNAME"
>GNU/Linux</SPAN
> systems. If you want to port it on an other
<SPAN
CLASS="PRODUCTNAME"
>Unix</SPAN
> platform (thank you if you do it), try to modify
- if possible - only the <SPAN
CLASS="APPLICATION"
>configure</SPAN
> script. Please
send me any modifications at <CODE
CLASS="EMAIL"
>&#60;<A
HREF="mailto:fcron@free.fr"
>fcron@free.fr</A
>&#62;</CODE
> in order to include it in future releases.
</P
></LI
></UL
></BLOCKQUOTE
></DIV
></DIV
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="readme.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="changes.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>About fcron</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="how-and-why.html"
ACCESSKEY="U"
>Up</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>Changes</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>

View File

@ -1,219 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
<HTML
><HEAD
><TITLE
>Manual pages of fcron</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK
REL="HOME"
TITLE="Fcron documentation"
HREF="index.html"><LINK
REL="UP"
TITLE="Using fcron ..."
HREF="using-fcron.html"><LINK
REL="PREVIOUS"
TITLE="Using fcron ..."
HREF="using-fcron.html"><LINK
REL="NEXT"
TITLE="fcron"
HREF="fcron.8.html"></HEAD
><BODY
CLASS="SECT1"
BGCOLOR="#FFFFFF"
TEXT="#000000"
LINK="#0000FF"
VLINK="#840084"
ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="40%"
ALIGN="left"
VALIGN="top"
><A
HREF="LEGALNOTICE.html"
>Copyright</A
> &copy; 2000-2014 <A
HREF="mailto:fcron@free.fr"
>Thibault Godouet</A
></TD
><TD
WIDTH="20%"
ALIGN="center"
VALIGN="top"
>Fcron 3.2.0 </TD
><TD
WIDTH="40%"
ALIGN="right"
VALIGN="top"
>Web page : <A
HREF="http://fcron.free.fr"
>http://fcron.free.fr</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
>Fcron documentation</TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="using-fcron.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
>Chapter 2. Using fcron ...</TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="fcron.8.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
NAME="MANPAGES"
>2.1. Manual pages of fcron</A
></H1
><DIV
CLASS="TOC"
><DL
><DT
><B
>Table of Contents</B
></DT
><DT
><A
HREF="fcron.8.html"
>fcron</A
>&nbsp;--&nbsp;daemon to execute scheduled tasks</DT
><DT
><A
HREF="fcron.conf.5.html"
>fcron.conf</A
>&nbsp;--&nbsp;configuration file for fcron and fcrontab</DT
><DT
><A
HREF="fcrontab.1.html"
>fcrontab</A
>&nbsp;--&nbsp;manipulate per-user fcrontab
files</DT
><DT
><A
HREF="fcrontab.5.html"
>fcrontab</A
>&nbsp;--&nbsp;tables for driving fcron</DT
><DT
><A
HREF="fcrondyn.1.html"
>fcrondyn</A
>&nbsp;--&nbsp;dialog dyn-amically with a running fcron daemon</DT
></DL
></DIV
><P
>This section contains the manual pages, which tell you how to use <SPAN
CLASS="APPLICATION"
>fcron</SPAN
>.</P
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="using-fcron.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="fcron.8.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>Using fcron ...</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="using-fcron.html"
ACCESSKEY="U"
>Up</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>fcron</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>

View File

@ -1,602 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
<HTML
><HEAD
><TITLE
>About fcron</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK
REL="HOME"
TITLE="Fcron documentation"
HREF="index.html"><LINK
REL="UP"
TITLE="Fcron: how and why?"
HREF="how-and-why.html"><LINK
REL="PREVIOUS"
TITLE="Fcron: how and why?"
HREF="how-and-why.html"><LINK
REL="NEXT"
TITLE="How to install fcron"
HREF="install.html"></HEAD
><BODY
CLASS="SECT1"
BGCOLOR="#FFFFFF"
TEXT="#000000"
LINK="#0000FF"
VLINK="#840084"
ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="40%"
ALIGN="left"
VALIGN="top"
><A
HREF="LEGALNOTICE.html"
>Copyright</A
> &copy; 2000-2014 <A
HREF="mailto:fcron@free.fr"
>Thibault Godouet</A
></TD
><TD
WIDTH="20%"
ALIGN="center"
VALIGN="top"
>Fcron 3.2.0 </TD
><TD
WIDTH="40%"
ALIGN="right"
VALIGN="top"
>Web page : <A
HREF="http://fcron.free.fr"
>http://fcron.free.fr</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
>Fcron documentation</TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="how-and-why.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
>Chapter 1. Fcron: how and why?</TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="install.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
NAME="README"
>1.1. About fcron</A
></H1
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN37"
>1.1.1. What is fcron?</A
></H2
><P
><SPAN
CLASS="APPLICATION"
>Fcron</SPAN
> is a scheduler. It aims at replacing <SPAN
CLASS="APPLICATION"
>Vixie
Cron</SPAN
>, so it implements most of its functionalities.</P
><P
>But contrary to <SPAN
CLASS="APPLICATION"
>Vixie Cron</SPAN
>, <SPAN
CLASS="APPLICATION"
>fcron</SPAN
>
does not need your system to be up 7 days a week, 24 hours a day: it also works
well with systems which are not running neither all the time nor regularly
(contrary to <SPAN
CLASS="APPLICATION"
>anacrontab</SPAN
>).</P
><P
>In other words, <SPAN
CLASS="APPLICATION"
>fcron</SPAN
> does both the job of <SPAN
CLASS="APPLICATION"
>Vixie
Cron</SPAN
> and <SPAN
CLASS="APPLICATION"
>anacron</SPAN
>, but does even more
and better :)) ...</P
><P
>To do so, <SPAN
CLASS="APPLICATION"
>fcron</SPAN
> allows you to use the standard mode in which you
tell it to execute one command at a given date and hour and to make it run a
command according to its time of execution, which is normally the same as system
up time. For example:
<A
NAME="AEN52"
></A
><BLOCKQUOTE
CLASS="BLOCKQUOTE"
><P
>Run the task 'save /home/ directory' every 3h15 of system
up time.</P
></BLOCKQUOTE
> and, of course, in order to make it really useful, the
time remaining until next execution is saved each time the system is stopped.
You can also say:
<A
NAME="AEN54"
></A
><BLOCKQUOTE
CLASS="BLOCKQUOTE"
><P
>run that command once between 2am and 5am</P
></BLOCKQUOTE
> which will be done if the system is running at any
time in this interval.</P
><P
><SPAN
CLASS="APPLICATION"
>Fcron</SPAN
> also includes a useful system of options, which can be
applied either to every lines following the declaration or to a single line.
Some of the supported options permit to:
<P
></P
><UL
><LI
><P
>run jobs one by one (fcrontab option
<A
HREF="fcrontab.5.html#FCRONTAB.5.SERIAL"
><CODE
CLASS="VARNAME"
>serial</CODE
></A
>),</P
></LI
><LI
><P
>set the max system load average value under
which the job should be run (fcrontab option <A
HREF="fcrontab.5.html#FCRONTAB.5.LAVG"
><CODE
CLASS="VARNAME"
>lavg</CODE
></A
>),</P
></LI
><LI
><P
>set a nice value for a job (fcrontab option
<A
HREF="fcrontab.5.html#FCRONTAB.5.NICE"
><CODE
CLASS="VARNAME"
>nice</CODE
></A
>),</P
></LI
><LI
><P
>run jobs at <SPAN
CLASS="APPLICATION"
>fcron</SPAN
>'s startup if they should
have been run during system down time (fcrontab option
<A
HREF="fcrontab.5.html#FCRONTAB.5.BOOTRUN"
><CODE
CLASS="VARNAME"
>bootrun</CODE
></A
>),</P
></LI
><LI
><P
>mail user to tell him a job has not run and why
(fcrontab option <A
HREF="fcrontab.5.html#FCRONTAB.5.NOTICENOTRUN"
><CODE
CLASS="VARNAME"
>noticenotrun</CODE
></A
>),</P
></LI
><LI
><P
>a better management of the mailing of outputs
...</P
></LI
></UL
>
</P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN82"
>1.1.2. License</A
></H2
><P
><SPAN
CLASS="APPLICATION"
>Fcron</SPAN
> is distributed under GPL license (please read the license
in the <A
HREF="gpl.html"
>gpl</A
> file).</P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN87"
>1.1.3. Requirements</A
></H2
><P
></P
><UL
><LI
><P
>a <SPAN
CLASS="PRODUCTNAME"
>Linux/Unix system</SPAN
></P
><P
><SPAN
CLASS="APPLICATION"
>Fcron</SPAN
> should work on every
<SPAN
CLASS="PRODUCTNAME"
>POSIX</SPAN
> system, but it has been developed on
<SPAN
CLASS="PRODUCTNAME"
>Mandrake</SPAN
> Linux (so it should work without any
problems on <SPAN
CLASS="PRODUCTNAME"
>Redhat</SPAN
>).</P
><P
>Fcron has been reported to work correctly on:
</P
><P
></P
><UL
><LI
><P
><SPAN
CLASS="PRODUCTNAME"
>Linux Mandrake</SPAN
>
</P
></LI
><LI
><P
><SPAN
CLASS="PRODUCTNAME"
>Linux Debian 3.0</SPAN
>
</P
></LI
><LI
><P
><SPAN
CLASS="PRODUCTNAME"
>LFS</SPAN
></P
><P
>(take a look at the <A
HREF="http://www.linuxfromscratch.org/blfs/"
TARGET="_top"
>Beyond
LFS book</A
> to find the installation
informations).</P
></LI
><LI
><P
><SPAN
CLASS="PRODUCTNAME"
>FreeBSD 4.2</SPAN
>
</P
></LI
><LI
><P
><SPAN
CLASS="PRODUCTNAME"
>OpenBSD 2.8</SPAN
>
</P
></LI
><LI
><P
><SPAN
CLASS="PRODUCTNAME"
>NetBSD 2.0</SPAN
>
</P
></LI
><LI
><P
><SPAN
CLASS="PRODUCTNAME"
>Darwin/MacOS-X</SPAN
></P
></LI
><LI
><P
><SPAN
CLASS="PRODUCTNAME"
>Solaris 8</SPAN
>
</P
></LI
><LI
><P
><SPAN
CLASS="PRODUCTNAME"
>AIX 4.3.3</SPAN
>
</P
></LI
><LI
><P
><SPAN
CLASS="PRODUCTNAME"
>HP-UX 11.11</SPAN
>
</P
></LI
></UL
><P
>but fcron should work on other OS as well. Yet,
if you have troubles
making it work on a <SPAN
CLASS="PRODUCTNAME"
>POSIX</SPAN
> system, please
contact me at <CODE
CLASS="EMAIL"
>&#60;<A
HREF="mailto:fcron@free.fr"
>fcron@free.fr</A
>&#62;</CODE
>.</P
></LI
><LI
><P
>a running <SPAN
CLASS="APPLICATION"
>syslog</SPAN
> (or you
won't have any log)</P
></LI
><LI
><P
>a running mail system (
<SPAN
CLASS="APPLICATION"
>sendmail</SPAN
> or <SPAN
CLASS="APPLICATION"
>postfix</SPAN
> for
example) (or users will not able to read their jobs output)
</P
></LI
><LI
><P
>(optional) a <SPAN
CLASS="PRODUCTNAME"
>PAM</SPAN
>
library.</P
></LI
><LI
><P
>(optional) a system with a working <SPAN
CLASS="PRODUCTNAME"
>SE Linux</SPAN
> environment.</P
></LI
></UL
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN148"
>1.1.4. Compilation and installation</A
></H2
><P
>See the <A
HREF="install.html"
>install</A
> file (either install.txt
or install.html).</P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN152"
>1.1.5. Configuration</A
></H2
><P
>See the <A
HREF="fcron.8.html"
><SPAN
CLASS="APPLICATION"
>fcron</SPAN
>(8)</A
>, <A
HREF="fcrontab.5.html"
><SPAN
CLASS="APPLICATION"
>fcrontab</SPAN
>(5)</A
> and <A
HREF="fcrontab.1.html"
><SPAN
CLASS="APPLICATION"
>fcrontab</SPAN
>(1)</A
> manpages.</P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN161"
>1.1.6. Bug reports, corrections, propositions...</A
></H2
><P
>Please send me the description of any bug you happen to encounter
(with, even better, the corresponding patch -:) and any propositions,
congratulations or flames at <CODE
CLASS="EMAIL"
>&#60;<A
HREF="mailto:fcron@free.fr"
>fcron@free.fr</A
>&#62;</CODE
></P
><P
>Please contact Russell Coker directly for problems about SE Linux support at <CODE
CLASS="EMAIL"
>&#60;<A
HREF="mailto:russell@coker.com.au"
>russell@coker.com.au</A
>&#62;</CODE
>, since he maintains this part of the code.</P
></DIV
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="how-and-why.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="install.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>Fcron: how and why?</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="how-and-why.html"
ACCESSKEY="U"
>Up</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>How to install fcron</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>

View File

@ -1,190 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
<HTML
><HEAD
><TITLE
>Release notes: fcron 3.2.0</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK
REL="HOME"
TITLE="Fcron documentation"
HREF="index.html"><LINK
REL="UP"
TITLE="Fcron: how and why?"
HREF="how-and-why.html"><LINK
REL="PREVIOUS"
TITLE="Changes"
HREF="changes.html"><LINK
REL="NEXT"
TITLE="Todo"
HREF="todo.html"></HEAD
><BODY
CLASS="SECT1"
BGCOLOR="#FFFFFF"
TEXT="#000000"
LINK="#0000FF"
VLINK="#840084"
ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="40%"
ALIGN="left"
VALIGN="top"
><A
HREF="LEGALNOTICE.html"
>Copyright</A
> &copy; 2000-2014 <A
HREF="mailto:fcron@free.fr"
>Thibault Godouet</A
></TD
><TD
WIDTH="20%"
ALIGN="center"
VALIGN="top"
>Fcron 3.2.0 </TD
><TD
WIDTH="40%"
ALIGN="right"
VALIGN="top"
>Web page : <A
HREF="http://fcron.free.fr"
>http://fcron.free.fr</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
>Fcron documentation</TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="changes.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
>Chapter 1. Fcron: how and why?</TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="todo.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
NAME="RELNOTES"
>1.4. Release notes: <SPAN
CLASS="APPLICATION"
>fcron</SPAN
> 3.2.0</A
></H1
><P
></P
><UL
><LI
><P
>Nothing special to be aware of in this release.</P
></LI
></UL
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="changes.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="todo.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>Changes</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="how-and-why.html"
ACCESSKEY="U"
>Up</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>Todo</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>

View File

@ -1,330 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
<HTML
><HEAD
><TITLE
>Thanks</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK
REL="HOME"
TITLE="Fcron documentation"
HREF="index.html"><LINK
REL="UP"
TITLE="Fcron: how and why?"
HREF="how-and-why.html"><LINK
REL="PREVIOUS"
TITLE="Todo"
HREF="todo.html"><LINK
REL="NEXT"
TITLE="Using fcron ..."
HREF="using-fcron.html"></HEAD
><BODY
CLASS="SECT1"
BGCOLOR="#FFFFFF"
TEXT="#000000"
LINK="#0000FF"
VLINK="#840084"
ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="40%"
ALIGN="left"
VALIGN="top"
><A
HREF="LEGALNOTICE.html"
>Copyright</A
> &copy; 2000-2014 <A
HREF="mailto:fcron@free.fr"
>Thibault Godouet</A
></TD
><TD
WIDTH="20%"
ALIGN="center"
VALIGN="top"
>Fcron 3.2.0 </TD
><TD
WIDTH="40%"
ALIGN="right"
VALIGN="top"
>Web page : <A
HREF="http://fcron.free.fr"
>http://fcron.free.fr</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
>Fcron documentation</TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="todo.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
>Chapter 1. Fcron: how and why?</TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="using-fcron.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
NAME="THANKS"
>1.6. Thanks</A
></H1
><P
></P
><DIV
CLASS="VARIABLELIST"
><DL
><DT
><B
>Uwe Ohse <CODE
CLASS="EMAIL"
>&#60;<A
HREF="mailto:uwe@ohse.de"
>uwe@ohse.de</A
>&#62;</CODE
></B
></DT
><DD
><P
>Corrected a bug concerning the signals, has reported
security issues.</P
></DD
><DT
><B
>Max Heijndijk <CODE
CLASS="EMAIL"
>&#60;<A
HREF="mailto:cchq@wanadoo.nl"
>cchq@wanadoo.nl</A
>&#62;</CODE
></B
></DT
><DD
><P
>Has made the rpm packages.</P
></DD
><DT
><B
>Gabor Z. Papp <CODE
CLASS="EMAIL"
>&#60;<A
HREF="mailto:gzp@papp.hu"
>gzp@papp.hu</A
>&#62;</CODE
></B
></DT
><DD
><P
>Helped to correct some bugs in installation process and
reported various bugs.</P
></DD
><DT
><B
>Clemens Fischer <CODE
CLASS="EMAIL"
>&#60;<A
HREF="mailto:rabat@web.de"
>rabat@web.de</A
>&#62;</CODE
></B
></DT
><DD
><P
>Proofread docs, reported bugs, and made some
propositions.</P
></DD
><DT
><B
>Henrique de Moraes Holschuh
<CODE
CLASS="EMAIL"
>&#60;<A
HREF="mailto:hmh@debian.org"
>hmh@debian.org</A
>&#62;</CODE
></B
></DT
><DD
><P
>Has worked on fcron's integration in Linux Debian system,
reported bugs and corrected some of them, made some propositions.</P
></DD
><DT
><B
>Thomas Whateley <CODE
CLASS="EMAIL"
>&#60;<A
HREF="mailto:thomas@whateley.net"
>thomas@whateley.net</A
>&#62;</CODE
></B
></DT
><DD
><P
>Has done a big part of Solaris port, implemented the
fcron.conf file, and Vixie crontab format support.</P
></DD
><DT
><B
>Guy Geens <CODE
CLASS="EMAIL"
>&#60;<A
HREF="mailto:ggeens@iname.com"
>ggeens@iname.com</A
>&#62;</CODE
></B
></DT
><DD
><P
>Fixed a nasty bug in goto_non_matching() which caused an
endless loop (midmonthly jobs executed after the 15th of the month).</P
></DD
><DT
><B
>Patrick Ohly <CODE
CLASS="EMAIL"
>&#60;<A
HREF="mailto:Patrick.Ohly@gmx.de"
>Patrick.Ohly@gmx.de</A
>&#62;</CODE
></B
></DT
><DD
><P
>Added fcron's option -y, -o and -l, and fcrontab's stdout
and volatile, in order to run fcron from time to time in foreground, for
instance in a ppp-up script.</P
></DD
><DT
><B
>Russell Coker <CODE
CLASS="EMAIL"
>&#60;<A
HREF="mailto:russell@coker.com.au"
>russell@coker.com.au</A
>&#62;</CODE
></B
></DT
><DD
><P
>Helped me to secure fcron, make code clearer,
and he wrote the patch for SE Linux support.</P
></DD
><DT
><B
>Alain Portal</B
></DT
><DD
><P
>Initial French translation of the manual pages.</P
></DD
></DL
></DIV
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="todo.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="using-fcron.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>Todo</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="how-and-why.html"
ACCESSKEY="U"
>Up</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>Using fcron ...</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>

View File

@ -1,350 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
<HTML
><HEAD
><TITLE
>Todo</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK
REL="HOME"
TITLE="Fcron documentation"
HREF="index.html"><LINK
REL="UP"
TITLE="Fcron: how and why?"
HREF="how-and-why.html"><LINK
REL="PREVIOUS"
TITLE="Release notes: fcron 3.2.0"
HREF="relnotes.html"><LINK
REL="NEXT"
TITLE="Thanks"
HREF="thanks.html"></HEAD
><BODY
CLASS="SECT1"
BGCOLOR="#FFFFFF"
TEXT="#000000"
LINK="#0000FF"
VLINK="#840084"
ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="40%"
ALIGN="left"
VALIGN="top"
><A
HREF="LEGALNOTICE.html"
>Copyright</A
> &copy; 2000-2014 <A
HREF="mailto:fcron@free.fr"
>Thibault Godouet</A
></TD
><TD
WIDTH="20%"
ALIGN="center"
VALIGN="top"
>Fcron 3.2.0 </TD
><TD
WIDTH="40%"
ALIGN="right"
VALIGN="top"
>Web page : <A
HREF="http://fcron.free.fr"
>http://fcron.free.fr</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
>Fcron documentation</TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="relnotes.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
>Chapter 1. Fcron: how and why?</TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="thanks.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
NAME="TODO"
>1.5. Todo</A
></H1
><P
>Here are some things that should be done ... Note that some of these
entries are just some ideas, which <EM
>may</EM
> be done in
the long run.</P
><P
>If you see something you'd really like to see implemented here, feel
free to send me a mail: it may make me move it to the top of my to-do list ;) .
</P
><P
>If you plan to help me, please send a mail at <CODE
CLASS="EMAIL"
>&#60;<A
HREF="mailto:fcron@free.fr"
>fcron@free.fr</A
>&#62;</CODE
> to prevent two
people from doing the same thing. You can send me some propositions as
well, or ask me to move something to the top of the heap ;) .</P
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN988"
>1.5.1. High priority</A
></H2
><P
></P
><UL
><LI
><P
>Option to compile and install from git sources without generating the doc</P
></LI
><LI
><P
>register in OS suspend/hibernate mechanism to stop fcron when going to sleep and start it again when resuming from sleep (see FAQ entry).</P
></LI
><LI
><P
></P
></LI
></UL
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN997"
>1.5.2. Low priority</A
></H2
><P
></P
><UL
><LI
><P
>Add unit tests using some unit-test framework (turn the tests/* code into unit tests)</P
></LI
><LI
><P
>For environment settings, make a var substitution.</P
></LI
><LI
><P
>add a mailsubject option, for custom mail subjects (for instance, in case of a job containing something secret -- password, etc -- in the command line).</P
></LI
><LI
><P
>Use directory notifications (FAM) / inotify, and support a fcrontab
and a cron.d as Vixie cron does (directly included in fcron itself, not thanks to a script as now).
However the parsing work is done by fcrontab, and should probably keep on being done by fcrontab for
security and stability reasons: have fcron call fcrontab to do that job?</P
></LI
><LI
><P
>could be worth checking fcron for memory leaks using specialized library (just in case...)</P
></LI
><LI
><P
>option to put a maximum limit on the execution time of a task + terminate it if not finished yet + send email to let the user know</P
></LI
><LI
><P
>setting to limit the number of jobs of a single user in the serialq/lavgq to X jobs + make sure root always has Y slots that it can use in those queues (i.e. number of slots used by root + number of free slots &#62;= Y)</P
></LI
><LI
><P
>Test (and use ?) docbook2x-man -- xlstproc ? cf http://antoine.ginies.free.fr/docbook/ch09.html</P
></LI
><LI
><P
>find way to have the non translated pages of the French translation be updated automatically (changes, todo, etc -&#62; copied from the English doc)</P
></LI
><LI
><P
>add a return code for jobs which would mean that they
should not be run again (in case of an error, etc...).</P
></LI
><LI
><P
>PAM support (included in fcron, but needs more tests by
people using PAM - not implemented in fcrondyn: is it needed
in fcrondyn anyway?)</P
></LI
><LI
><P
>support for per user serial queue (especially for root)</P
></LI
></UL
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN1024"
>1.5.3. Ideas</A
></H2
><P
></P
><UL
><LI
><P
>add a system of modules: at startup, fcron loads some
modules (.so files). Then, when fcron should run the job, it
calls a function of the module, and let it manage the job
(threads?). (do linux dlopen(), etc exist on other systems?
- yes: thanks Harring ;) dlopen exists on all POSIX system -
even windoze - abait it does not use the same insterface of
function calls. But it can be easily implemented to port to
another system.).</P
></LI
><LI
><P
>(related to the system of modules? create a kind of
dependencies?) Add a way to run a job only if a command
returns true. It would permit, for instance, to run some jobs
on a laptop only if it is on AC power.</P
><P
>and depending on the return value of the command, cancel
the execution, or wait x seconds before trying again, etc.
In this case, needs change the way the jobs are queued?</P
></LI
><LI
><P
>add an option/module to prevent fcron from running a job if the
system is running on battery (anacron does it?)</P
></LI
><LI
><P
>Add a way to stop a job (SIGSTOP) if the lavg gets to high,
and restart it (SIGCONT) when the lavg has decreased.</P
></LI
><LI
><P
>Add a timeout for task completion: if a task takes more
than a specified timeout, then start another script with the
initial task PID as argument. That would allow a kill with
different signals (-HUP, -TERM -STOP, .... or any other action
like sending a mail to sysadmin to alert him/her that a task
is taking too much time and that he has to have a look at it.)
(add an option to specify the cmd, and combine w/ option until)
</P
></LI
></UL
></DIV
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="relnotes.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="thanks.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>Release notes: <SPAN
CLASS="APPLICATION"
>fcron</SPAN
> 3.2.0</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="how-and-why.html"
ACCESSKEY="U"
>Up</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>Thanks</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>

View File

@ -1,220 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
<HTML
><HEAD
><TITLE
>Using fcron ...</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK
REL="HOME"
TITLE="Fcron documentation"
HREF="index.html"><LINK
REL="PREVIOUS"
TITLE="Thanks"
HREF="thanks.html"><LINK
REL="NEXT"
TITLE="Manual pages of fcron"
HREF="manpages.html"></HEAD
><BODY
CLASS="CHAPTER"
BGCOLOR="#FFFFFF"
TEXT="#000000"
LINK="#0000FF"
VLINK="#840084"
ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="40%"
ALIGN="left"
VALIGN="top"
><A
HREF="LEGALNOTICE.html"
>Copyright</A
> &copy; 2000-2014 <A
HREF="mailto:fcron@free.fr"
>Thibault Godouet</A
></TD
><TD
WIDTH="20%"
ALIGN="center"
VALIGN="top"
>Fcron 3.2.0 </TD
><TD
WIDTH="40%"
ALIGN="right"
VALIGN="top"
>Web page : <A
HREF="http://fcron.free.fr"
>http://fcron.free.fr</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
>Fcron documentation</TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="thanks.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
></TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="manpages.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="CHAPTER"
><H1
><A
NAME="USING-FCRON"
></A
>Chapter 2. Using fcron ...</H1
><DIV
CLASS="TOC"
><DL
><DT
><B
>Table of Contents</B
></DT
><DT
>2.1. <A
HREF="manpages.html"
>Manual pages of fcron</A
></DT
><DD
><DL
><DT
><A
HREF="fcron.8.html"
>fcron</A
>&nbsp;--&nbsp;daemon to execute scheduled tasks</DT
><DT
><A
HREF="fcron.conf.5.html"
>fcron.conf</A
>&nbsp;--&nbsp;configuration file for fcron and fcrontab</DT
><DT
><A
HREF="fcrontab.1.html"
>fcrontab</A
>&nbsp;--&nbsp;manipulate per-user fcrontab
files</DT
><DT
><A
HREF="fcrontab.5.html"
>fcrontab</A
>&nbsp;--&nbsp;tables for driving fcron</DT
><DT
><A
HREF="fcrondyn.1.html"
>fcrondyn</A
>&nbsp;--&nbsp;dialog dyn-amically with a running fcron daemon</DT
></DL
></DD
><DT
>2.2. <A
HREF="faq.html"
>Frequently Asked Questions</A
></DT
></DL
></DIV
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="thanks.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="manpages.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>Thanks</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
>&nbsp;</TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>Manual pages of fcron</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>

File diff suppressed because it is too large Load Diff

View File

@ -1,397 +0,0 @@
<!--
Fcron documentation
Copyright 2000-2014 Thibault Godouet <fcron@free.fr>
Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License,
Version 1.1 or any later version published by the Free Software
Foundation.
A copy of the license is included in gfdl.sgml.
-->
<sect1 id="faq">
<title>Frequently Asked Questions</title>
<para>This FAQ intends to complement the man pages by following a more
practical approach.</para>
<para>If you think a QA should be added, please mail me it!</para>
<qandaset>
<qandaentry>
<question>
<para>How does fcron handle system clock adjustments?</para>
</question>
<answer>
<para>
First, you must understand that fcron determines, for each job, its next
time and date of execution. It then determines which of those jobs would be the
next to run and then, sleeps until that job should be run. In other words, fcron
doesn't wake up like Vixie cron each minute to check all job in case one should
be run ... and it avoids some problems associated with clock adjusts.</para>
<para>
This means that if the new time value is set into the past, fcron won't
run a particular job again. For instance, suppose the real time and system clock
are 3:00, so the next job cannot be scheduled to run before 3:00, as it would
have already been run and re-scheduled.</para>
<para>
First, suppose you set your system clock into the past, say to 2:00,
Presuming that the last run was shortly before 3:00. then fcron will sleep until
the next job should be executed. The execution time for a job is determined by
identifying the last time that the job ran and computing the next scheduled
time. This means that the next scheduled time must be on or after 3:01.
Therefore, in this example, fcron will not run a job for at least one
hour.</para>
<para>
Next, if you set the system time into the future, say to 4:00, fcron will
run every job scheduled between the old and the new time value once, regardless
of how many times it would have been scheduled. When fcron wakes up to run a job
after the time value has changed, it runs all the jobs which should have run
during the interval because they are scheduled to run in a past time.</para>
<para>
As special case is when "@xxx" style scheduling rules are involved, you
must consider the "adjustment-interval". The "adjustment-interval" is the time
difference between the original system time and the new system time. The concerned
jobs will run at "adjust-interval" too
early or too late depending of the nature of the adjust.</para>
<para>
To conclude, fcron behaves quite well for small clock adjusts. Each job
which should have run does so once, but not exactly at the correct time as if
the job were scheduled within the adjustment interval. But, if you have to make
a big change in the time and date, you should probably reset all the scheduled
"nextexe" by running "fcrontab -z" on all the fcrontabs.</para>
</answer>
</qandaentry>
<qandaentry>
<question>
<para>How does fcron handle daylight saving time changes?</para>
</question>
<answer>
<para>There are two types of daylight saving time change:
the remove-one-hour change (for instance, "at 3:00, it will be 2:00"),
and the add-one-hour one (for instance, "at 2:00, it will be 3:00").
In both cases, fcron will run the job only once (more precisely, it won't
run the job twice as many as it should have).</para>
<para>In the first case, the official time changes as follow
(in order of real chronological time): [x, 2:00] -> i1: [2:00, 3:00]
-> i2: [2:00, 3:00] -> [3:00, y]. i1 and i2 are the names of the two
intervals [2:00, 3:00]. For this kind of DST change, a job which should
run between 2:00 and 3:00 will run either in i1 or in i2, but not both.
Consequently, a job scheduled to run every day at 2:30 (for instance)
will be run only once. There is no way for a user to know if the job will
be run in i1 or i2.</para>
<para>In the second case, there is a gap in time:
the official time changes as follow (in order of real chronological time):
[x, 2:00] -> [3:00, y]. A job scheduled between 2:00 and 3:00 will get
run once, and only once, even if it should have been run several times.
For instance, a job which should have run every 10 minutes will run only
once, not 6 times, between 1:59 and 3:01. A job scheduled to run at
2:xx will run at 3:xx. For instance, if a job is scheduled to run
every day at 2:30, it will run at 3:30 the day of this kind of DST change.
</para>
</answer>
</qandaentry>
<qandaentry>
<question>
<para>What about fcron and software suspend
(aka. suspend to RAM, to disk)?</para>
</question>
<answer>
<para>We suppose here that you are using swsusp and the hibernate
script to do a "suspend to disk", but it should be similar
with other methods.</para>
<para>When you switch on your computer after a suspend to disk,
the system time will be incorrect, and will then be corrected
by the hibernate script. Before it is corrected, fcron may
compute the time and date of the next execution of a job:
the computation would then be incorrect (please see the entry
about system clock adjustment in the present FAQ).</para>
<para>So you should have the hibernate script stop fcron before
the suspend, and then restart it when the system is switched on,
ie. put a line like "RestartServices fcron" in your hibernate.conf
file. That way, the system time will always be correct when
fcron runs (assuming that fcron is started after the system time
is corrected).</para>
</answer>
</qandaentry>
<qandaentry>
<question>
<para>How can I prevent fcrontab from considering the first
"word" of my command line as a user name i.e. "runas(word)"?</para>
</question>
<answer>
<para>
Suppose you have an user called "echo" (weird idea ... :)) ). If you use
the line '* * * * * echo "Hello!"' in root's fcrontab, "echo" will be
interpreted as "runas(echo)".</para>
<para>To avoid that, put your command in quotes:
<programlisting>* * * * * 'echo "Hello!"'</programlisting> will work as
expected as quotes are allowed for the shell command but not for the user
name.</para>
</answer>
</qandaentry>
<qandaentry>
<question>
<para>
I have a job which usually terminates with a non-zero status. When it
does, I receive a email with the exit status even if the command had no output.
How can I avoid the email?</para>
</question>
<answer>
<para>
You could disable email entirely by setting the "mail" option to "no". But,
if you still want to receive the standard output as email, you can add an command
which always evaluates to 0, like "/bin/true", after your primary command. This
will not affect your job nor create additional output. For example:</para>
<programlisting>
* * * * * /a/non/zero/status/job ; /bin/true</programlisting>
</answer>
</qandaentry>
<qandaentry>
<question>
<para>What does "loadavg" mean anyway?</para>
</question>
<answer>
<para>
The "/proc/loadavg" file provides loadavg values. These values are (in
order): the system load averages for the past 1, 5, and 15 minutes; a count of
the (active tasks/active processes); the pid of last process run;
</para>
<para>
The active task count includes those processes marked as running or
uninterruptable. A load average is an estimate of the average number of
processes running within a specified period. The load averages are computed from
active task count. They are updated each time active task counts are taken.
</para>
<para>
<!-- It sure would be nice for some MathML here. -->
The load average formula is: <programlisting>
loadavg(d,n) = active_task_cnt - (active_task_cnt - old_loadavg)*(1/exp(d/n)
</programlisting>
where: d is the time interval between active task count readings, typically every
5 seconds; n is the time over which the readings are averaged.
</para>
</answer>
</qandaentry>
<qandaentry>
<question>
<para>How can I use fcrontab in scripts?</para>
</question>
<answer>
<para>
You can use pipes with "<command>fcrontab -l</command>" (list the
fcrontab) and "<command>fcrontab -</command>" (read the new fcrontab from
input). For example: </para>
<screen> <command>echo -e "`fcrontab -l | grep -v exim`\n0 * * * * /usr/sbin/exim -q" | fcrontab -</command></screen>
<para>
can be used to add a line. Another way to do it would be to:
list the fcrontab settings into a temporary file ("<command>fcrontab -l >
tmpfile</command>"); modify the temporary file ("<command>echo $LINE >>
tmpfile</command>"); replace the original fcrontab by the temporary; and
finally, remove the temporary file ("<command>fcrontab tmpfile ; rm -f
tmpfile</command>").
</para>
</answer>
</qandaentry>
<qandaentry>
<question>
<para>Can I use fcron from time to time, for instance in a
script?</para>
</question>
<answer>
<para>Let's suppose you use fcron in your ppp-up script. Fcron
can permit you to run some jobs at connection startup, but not at each
connection, like it would be if the job was run directly by the ppp-up script:
for instance, only once every week.</para>
<para><example>
<title>Using fcron in a script: running a job once
every day, week, etc, at dialup connection</title>
<para>You can use a script like:</para>
<programlisting>
# A ppp-up script ...
# run the jobs pending, then returns:
fcron -f -y -o
</programlisting>
<para>in conjunction with a fcrontab file like:</para>
<programlisting>
# a fcrontab file ...
%random(no),weekly,stdout * * /a/command/to/download/latest/mozilla/release
%monthly,stdout * * * /update/junkbuster/config/files
</programlisting>
</example></para>
<para>You can also use fcron to run some jobs until the end of
the connection. For instance, you can make fetchmail retrieve emails more often
during connection: we suppose that it is configured to retrieve mails every
hour, which launches a dialup connection if necessary, and we want it to check
for mails every 5 minutes while connected.</para>
<para><example>
<title>Using fcron in a script: running a job until the
end of the connection</title>
<para>ppp-up script:</para>
<programlisting>
# A ppp-up script ...
# run fcron at the beginning of the connection:
fcron -b
</programlisting>
<para>ppp-down script:</para>
<programlisting>
# A ppp-down script ...
# stop fcron at the end of the connection:
# -- Warning: killall may have unwanted effect on non linux systems --
killall -TERM fcron
</programlisting>
<para>the fcrontab:</para>
<programlisting>
# a fcrontab file ...
@volatile,first(0) 5 fetchmail
</programlisting>
</example></para>
<para>If you run fcron in several scripts, or if you run fcron
as a daemon and want also to run fcron in scripts, then you should use fcron,
fcrontab and fcrondyn's <option>--configfile</option>.</para>
<para>For more details, see fcron's command line arguments
&argonce;, <option>--nosyslog</option>,
&argfirstsleep; and <option>--configfile</option> in <link
linkend="fcron.8">&fcron;(8)</link>, and fcrontab's options &optvolatile;,
&optstdout;, &optfirst; in <link
linkend="fcrontab.5">&fcrontab;(5)</link></para>
</answer>
</qandaentry>
<qandaentry>
<question>
<para>Can I run fcron without root's privileges?</para>
</question>
<answer>
<para>Yes, you can. To do that, see the
following instructions, but please note that fcrondyn currently does *not* work
without root privileges.</para>
<orderedlist>
<listitem>
<para>First, create a directory where you'll install fcron,
and some subdirectories:</para>
<screen><prompt>bash$
</prompt> <command>mkdir /home/thib/fcron</command>
<prompt>bash$</prompt> <command>cd /home/thib/fcron</command>
<prompt>bash$</prompt> <command>mkdir doc man spool</command></screen>
</listitem>
<listitem>
<para>Then, run configure with option
<option>--with-run-non-privileged</option>, set all user names and groups to yours,
and set appropriately the paths:</para>
<para><warning>
<para>This option allows a non privileged user to run
fcron. When used, fcron does not change its rights before running a job
(i.e., if joe runs fcron, every job will run as joe). It means that
<emphasis>YOU SHOULD NOT RUN FCRON AS A PRIVILEGED USER WHEN COMPILED
WITH THIS OPTION</emphasis> or you'll have a serious security
hole.</para> </warning></para>
<screen><prompt>bash$
</prompt> <command>./configure --with-run-non-privileged --with-rootname=thib
--with-rootgroup=thib --with-username=thib --with-groupname=thib
--with-etcdir=/home/thib/fcron --with-piddir=/home/thib/fcron
--with-fifodir=/home/thib/fcron --with-spooldir=/home/thib/fcron/spool
--with-docdir=/home/thib/fcron/doc --prefix=/home/thib/fcron</command></screen>
</listitem>
</orderedlist>
<para>The rest of the installation is described in the
<link linkend="install">install file</link>.</para>
</answer>
</qandaentry>
<qandaentry>
<question>
<para>Has fcron some incompatibilities with Vixie cron?</para>
</question>
<answer>
<para>As far as I know, fcron supports Vixie cron's crontab syntax
fully. You should be able to use a crontab
with fcron with no modification (if not please
contact me at &email;).</para>
<para>The main problem is about the management of the system (f)crontab.
Vixie cron monitors the changes on /etc/crontab every minute,
and automatically takes into account the changes if any.
As for now, fcron does not do that by itself.
Fcron does not support the
/etc/cron.d/ directory either, as it is just an extension to the /etc/crontab
file.
However /etc/cron.{daily,weekly,monthly} directories will work
in fcron just fine: they are supported through the run-parts program, just as Vixie cron).</para>
<para>So if you want to replace Vixie cron by fcron transparently,
all you have to do is create a /usr/bin/crontab link to
/usr/bin/fcrontab, and reinstall the system (f)crontab
with 'fcrontab /etc/crontab' every time you modify it
(if you needed some more work than that, please let me know!).</para>
<para>You can also use the script script/check_system_crontabs
to monitor for system (f)crontab changes, i.e. changes to /etc/(f)crontab
and /etc/cron.d/. When it detects a change, it will generate
a new system fcrontab, and install it automatically.
Should you choose to use that script, please take
a look at the beginning of the script: you will find insctructions
on how to use it -- and a few warnings you should pay attention to.
With this script, the fcron's behavior should be very similar
to Vixie cron regarding /etc/crontab and /etc/cron.d/.
</para>
</answer>
</qandaentry>
<qandaentry>
<question>
<para>How can I emulate an anacron entry?</para>
</question>
<answer>
<para>As anacron, fcron does not assume that the system runs permanently.
Thus, fcron features similar functionalities to anacron, but it
has different means to achieve it, in other words other ways to define
when a job should run. Fcron is in general much more flexible
than anacron.
The best thing to do is to have look at
<link linkend="fcrontab.5">&fcrontab;(5),</link> and choose the
type of line which is the most appropriate for your needs (this is
likely to be a @-line or a %-line).</para>
<para>On a Debian/Ubuntu, the default /etc/anacrontab looks like:<para>
<programlisting>1 5 cron.daily nice run-parts --report /etc/cron.daily
7 10 cron.weekly nice run-parts --report /etc/cron.weekly
@monthly 15 cron.monthly nice run-parts --report /etc/cron.monthly
</programlisting>
<para>A close fcron equivalent would be (see &optserial;):<para>
<programlisting># Run once a day/week/month, and ensure only one of those tasks is run at a time:
!reset
!serial,nice(10)
%daily * * run-parts --report /etc/cron.daily
%weekly * * run-parts --report /etc/cron.weekly
%monthly * * * run-parts --report /etc/cron.monthly</programlisting>
<para>Or you could go for something a bit more specific (see &optlavg;, &optnoticenotrun;):<para>
<programlisting># Only run the tasks out of office-hours when the system load is low
# and send an email to the user if fcron couldn't run the job:
!reset
!serial,lavg(0.5,1,1.5),noticenotrun,nice(10),mailto(admin@yourdomain.com)
%daily * 0-9,18-23 run-parts --report /etc/cron.daily
%weekly * 0-9,18-23 run-parts --report /etc/cron.weekly
%monthly * 0-9,18-23 * run-parts --report /etc/cron.monthly</programlisting>
<para>Also, if you do want to emulate an anacron entry of the form:</para>
<programlisting>0 delay job-identity /your/command</programlisting>
<para>then you can use something as:</para>
<programlisting>@runonce delay /your/command</programlisting>
</answer>
</qandaentry>
<qandaentry>
<question>
<para>How can I emulate a Vixie cron @reboot entry?</para>
</question>
<answer>
<para>No need to emulate any more, as
<link linkend="fcrontab.5.shortcuts">Vixie cron shortcuts</link>,
including @reboot, are now supported by fcron!</para>
</answer>
</qandaentry>
</qandaset>
</sect1>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-parent-document:("fcron-doc.sgml" "book" "chapter" "sect1" "")
End:
-->

View File

@ -1,108 +0,0 @@
<!doctype book PUBLIC "-//OASIS//DTD DocBook V4.1//EN" [
<!ENTITY % decl SYSTEM "fcron-doc.mod">
%decl;
]>
<!--
Fcron documentation
Copyright 2000-2014 Thibault Godouet <fcron@free.fr>
Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License,
Version 1.1 or any later version published by the Free Software
Foundation.
A copy of the license is included in gfdl.sgml.
-->
<book lang="en" id="fcron-doc">
<bookinfo id="bookinfo">
<title>Fcron documentation</title>
<date>&date;</date>
<releaseinfo>Fcron &version; <![%devrelease; [
(<emphasis>development</emphasis> release)]]></releaseinfo>
<authorgroup>
<author>
<firstname>Thibault</firstname>
<surname>Godouet</surname>
</author>
</authorgroup>
<copyright>
<year>&copyrightdate;</year>
<holder>Thibault Godouet</holder>
</copyright>
<legalnotice id="legalnotice">
<para><citetitle>Fcron documentation</citetitle> Copyright &copy;
&copyrightdate; Thibault Godouet, &email;</para>
<para>Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.1 or
any later version published by the Free Software Foundation; with the Back-Cover
Texts being <!-- ulink hack because this legal notice gets diverted --> <ulink
url="#backcover">Back Cover Text</ulink>. A copy of the license is included in
<xref linkend="fdl">.</para>
</legalnotice>
<abstract>
<para>&Fcron; is distributed under GPL license (please read the
license in <xref linkend="gpl">).</para>
<para>Project home page: &webpage;</para>
<para>Author: Thibault GODOUET &email;</para>
</abstract>
<abstract>
<para>You can get the latest HTML version of this document at:
&docurlEN; . The SGML DocBook sources are included with fcron packages.</para>
</abstract>
<![%devrelease; [
<abstract>
<para>
<warning>
<para>This release (&version;) - as every version of the
form x.y.z where y is an odd number -, is a <emphasis>development</emphasis>
release, so it may contain more bugs (and uglier ones :)) ) than a stable
release.
</para>
</warning>
</para>
</abstract>
]]>
</bookinfo>
<chapter id="how-and-why">
<title>Fcron: how and why?</title>
<para>This chapter will explain you what is &fcron;, why you should need
it, and how to install it.</para>
&about;
&install;
&changes;
&relnotes;
&todo;
&thanks;
</chapter>
<chapter id="using-fcron">
<title>Using fcron ...</title>
<sect1 id="manpages">
<title>Manual pages of fcron</title>
<para>This section contains the manual pages, which tell you how to use &fcron;.</para>
&fcron.8;
&fcron.conf.5;
&fcrontab.1;
&fcrontab.5;
&fcrondyn.1;
</sect1>
&faq;
</chapter>
&gpl;
&fdl;
</book>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-indent-data:nil
sgml-local-ecat-files:("psgml-ecat.file")
End:
-->

View File

@ -1,317 +0,0 @@
<!--
Fcron documentation
Copyright 2000-2014 Thibault Godouet <fcron@free.fr>
Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License,
Version 1.1 or any later version published by the Free Software
Foundation.
A copy of the license is included in gfdl.sgml.
-->
<refentry id="fcron.8">
<refmeta>
<refentrytitle>fcron</refentrytitle>
<manvolnum>8</manvolnum>
<refmiscinfo>Fcron &version; <![%devrelease; [
(<emphasis>development</emphasis> release)]]></refmiscinfo>
<refmiscinfo>&date;</refmiscinfo>
</refmeta>
<refnamediv>
<refname>fcron</refname>
<refpurpose>daemon to execute scheduled tasks</refpurpose>
</refnamediv>
<refsynopsisdiv>
<cmdsynopsis>
<command>fcron</command>
<arg>-c <replaceable>file</replaceable></arg>
<arg>-d</arg>
<arg>-b</arg>
<arg>-s <replaceable>time</replaceable></arg>
<arg>-m <replaceable>num</replaceable></arg>
<arg>-q <replaceable>num</replaceable></arg>
</cmdsynopsis>
<cmdsynopsis>
<command>fcron</command>
<arg>-c <replaceable>file</replaceable></arg>
<arg>-d</arg>
<arg>-f</arg>
<arg>-o</arg>
<arg>-y</arg>
<arg>-p <replaceable>file</replaceable></arg>
<arg>-l <replaceable>time</replaceable></arg>
</cmdsynopsis>
<cmdsynopsis>
<command>fcron</command>
<arg>-n <replaceable>dir</replaceable></arg>
</cmdsynopsis>
<cmdsynopsis>
<command>fcron</command>
<arg>-h</arg>
</cmdsynopsis>
<cmdsynopsis>
<command>fcron</command>
<arg>-V</arg>
</cmdsynopsis>
</refsynopsisdiv>
<refsect1>
<title>Description</title>
<para>
&Fcron; should be started from <filename>/etc/rc</filename> or
<filename>/etc/rc.local</filename>. Unless the <option>-f</option> (or
<option>--foreground</option>) option is given, it will return immediately, so
you don't need to start it with '&'.</para>
<para>
&Fcron; loads users &fcrontabf;s (see <link
linkend="fcrontab.5">&fcrontab;(5)</link>) files previously installed by
<command>fcrontab</command> (see <link
linkend="fcrontab.1">&fcrontab;(1)</link>). Then, &fcron; calculates the time
and date of each job's next execution, and determines how long it has to sleep,
and sleeps for this amount of time. When it wakes up, it checks all jobs loaded
and runs them if needed. When a job is executed, &fcron; forks, changes its user
and group permissions to match those of the user the job is being done for,
executes that job and mails the outputs to the user (this can be changed: see
<link linkend="fcrontab.5">&fcrontab;(5)</link>).</para>
<para>
Informative message about what &fcron; is doing are sent to
<application>syslogd</application>(8) under facility <emphasis>cron</emphasis>,
priority <emphasis>notice</emphasis>. Warning and error messages are sent
respectively at priority <emphasis>warning</emphasis> and
<emphasis>error</emphasis>.</para>
<para><note>
<para>
&fcron; sleeps at least &firstsleep; seconds after it has been started before
executing a job to avoid to use too much resources during system boot.</para>
</note></para>
</refsect1>
<refsect1>
<title>Options</title>
<variablelist>
<varlistentry>
<term><option>-f</option></term>
<term><option>--foreground</option></term>
<listitem>
<para>
Don't fork to the background. In this mode, &fcron; will
output informational message to standard error as well as to syslogd.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>-b</option></term>
<term><option>--background</option></term>
<listitem>
<para>Force running in background, even if &fcron; has been
compiled to run in foreground as default.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>-s</option> <replaceable>time</replaceable></term>
<term><option>--savetime</option>
<replaceable>time</replaceable></term>
<listitem>
<para>Save &fcrontabf;s on disk every
<replaceable>time</replaceable> sec (default is 1800).</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>-m</option> <replaceable>num</replaceable></term>
<term><option>--maxserial</option>
<replaceable>num</replaceable></term>
<listitem>
<para>Set to <replaceable>num</replaceable> the maximum number
of serial jobs which can run simultaneously. By default,
this value is set to &serialmaxrunning;.</para>
<para>&seealso; option &optserial; in &fcrontab;(5).</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>-q</option> <replaceable>num</replaceable></term>
<term><option>--queuelen</option> <replaceable>num</replaceable></term>
<listitem>
<para>Set to n the number of jobs the serial queue and
the lavg queue can contain.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>-c</option> <replaceable>file</replaceable></term>
<term><option>--configfile</option>
<replaceable>file</replaceable></term>
<listitem>
<para>Make &fcron; use config file
<replaceable>file</replaceable> instead of default config file
<filename>&etc;/&fcron.conf.location;</filename>. To interact with that running
&fcron; process, &fcrontab; must use the same config file (which is defined by
&fcrontab;'s option <option>-c</option>). That way, several &fcron; processes
can run simultaneously on an only system (but each &fcron; process *must* have a
different spool dir and pid file from the other processes).</para>
</listitem>
</varlistentry>
<varlistentry id="fcron.8.once">
<term><option>-o</option></term>
<term><option>--once</option></term>
<listitem>
<para>Execute all jobs that need to be run at the time &fcron;
was started, wait for them, then return. Sets &argfirstsleep; to 0.
May be especially useful when used with options <option>-y</option> and
<option>-f</option> in a script run, for instance, at dialup connection.</para>
<para>&seealso; fcrontab's options &optvolatile;,
&optstdout;.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>-y</option></term>
<term><option>--nosyslog</option></term>
<listitem>
<para>Don't log to syslog at all. May be useful when running
in foreground.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>-p</option> <replaceable>file</replaceable></term>
<term><option>--logfilepath</option>
<replaceable>file</replaceable></term>
<listitem>
<para>If set, log to the file given as argument. &fcron; will
log to both that file and syslog in parallel unless
<option>-y</option> is also set.</para>
</listitem>
</varlistentry>
<varlistentry id="fcron.8.firstsleep">
<term><option>-l</option> <replaceable>time</replaceable></term>
<term><option>--firstsleep</option>
<replaceable>time</replaceable></term>
<listitem>
<para>Sets the initial delay (in seconds) before any job is
executed, default to &firstsleep; seconds.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>-n</option> <replaceable>dir</replaceable></term>
<term><option>--newspooldir</option>
<replaceable>dir</replaceable></term>
<listitem>
<para>Create <replaceable>dir</replaceable> as a new spool
directory for &fcron;. Set correctly its mode and owner. Then, exit.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>-h</option></term>
<term><option>--help</option></term>
<listitem>
<para>Display a brief description of the options.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>-V</option></term>
<term><option>--version</option></term>
<listitem>
<para>Display an informational message about &fcron;,
including its version and the license under which it is distributed.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>-d</option></term>
<term><option>--debug</option></term>
<listitem>
<para>Run in debug mode (more details on stderr -- if option
<option>-f</option> is set -- and in log file)</para>
</listitem>
</varlistentry>
</variablelist>
</refsect1>
<refsect1>
<title>Return values</title>
<para>&Fcron; returns &exitok; on normal exit, and &exiterr; on
error.</para>
</refsect1>
<refsect1>
<title>Signals</title>
<variablelist>
<varlistentry>
<term><constant>SIGTERM</constant></term>
<listitem>
<para>Save configuration (time remaining until next
execution, time and date of next execution, etc), wait for all running jobs and
exit.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><constant>SIGUSR1</constant></term>
<listitem>
<para>Force &fcron; to reload its configuration.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><constant>SIGUSR2</constant></term>
<listitem>
<para>Make &fcron; print its current schedule on syslog. It
also toggles on/off the printing on debug info on syslog.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><constant>SIGHUP</constant></term>
<listitem>
<para>Tell &fcron; to check if there is any configuration
update (this signal is used by &fcrontab;(5))</para>
</listitem>
</varlistentry>
</variablelist>
</refsect1>
<refsect1>
<title>Conforming to</title>
<para>Should be POSIX compliant.</para>
</refsect1>
<refsect1>
<title>Files</title>
<variablelist>
<varlistentry>
<term><filename>&etc;/&fcron.conf.location;</filename></term>
<listitem>
<para>Configuration file for &fcron;, &fcrontab; and
&fcrondyn;: contains paths (spool dir, pid file) and default programs to use
(editor, shell, etc). See <link linkend="fcron.conf.5">&fcron.conf;(5)</link>
for more details.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><filename>&etc;/&fcron.allow;</filename></term>
<listitem>
<para>Users allowed to use &fcrontab; and &fcrondyn; (one
name per line, special name "all" acts for everyone)</para>
</listitem>
</varlistentry>
<varlistentry>
<term><filename>&etc;/&fcron.deny;</filename></term>
<listitem>
<para>Users who are not allowed to use &fcrontab; and
&fcrondyn; (same format as allow file)</para>
</listitem>
</varlistentry>
<varlistentry>
<term><filename>&etc;/pam.d/fcron</filename> (or
<filename>&etc;/pam.conf</filename>)</term>
<listitem>
<para><productname>PAM</productname> configuration file for
&fcron;. Take a look at &pam;(8) for more details.</para>
</listitem>
</varlistentry>
</variablelist>
</refsect1>
&manpage-foot;
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-parent-document:("fcron-doc.sgml" "book" "chapter" "sect1" "")
End:
-->

View File

@ -1,162 +0,0 @@
<!--
Fcron documentation
Copyright 2000-2014 Thibault Godouet <fcron@free.fr>
Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License,
Version 1.1 or any later version published by the Free Software
Foundation.
A copy of the license is included in gfdl.sgml.
-->
<refentry id="fcron.conf.5">
<refmeta>
<refentrytitle>fcron.conf</refentrytitle>
<manvolnum>5</manvolnum>
<refmiscinfo>Fcron &version; <![%devrelease; [
(<emphasis>development</emphasis> release)]]></refmiscinfo>
<refmiscinfo>&date;</refmiscinfo>
</refmeta>
<refnamediv>
<refname>fcron.conf</refname>
<refpurpose>configuration file for fcron and fcrontab</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<abstract>
<para>This page describes the syntax used for the configuration file
of <link linkend="fcrontab.1">&fcrontab;</link>(1), <link
linkend="fcrondyn.1">&fcrondyn;</link>(1) and <link
linkend="fcron.8">&fcron;</link>(8).</para>
</abstract>
<para>Blank lines, line beginning by a hash sign (#) (which are
considered comments), leading blanks and tabs are ignored. Each line in a
&fcron.conf file is of the form
<blockquote>
<para>name = value</para>
</blockquote> where the blanks around equal-sign (=) are ignored and
optional. Trailing blanks are also ignored.
</para>
<para>The following names are recognized (default value in parentheses):
<variablelist>
<title>Valid variables in a fcron.conf file</title>
<varlistentry>
<term><varname>fcrontabs</varname>=<replaceable>directory</replaceable>
(<filename>&fcrontabsdir;</filename>)</term>
<listitem>
<para>&Fcron; spool directory.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><varname>pidfile</varname>=<replaceable>file-path</replaceable>
(<filename>&fcron.pid;</filename>)</term>
<listitem>
<para>Location of &fcron; pid file (needed by &fcrontab;
to work properly).</para>
</listitem>
</varlistentry>
<varlistentry>
<term><varname>fifofile</varname>=<replaceable>file-path</replaceable>
(<filename>&fcron.fifo;</filename>)</term>
<listitem>
<para>Location of &fcron; fifo file (needed by
&fcrondyn; to communicate with &fcron;).</para>
</listitem>
</varlistentry>
<varlistentry>
<term><varname>fcronallow</varname>=<replaceable>file-path</replaceable>
(<filename>&etc;/&fcron.allow;</filename>)</term>
<listitem>
<para>Location of fcron.allow file.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><varname>fcrondeny</varname>=<replaceable>file-path</replaceable>
(<filename>&etc;/&fcron.deny;</filename>)</term>
<listitem>
<para>Location of fcron.deny file.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><varname>shell</varname>=<replaceable>file-path</replaceable>
(<filename>&shell;</filename>)</term>
<listitem>
<para>Location of default shell called by &fcron; when
running a job. When &fcron; runs a job, &fcron; uses the value of <envar>SHELL</envar> from the fcrontab if any, otherwise it uses the value from <filename>fcron.conf</filename> if any, or in last resort the value from <filename>/etc/passwd</filename>.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><varname>sendmail</varname>=<replaceable>file-path</replaceable>
(<filename>&sendmail;</filename>)</term>
<listitem>
<para>Location of mailer program called by &fcron; to
send job output.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><varname>editor</varname>=<replaceable>file-path</replaceable>
(<filename>&editor;</filename>)</term>
<listitem>
<para>Location of default editor used when invoking
"fcrontab -e".</para>
</listitem>
</varlistentry>
</variablelist> File-paths and directories are complete and absolute
(i.e. beginning by a "/").</para>
<para>To run several instances of &fcron; simultaneously on the same
system, you must use a different configuration file for each instance. Each
instance must have a different <varname>fcrontabs</varname>,
<varname>pidfile</varname> and <varname>fifofile</varname>. Then, use <link
linkend="fcron.8">&fcron;</link>(8)'s command line option
<parameter>-c</parameter> to select which config file (so which instance) you
refer to.</para>
</refsect1>
<refsect1>
<title>Files</title>
<variablelist>
<varlistentry>
<term><filename>&etc;/&fcron.conf.location;</filename></term>
<listitem>
<para>Configuration file for &fcron;, &fcrontab and
&fcrondyn;: contains paths (spool dir, pid file) and default programs to use
(editor, shell, etc). See <link linkend="fcron.conf.5">&fcron.conf</link>(5) for
more details.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><filename>&etc;/&fcron.allow;</filename></term>
<listitem>
<para>Users allowed to use &fcrontab; and &fcrondyn; (one
name per line, special name "all" acts for everyone)</para>
</listitem>
</varlistentry>
<varlistentry>
<term><filename>&etc;/&fcron.deny;</filename></term>
<listitem>
<para>Users who are not allowed to use &fcrontab; and
&fcrondyn; (same format as allow file)</para>
</listitem>
</varlistentry>
<varlistentry>
<term><filename>&etc;/pam.d/fcron</filename> (or
<filename>&etc;/pam.conf</filename>)</term>
<listitem>
<para><productname>PAM</productname> configuration file for
&fcron;. Take a look at &pam;(8) for more details.</para>
</listitem>
</varlistentry>
</variablelist>
</refsect1>
&manpage-foot;
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-parent-document:("fcron-doc.sgml" "book" "chapter" "sect1" "refentry" "")
End:
-->

View File

@ -1,375 +0,0 @@
<!--
Fcron documentation
Copyright 2000-2014 Thibault Godouet <fcron@free.fr>
Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License,
Version 1.1 or any later version published by the Free Software
Foundation.
A copy of the license is included in gfdl.sgml.
-->
<refentry id="fcrondyn.1">
<refmeta>
<refentrytitle>fcrondyn</refentrytitle>
<manvolnum>1</manvolnum>
<refmiscinfo>Fcron &version; <![%devrelease; [
(<emphasis>development</emphasis> release)]]></refmiscinfo>
<refmiscinfo>&date;</refmiscinfo>
</refmeta>
<refnamediv>
<refname>fcrondyn</refname>
<refpurpose>dialog dyn-amically with a running fcron daemon</refpurpose>
</refnamediv>
<refsynopsisdiv id="fcrondyn.1.synopsis">
<cmdsynopsis>
<command>fcrondyn</command>
<arg>-c <replaceable>file</replaceable></arg>
<arg>-i</arg>
</cmdsynopsis>
<cmdsynopsis>
<command>fcrondyn</command>
<arg>-c <replaceable>file</replaceable></arg>
<arg choice="plain">-x <replaceable>command</replaceable></arg>
</cmdsynopsis>
<cmdsynopsis>
<command>fcrondyn</command>
<arg>-h</arg>
</cmdsynopsis>
</refsynopsisdiv>
<refsect1>
<title>Description</title>
<para>&Fcrondyn; is a user tool intended to interact with a running
fcron daemon. It can, for instance, list user's jobs loaded by fcron, run one of
them, renice a running job, send a signal to a running job, etc.</para>
</refsect1>
<refsect1>
<title>Options</title>
<variablelist>
<varlistentry>
<term><option>-i</option></term>
<listitem>
<para>Run &fcrondyn; in interactive mode. &fcrondyn; is also
run in interactive mode when no option is given.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>-x</option>
<replaceable>command</replaceable></term>
<listitem>
<para>Run <replaceable>command</replaceable> and returns
immediately. <link linkend="fcrondyn.1.cmd.descp">See below</link> for syntax
and a list of commands.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>-c</option> <replaceable>file</replaceable></term>
<listitem>
<para>Make &fcrondyn; use config file
<replaceable>file</replaceable> instead of default config file
<filename>&etc;/&fcron.conf.location;</filename>. To interact with a running
&fcron; process, &fcrondyn; must use the same config file as the process. That
way, several &fcron; processes can run simultaneously on an only system.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>-d</option></term>
<listitem>
<para>Run in debug mode. In this mode, many informational
messages will be output in order to check if anything went wrong.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>-h</option></term>
<listitem>
<para>Display a brief description of the options.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>-V</option></term>
<listitem>
<para>Display an informational message about &fcrondyn;,
including its version and the license under which it is distributed.</para>
</listitem>
</varlistentry>
</variablelist>
</refsect1>
<refsect1 id="fcrondyn.1.cmd.descp">
<title>Command description</title>
<para>&Fcrondyn;'s command syntax is the following: </para>
<blockquote>
<para><command>command</command> <replaceable>arg1</replaceable>
<replaceable>arg2</replaceable> [...]</para>
</blockquote>
<para>An argument of a &fcrondyn; command is of one of the following
type:</para>
<variablelist>
<title>Argument types of &fcrondyn;'s commands</title>
<varlistentry>
<term><emphasis><type>user</type></emphasis></term>
<listitem>
<para>A valid user name.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis><type>jobid</type></emphasis></term>
<listitem>
<para>A job id given by one of &fcrondyn;'s
<command>ls*</command> commands (i.e. an integer).</para>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis><type>sig</type></emphasis></term>
<listitem>
<para>A signal number, or its name (case does not matter).
For instance, "term" or "15".</para>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis><type>niceval</type></emphasis></term>
<listitem>
<para>A job priority value. A
<emphasis><type>niceval</type></emphasis> is an integer from -20 (highest
priority) to 19 (lowest) (only root is allowed to use a negative value with this
option).</para>
</listitem>
</varlistentry>
</variablelist>
<para>Last, but not least, the following commands are recognized
(optional arguments are between []):</para>
<variablelist>
<title>Valid &fcrondyn;'s commands</title>
<varlistentry>
<term><command>help</command></term>
<term><command>h</command></term>
<listitem>
<para>Print an help message about fcrondyn's
commands.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><command>quit</command></term>
<term><command>q</command></term>
<listitem>
<para>In interactive mode, quit fcrondyn.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><command>ls</command>
[<emphasis><type>user</type></emphasis>]</term>
<listitem>
<para>List all jobs of user. When <command>ls</command> is
run by root, all users are listed unless a user name is given as argument. <link
linkend="fcrondyn.1.ls.fields">See below</link> for some explanations about the
fields used by <command>ls*</command> commands.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><command>ls_lavgq</command>
[<emphasis><type>user</type></emphasis>]</term>
<listitem>
<para>Same as <command>ls</command>, but list only the jobs
which are in the load-average queue (i.e. which are waiting for a lower load
average to be run).</para>
</listitem>
</varlistentry>
<varlistentry>
<term><command>ls_serialq</command>
[<emphasis><type>user</type></emphasis>]</term>
<listitem>
<para>Same as <command>ls</command>, but list only the jobs
which are in the serial queue (i.e. which are waiting for
other jobs to be finished).</para>
</listitem>
</varlistentry>
<varlistentry>
<term><command>ls_exeq</command>
[<emphasis><type>user</type></emphasis>]</term>
<listitem>
<para>Same as <command>ls</command>, but list only the jobs
which are running.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><command>detail</command>
<emphasis><type>jobid</type></emphasis></term>
<listitem>
<para>Print details about a
job. <emphasis><type>jobid</type></emphasis> is the one given by
<command>ls</command>.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><command>runnow</command>
<emphasis><type>jobid</type></emphasis></term>
<listitem>
<para>Instead of waiting for the next scheduled execution
time, run the job now. The next execution time is changed as
if the job had run on schedule.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><command>run</command>
<emphasis><type>jobid</type></emphasis></term>
<listitem>
<para>Run the job now. Its next execution time is not changed.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><command>kill</command>
<emphasis><type>sig</type></emphasis>
<emphasis><type>jobid</type></emphasis></term>
<listitem>
<para>Send a signal to a running job.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><command>renice</command>
<emphasis><type>niceval</type></emphasis>
<emphasis><type>jobid</type></emphasis></term>
<listitem>
<para>Change the priority of a running job.</para>
</listitem>
</varlistentry>
</variablelist>
<variablelist id="fcrondyn.1.ls.fields">
<title>Fields used by <command>detail</command> and
<command>ls*</command> commands</title>
<varlistentry>
<term>ID</term>
<listitem>
<para>Job's unique identification number.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>USER</term>
<listitem>
<para>User who owns this job.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>PID</term>
<listitem>
<para>The pid of the running job.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>INDEX</term>
<listitem>
<para>Index of the job in the serial queue (i.e. it will be run when all the jobs of an inferior index have been run)</para>
</listitem>
</varlistentry>
<varlistentry>
<term>R&amp;Q</term>
<listitem>
<para>The job has this number instances of the given task which are either running or queued in the serial or lavg queue.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>OPTIONS</term>
<listitem>
<para>List of main options which are set for the task.
L for the jobs which run only under a given system Load average (option &optlavg;, &optlavg1;, &optlavg5; and &optlavg15;), LO (Load average Once) if only at most one instance of the task can be in the load average queue at a given time (option &optlavgonce;), S for serialized jobs (option &optserial;), SO for the jobs which will be serialized only for the next execution (Serial Once), and ES if several instances of the same job can run simultaneously (option &optexesev;).</para>
</listitem>
</varlistentry>
<varlistentry>
<term>LAVG</term>
<listitem>
<para>3 values, corresponding to the 1, 5, and 15-minute (in
this order) system load average values below which the job
will be run, otherwise it will be queued until the system
load average is appropriate (see &optlavg; option).</para>
</listitem>
</varlistentry>
<varlistentry>
<term>UNTIL</term>
<listitem>
<para>Field corresponding to the &optuntil; option.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>STRICT</term>
<listitem>
<para>Field corresponding to the &optstrict; option. Y for
yes, N for no.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>SCHEDULE</term>
<listitem>
<para>Next run is scheduled at this time and date. Please note that fcrondyn prints the next execution time and date in the time zone of the system where fcron is running, and not the time zone which can be defined for using option &opttimezone;.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>CMD</term>
<listitem>
<para>The command that will be executed.</para>
</listitem>
</varlistentry>
</variablelist>
</refsect1>
<refsect1>
<title>Return values</title>
<para>&Fcrondyn; returns &exitok; on normal exit and &exiterr; on
error.</para>
</refsect1>
<refsect1>
<title>Conforming to</title>
<para>Should be POSIX compliant.</para>
</refsect1>
<refsect1 id="fcrondyn.1.files">
<title>Files</title>
<variablelist>
<varlistentry>
<term><filename>&etc;/&fcron.conf.location;</filename></term>
<listitem>
<para>Configuration file for &fcron;, &fcrontab; and
&fcrondyn;: contains paths (spool dir, pid file) and default programs to use
(editor, shell, etc). See <link linkend="fcron.conf.5">&fcron.conf;(5)</link>
for more details.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><filename>&etc;/&fcron.allow;</filename></term>
<listitem>
<para>Users allowed to use &fcrontab; and &fcrondyn; (one
name per line, special name "all" acts for everyone)</para>
</listitem>
</varlistentry>
<varlistentry>
<term><filename>&etc;/&fcron.deny;</filename></term>
<listitem>
<para>Users who are not allowed to use &fcrontab; and
&fcrondyn; (same format as allow file)</para>
</listitem>
</varlistentry>
<varlistentry>
<term><filename>&etc;/pam.d/fcron</filename> (or
<filename>&etc;/pam.conf</filename>)</term>
<listitem>
<para><productname>PAM</productname> configuration file for
&fcron;. Take a look at pam(8) for more details.</para>
</listitem>
</varlistentry>
</variablelist>
</refsect1>
&manpage-foot;
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-parent-document:("fcron-doc.sgml" "book" "chapter" "sect1" "")
End:
-->

View File

@ -1,242 +0,0 @@
<!--
Fcron documentation
Copyright 2000-2014 Thibault Godouet <fcron@free.fr>
Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License,
Version 1.1 or any later version published by the Free Software
Foundation.
A copy of the license is included in gfdl.sgml.
-->
<refentry id="fcrontab.1">
<refmeta>
<refentrytitle>fcrontab</refentrytitle> <manvolnum>1</manvolnum>
<refmiscinfo>Fcron &version; <![%devrelease; [
(<emphasis>development</emphasis> release)]]></refmiscinfo>
<refmiscinfo>&date;</refmiscinfo>
</refmeta>
<refnamediv>
<refname>fcrontab</refname> <refpurpose>manipulate per-user fcrontab
files</refpurpose>
</refnamediv>
<refsynopsisdiv id="fcrontab.1.synopsis">
<cmdsynopsis>
<command>fcrontab</command> <arg>-c
<replaceable>file</replaceable></arg> <arg>-n</arg> <arg
choice="plain"><replaceable>file</replaceable></arg>
<group>
<arg><replaceable>user</replaceable></arg> <arg>-u
<replaceable>user</replaceable></arg>
</group>
</cmdsynopsis>
<cmdsynopsis>
<command>fcrontab</command> <arg>-c
<replaceable>file</replaceable></arg> <arg>-n</arg>
<group choice="req">
<arg>-l</arg> <arg>-r</arg> <arg>-e</arg> <arg>-z</arg>
</group>
<group>
<arg><replaceable>user</replaceable></arg> <arg>-u
<replaceable>user</replaceable></arg>
</group>
</cmdsynopsis>
<cmdsynopsis>
<command>fcrontab</command> <arg>-h</arg>
</cmdsynopsis>
</refsynopsisdiv>
<refsect1>
<title>Description</title> <para>&Fcrontab; is the program intended to
install, edit, list and remove the tables used by <link
linkend="fcron.8">&fcron;(8)</link> daemon. As &fcron; internally
uses a non-human readable format (this is needed because &fcron;
saves more informations than the user gives, for example the time
and date of next execution), the user cannot edit directly his
&fcrontabf; (the one used by &fcron;).</para> <para>When a user
installs a &fcrontabf;, the source file is saved in the spool
directory (<filename>&fcrontabsdir;</filename>) to allow future
editions, and a formatted file is generated for the &fcron; daemon,
which is signaled once about ten seconds before the next minute for
all changes made previously. The daemon is not informed of the changes
immediately but at most once a minute
to keep ill disposed users from blocking the daemon by installing
&fcrontabf;s over and over (ie. denial of service attack). We will call
"<emphasis>fcrontab</emphasis>" the source file of the &fcrontabf;
in the following.</para> <para>A user can install a &fcrontabf; if
he is listed in the <filename>&etc;/&fcron.allow;</filename> and not
(unless by the keyword all) listed in
<filename>&etc;/&fcron.deny;</filename> (see section "<link
linkend="fcrontab.1.files">files</link>" below). If neither
<filename>fcron.allow</filename> nor <filename>fcron.deny</filename>
exist, all users are allowed. None of these files have to exist, but
if they do, the deny file takes precedence.</para> <para>The first
form of the command is used to install a new &fcrontabf; file, from
any named file or from standard input if the pseudo-filename "-" is
given, replacing the previous one (if any): each user can have only
one &fcrontabf;.</para> <para>For instance, root can create a
systemwide fcrontab file, say <filename>/etc/fcrontab</filename>,
and run "<command>fcrontab</command>
<filename>/etc/fcrontab</filename>" to install the new version after
each change of the file. Or (s)he can create a new fcrontab running
a simple "<command>fcrontab</command>", and then maintain it using
"<command>fcrontab</command> <option>-e</option>". Same
considerations apply to a non privileged user.</para>
</refsect1>
<refsect1>
<title>Options</title>
<variablelist>
<varlistentry>
<term><option>-u</option> <replaceable>user</replaceable></term>
<listitem>
<para>Specify the user whose &fcrontabf; will be managed, or
"&sysfcrontab;" for the system fcrontab. Should only be
used by root. If not given, the &fcrontabf; file of the
user invoking &fcrontab; will be handled. It may be useful
since the <application>su</application>(8) command may
confuse &fcrontab;. <note><para>the
'<replaceable>user</replaceable>' in the <link
linkend="fcrontab.1.synopsis">synopsys</link> is equivalent
to a '<option>-u</option>
<replaceable>user</replaceable>'.</para> </note></para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>-l</option></term>
<listitem>
<para>List user's current &fcrontabf; to standard
output.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>-e</option></term>
<listitem>
<para>Edit user's current &fcrontabf; using either the editor
specified by the environment variable
<envar>VISUAL</envar>, or <envar>EDITOR</envar> if
<envar>VISUAL</envar> is not set. If none or them are set,
<command>&editor;</command> will be used.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>-r</option></term>
<listitem>
<para>Remove user's &fcrontabf;.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>-z</option></term>
<listitem>
<para>Reinstall user's &fcrontabf; from its source code. All
informations &fcron; may have kept in the binary
&fcrontabf; (such as the last execution time and date) will
be forgotten (ie. lost).</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>-n</option></term>
<listitem>
<para>Ignore previous version. If this option is not given,
&fcron; will try to keep as much information as possible
between old and new version of the &fcrontabf; (time and
date of next execution, if job is in serial queue, etc) if
the line hasn't been modified (same fields, same shell
command).</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>-c</option> <replaceable>file</replaceable></term>
<listitem>
<para>Make &fcrontab; use config file
<replaceable>file</replaceable> instead of default config
file <filename>&etc;/&fcron.conf.location;</filename>. To
interact with a running &fcron; process, &fcrontab; must
use the same config file as the process. That way, several
&fcron; processes can run simultaneously on an only
system.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>-d</option></term>
<listitem>
<para>Run in debug mode. In this mode, many informational
messages will be output in order to check if anything went
wrong.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>-h</option></term>
<listitem>
<para>Display a brief description of the options.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>-V</option></term>
<listitem>
<para>Display an informational message about &fcrontab;,
including its version and the license under which it is
distributed.</para>
</listitem>
</varlistentry>
</variablelist>
</refsect1>
<refsect1>
<title>Return values</title> <para>&Fcrontab; returns &exitok; on
normal exit and &exiterr; on error.</para>
</refsect1>
<refsect1>
<title>Conforming to</title> <para>Should be POSIX compliant.</para>
</refsect1>
<refsect1 id="fcrontab.1.files">
<title>Files</title>
<variablelist>
<varlistentry>
<term><filename>&etc;/&fcron.conf.location;</filename></term>
<listitem>
<para>Configuration file for &fcron;, &fcrontab; and
&fcrondyn;: contains paths (spool dir, pid file) and
default programs to use (editor, shell, etc). See <link
linkend="fcron.conf.5">&fcron.conf;(5)</link> for more
details.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><filename>&etc;/&fcron.allow;</filename></term>
<listitem>
<para>Users allowed to use &fcrontab; and &fcrondyn; (one name
per line, special name "all" acts for everyone)</para>
</listitem>
</varlistentry>
<varlistentry>
<term><filename>&etc;/&fcron.deny;</filename></term>
<listitem>
<para>Users who are not allowed to use &fcrontab; and
&fcrondyn; (same format as allow file)</para>
</listitem>
</varlistentry>
<varlistentry>
<term><filename>&etc;/pam.d/fcron</filename> (or
<filename>&etc;/pam.conf</filename>)</term>
<listitem>
<para><productname>PAM</productname> configuration file for
&fcron;. Take a look at pam(8) for more details.</para>
</listitem>
</varlistentry>
</variablelist>
</refsect1>
&manpage-foot;
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-parent-document:("fcron-doc.sgml" "book" "chapter" "sect1" "")
End:
-->

File diff suppressed because it is too large Load Diff

View File

@ -1,409 +0,0 @@
<appendix id="fdl">
<title>GNU Free Documentation License</title>
<!-- - GNU Project - Free Software Foundation (FSF) -->
<!-- LINK REV="made" HREF="mailto:webmasters@gnu.org" -->
<!-- sect1>
<title>GNU Free Documentation License</title -->
<para>Version 1.1, March 2000</para>
<blockquote>
<para>Copyright (C) 2000 Free Software Foundation, Inc. 59 Temple
Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and
distribute verbatim copies of this license document, but changing it is not
allowed.</para>
</blockquote>
<sect1 label="0" id="fdl-preamble">
<title>PREAMBLE</title>
<para>The purpose of this License is to make a manual, textbook, or
other written document "free" in the sense of freedom: to assure everyone the
effective freedom to copy and redistribute it, with or without modifying it,
either commercially or noncommercially. Secondarily, this License preserves for
the author and publisher a way to get credit for their work, while not being
considered responsible for modifications made by others.</para>
<para>This License is a kind of "copyleft", which means that
derivative works of the document must themselves be free in the same sense. It
complements the GNU General Public License, which is a copyleft license designed
for free software.</para>
<para>We have designed this License in order to use it for manuals
for free software, because free software needs free documentation: a free
program should come with manuals providing the same freedoms that the software
does. But this License is not limited to software manuals; it can be used for
any textual work, regardless of subject matter or whether it is published as a
printed book. We recommend this License principally for works whose purpose is
instruction or reference.</para>
</sect1>
<sect1 label="1" id="fdl-applicability">
<title>APPLICABILITY AND DEFINITIONS</title>
<para>This License applies to any manual or other work that contains
a notice placed by the copyright holder saying it can be distributed under the
terms of this License. The "Document", below, refers to any such manual or
work. Any member of the public is a licensee, and is addressed as "you".</para>
<para>A "Modified Version" of the Document means any work containing
the Document or a portion of it, either copied verbatim, or with modifications
and/or translated into another language.</para>
<para>A "Secondary Section" is a named appendix or a front-matter
section of the Document that deals exclusively with the relationship of the
publishers or authors of the Document to the Document's overall subject (or to
related matters) and contains nothing that could fall directly within that
overall subject. (For example, if the Document is in part a textbook of
mathematics, a Secondary Section may not explain any mathematics.) The
relationship could be a matter of historical connection with the subject or with
related matters, or of legal, commercial, philosophical, ethical or political
position regarding them.</para>
<para>The "Invariant Sections" are certain Secondary Sections whose
titles are designated, as being those of Invariant Sections, in the notice that
says that the Document is released under this License.</para>
<para>The "Cover Texts" are certain short passages of text that are
listed, as Front-Cover Texts or Back-Cover Texts, in the notice that says that
the Document is released under this License.</para>
<para>A "Transparent" copy of the Document means a machine-readable
copy, represented in a format whose specification is available to the general
public, whose contents can be viewed and edited directly and straightforwardly
with generic text editors or (for images composed of pixels) generic paint
programs or (for drawings) some widely available drawing editor, and that is
suitable for input to text formatters or for automatic translation to a variety
of formats suitable for input to text formatters. A copy made in an otherwise
Transparent file format whose markup has been designed to thwart or discourage
subsequent modification by readers is not Transparent. A copy that is not
"Transparent" is called "Opaque".</para>
<para>Examples of suitable formats for Transparent copies include
plain ASCII without markup, Texinfo input format, LaTeX input format, SGML or
XML using a publicly available DTD, and standard-conforming simple HTML designed
for human modification. Opaque formats include PostScript, PDF, proprietary
formats that can be read and edited only by proprietary word processors, SGML or
XML for which the DTD and/or processing tools are not generally available, and
the machine-generated HTML produced by some word processors for output purposes
only.</para>
<para>The "Title Page" means, for a printed book, the title page
itself, plus such following pages as are needed to hold, legibly, the material
this License requires to appear in the title page. For works in formats which do
not have any title page as such, "Title Page" means the text near the most
prominent appearance of the work's title, preceding the beginning of the body of
the text.</para>
</sect1>
<sect1 label="2" id="fdl-verbatim">
<title>VERBATIM COPYING</title>
<para>You may copy and distribute the Document in any medium, either
commercially or noncommercially, provided that this License, the copyright
notices, and the license notice saying this License applies to the Document are
reproduced in all copies, and that you add no other conditions whatsoever to
those of this License. You may not use technical measures to obstruct or
control the reading or further copying of the copies you make or distribute.
However, you may accept compensation in exchange for copies. If you distribute
a large enough number of copies you must also follow the conditions in section
3.</para>
<para>You may also lend copies, under the same conditions stated
above, and you may publicly display copies.</para>
</sect1>
<sect1 label="3" id="fdl-copying">
<title>COPYING IN QUANTITY</title>
<para>If you publish printed copies of the Document numbering more
than 100, and the Document's license notice requires Cover Texts, you must
enclose the copies in covers that carry, clearly and legibly, all these Cover
Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the back
cover. Both covers must also clearly and legibly identify you as the publisher
of these copies. The front cover must present the full title with all words of
the title equally prominent and visible. You may add other material on the
covers in addition. Copying with changes limited to the covers, as long as they
preserve the title of the Document and satisfy these conditions, can be treated
as verbatim copying in other respects.</para>
<para>If the required texts for either cover are too voluminous to
fit legibly, you should put the first ones listed (as many as fit reasonably) on
the actual cover, and continue the rest onto adjacent pages.</para>
<para>If you publish or distribute Opaque copies of the Document
numbering more than 100, you must either include a machine-readable Transparent
copy along with each Opaque copy, or state in or with each Opaque copy a
publicly-accessible computer-network location containing a complete Transparent
copy of the Document, free of added material, which the general network-using
public has access to download anonymously at no charge using public-standard
network protocols. If you use the latter option, you must take reasonably
prudent steps, when you begin distribution of Opaque copies in quantity, to
ensure that this Transparent copy will remain thus accessible at the stated
location until at least one year after the last time you distribute an Opaque
copy (directly or through your agents or retailers) of that edition to the
public.</para>
<para>It is requested, but not required, that you contact the
authors of the Document well before redistributing any large number of copies,
to give them a chance to provide you with an updated version of the
Document.</para>
</sect1>
<sect1 label="4" id="fdl-modifications">
<title>MODIFICATIONS</title>
<para>You may copy and distribute a Modified Version of the Document
under the conditions of sections 2 and 3 above, provided that you release the
Modified Version under precisely this License, with the Modified Version filling
the role of the Document, thus licensing distribution and modification of the
Modified Version to whoever possesses a copy of it. In addition, you must do
these things in the Modified Version:</para>
<orderedlist numeration="upperalpha">
<listitem><para>Use in the Title Page (and on the covers, if
any) a title distinct from that of the Document, and from those of previous
versions (which should, if there were any, be listed in the History section of
the Document). You may use the same title as a previous version if the original
publisher of that version gives permission.</para>
</listitem>
<listitem><para>List on the Title Page, as authors, one or more
persons or entities responsible for authorship of the modifications in the
Modified Version, together with at least five of the principal authors of the
Document (all of its principal authors, if it has less than five).</para>
</listitem>
<listitem><para>State on the Title page the name of the
publisher of the Modified Version, as the publisher.</para>
</listitem>
<listitem><para>Preserve all the copyright notices of the
Document.</para>
</listitem>
<listitem><para>Add an appropriate copyright notice for your
modifications adjacent to the other copyright notices.</para>
</listitem>
<listitem><para>Include, immediately after the copyright
notices, a license notice giving the public permission to use the Modified
Version under the terms of this License, in the form shown in the Addendum
below.</para>
</listitem>
<listitem><para>Preserve in that license notice the full lists
of Invariant Sections and required Cover Texts given in the Document's license
notice.</para>
</listitem>
<listitem><para>Include an unaltered copy of this
License.</para>
</listitem>
<listitem><para>Preserve the section entitled "History", and its
title, and add to it an item stating at least the title, year, new authors, and
publisher of the Modified Version as given on the Title Page. If there is no
section entitled "History" in the Document, create one stating the title, year,
authors, and publisher of the Document as given on its Title Page, then add an
item describing the Modified Version as stated in the previous sentence.</para>
</listitem>
<listitem><para>Preserve the network location, if any, given in
the Document for public access to a Transparent copy of the Document, and
likewise the network locations given in the Document for previous versions it
was based on. These may be placed in the "History" section. You may omit a
network location for a work that was published at least four years before the
Document itself, or if the original publisher of the version it refers to gives
permission.</para>
</listitem>
<listitem><para>In any section entitled "Acknowledgements" or
"Dedications", preserve the section's title, and preserve in the section all the
substance and tone of each of the contributor acknowledgements and/or
dedications given therein.</para>
</listitem>
<listitem><para>Preserve all the Invariant Sections of the
Document, unaltered in their text and in their titles. Section numbers or the
equivalent are not considered part of the section titles.</para>
</listitem>
<listitem><para>Delete any section entitled "Endorsements".
Such a section may not be included in the Modified Version.</para>
</listitem>
<listitem><para>Do not retitle any existing section as
"Endorsements" or to conflict in title with any Invariant Section.</para>
</listitem>
</orderedlist>
<para>If the Modified Version includes new front-matter sections or
appendices that qualify as Secondary Sections and contain no material copied
from the Document, you may at your option designate some or all of these
sections as invariant. To do this, add their titles to the list of Invariant
Sections in the Modified Version's license notice. These titles must be
distinct from any other section titles.</para>
<para>You may add a section entitled "Endorsements", provided it
contains nothing but endorsements of your Modified Version by various
parties--for example, statements of peer review or that the text has been
approved by an organization as the authoritative definition of a
standard.</para>
<para>You may add a passage of up to five words as a Front-Cover
Text, and a passage of up to 25 words as a Back-Cover Text, to the end of the
list of Cover Texts in the Modified Version. Only one passage of Front-Cover
Text and one of Back-Cover Text may be added by (or through arrangements made
by) any one entity. If the Document already includes a cover text for the same
cover, previously added by you or by arrangement made by the same entity you are
acting on behalf of, you may not add another; but you may replace the old one,
on explicit permission from the previous publisher that added the old
one.</para>
<para>The author(s) and publisher(s) of the Document do not by this
License give permission to use their names for publicity for or to assert or
imply endorsement of any Modified Version.</para>
</sect1>
<sect1 label="5" id="fdl-combining">
<title>COMBINING DOCUMENTS</title>
<para>You may combine the Document with other documents released
under this License, under the terms defined in section 4 above for modified
versions, provided that you include in the combination all of the Invariant
Sections of all of the original documents, unmodified, and list them all as
Invariant Sections of your combined work in its license notice.</para>
<para>The combined work need only contain one copy of this License,
and multiple identical Invariant Sections may be replaced with a single copy.
If there are multiple Invariant Sections with the same name but different
contents, make the title of each such section unique by adding at the end of it,
in parentheses, the name of the original author or publisher of that section if
known, or else a unique number. Make the same adjustment to the section titles
in the list of Invariant Sections in the license notice of the combined
work.</para>
<para>In the combination, you must combine any sections entitled
"History" in the various original documents, forming one section entitled
"History"; likewise combine any sections entitled "Acknowledgements", and any
sections entitled "Dedications". You must delete all sections entitled
"Endorsements."</para>
</sect1>
<sect1 label="6" id="fdl-collections">
<title>COLLECTIONS OF DOCUMENTS</title>
<para>You may make a collection consisting of the Document and other
documents released under this License, and replace the individual copies of this
License in the various documents with a single copy that is included in the
collection, provided that you follow the rules of this License for verbatim
copying of each of the documents in all other respects.</para>
<para>You may extract a single document from such a collection, and
distribute it individually under this License, provided you insert a copy of
this License into the extracted document, and follow this License in all other
respects regarding verbatim copying of that document.</para>
</sect1>
<sect1 label="7" id="fdl-aggregation">
<title>AGGREGATION WITH INDEPENDENT WORKS</title>
<para>A compilation of the Document or its derivatives with other
separate and independent documents or works, in or on a volume of a storage or
distribution medium, does not as a whole count as a Modified Version of the
Document, provided no compilation copyright is claimed for the compilation.
Such a compilation is called an "aggregate", and this License does not apply to
the other self-contained works thus compiled with the Document, on account of
their being thus compiled, if they are not themselves derivative works of the
Document.</para>
<para>If the Cover Text requirement of section 3 is applicable to
these copies of the Document, then if the Document is less than one quarter of
the entire aggregate, the Document's Cover Texts may be placed on covers that
surround only the Document within the aggregate. Otherwise they must appear on
covers around the whole aggregate.</para>
</sect1>
<sect1 label="8" id="fdl-translation">
<title>TRANSLATION</title>
<para>Translation is considered a kind of modification, so you may
distribute translations of the Document under the terms of section 4. Replacing
Invariant Sections with translations requires special permission from their
copyright holders, but you may include translations of some or all Invariant
Sections in addition to the original versions of these Invariant Sections. You
may include a translation of this License provided that you also include the
original English version of this License. In case of a disagreement between the
translation and the original English version of this License, the original
English version will prevail.</para>
</sect1>
<sect1 label="9" id="fdl-termination">
<title>TERMINATION</title>
<para>You may not copy, modify, sublicense, or distribute the
Document except as expressly provided for under this License. Any other attempt
to copy, modify, sublicense or distribute the Document is void, and will
automatically terminate your rights under this License. However, parties who
have received copies, or rights, from you under this License will not have their
licenses terminated so long as such parties remain in full compliance.</para>
</sect1>
<sect1 label="10" id="fdl-future">
<title>FUTURE REVISIONS OF THIS LICENSE</title>
<para>The Free Software Foundation may publish new, revised versions
of the GNU Free Documentation License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to address
new problems or concerns. See <ulink
url="http://www.gnu.org/copyleft/">http://www.gnu.org/copyleft/</ulink>.</para>
<para>Each version of the License is given a distinguishing version
number. If the Document specifies that a particular numbered version of this
License "or any later version" applies to it, you have the option of following
the terms and conditions either of that specified version or of any later
version that has been published (not as a draft) by the Free Software
Foundation. If the Document does not specify a version number of this License,
you may choose any version ever published (not as a draft) by the Free Software
Foundation.</para>
</sect1>
<sect1 label="" id="fdl-howto">
<title>How to use this License for your documents</title>
<para>To use this License in a document you have written, include a
copy of the License in the document and put the following copyright and license
notices just after the title page:</para>
<blockquote><para>
Copyright (c) YEAR YOUR NAME. Permission is granted to copy, distribute
and/or modify this document under the terms of the GNU Free Documentation
License, Version 1.1 or any later version published by the Free Software
Foundation; with the Invariant Sections being LIST THEIR TITLES, with the
Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST. A copy
of the license is included in the section entitled "GNU Free Documentation
License".
</para></blockquote>
<para>If you have no Invariant Sections, write "with no Invariant
Sections" instead of saying which ones are invariant. If you have no
Front-Cover Texts, write "no Front-Cover Texts" instead of "Front-Cover Texts
being LIST"; likewise for Back-Cover Texts.</para>
<para>If your document contains nontrivial examples of program code,
we recommend releasing these examples in parallel under your choice of free
software license, such as the GNU General Public License, to permit their use in
free software.</para>
</sect1>
</appendix>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-parent-document:("fcron-doc.sgml" "book" "appendix" "")
End:
-->

View File

@ -1,339 +0,0 @@
<appendix id="gpl">
<title>GNU GENERAL PUBLIC LICENSE</title>
<para>Version 2, June 1991</para>
<blockquote>
<para>Copyright (C) 1989, 1991 Free Software Foundation, Inc. 59
Temple Place - Suite 330, Boston, MA 02111-1307, USA Everyone is permitted to
copy and distribute verbatim copies of this license document, but changing it is
not allowed.</para>
</blockquote>
<sect1 label="0" id="gpl-preamble">
<title>PREAMBLE</title>
<para>The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public License is
intended to guarantee your freedom to share and change free software--to make
sure the software is free for all its users. This General Public License applies
to most of the Free Software Foundation's software and to any other program
whose authors commit to using it. (Some other Free Software Foundation software
is covered by the GNU Library General Public License instead.) You can apply it
to your programs, too.</para>
<para>
When we speak of free software, we are referring to freedom, not price. Our
General Public Licenses are designed to make sure that you have the freedom to
distribute copies of free software (and charge for this service if you wish),
that you receive source code or can get it if you want it, that you can change
the software or use pieces of it in new free programs; and that you know you can
do these things.</para>
<para>
To protect your rights, we need to make restrictions that forbid anyone to deny
you these rights or to ask you to surrender the rights. These restrictions
translate to certain responsibilities for you if you distribute copies of the
software, or if you modify it.</para>
<para>
For example, if you distribute copies of such a program, whether gratis or for a
fee, you must give the recipients all the rights that you have. You must make
sure that they, too, receive or can get the source code. And you must show them
these terms so they know their rights.</para>
<para>
We protect your rights with two steps: (1) copyright the software, and (2) offer
you this license which gives you legal permission to copy, distribute and/or
modify the software.</para>
<para>
Also, for each author's protection and ours, we want to make certain that
everyone understands that there is no warranty for this free software. If the
software is modified by someone else and passed on, we want its recipients to
know that what they have is not the original, so that any problems introduced by
others will not reflect on the original authors' reputations.</para>
<para>
Finally, any free program is threatened constantly by software patents. We wish
to avoid the danger that redistributors of a free program will individually
obtain patent licenses, in effect making the program proprietary. To prevent
this, we have made it clear that any patent must be licensed for everyone's free
use or not licensed at all.</para>
<para>
The precise terms and conditions for copying, distribution and modification
follow.</para>
</sect1>
<sect1 label="1" id="gpl-terms">
<title>TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND
MODIFICATION</title>
<para>0. This License applies to any program or other work which
contains a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below, refers to
any such program or work, and a "work based on the Program" means either the
Program or any derivative work under copyright law: that is to say, a work
containing the Program or a portion of it, either verbatim or with modifications
and/or translated into another language. (Hereinafter, translation is included
without limitation in the term "modification".) Each licensee is addressed as
"you".</para>
<para>
Activities other than copying, distribution and modification are not covered by
this License; they are outside its scope. The act of running the Program is not
restricted, and the output from the Program is covered only if its contents
constitute a work based on the Program (independent of having been made by
running the Program). Whether that is true depends on what the Program
does.</para>
<para>
1. You may copy and distribute verbatim copies of the Program's source code as
you receive it, in any medium, provided that you conspicuously and appropriately
publish on each copy an appropriate copyright notice and disclaimer of warranty;
keep intact all the notices that refer to this License and to the absence of any
warranty; and give any other recipients of the Program a copy of this License
along with the Program.</para>
<para>
You may charge a fee for the physical act of transferring a copy, and you may at
your option offer warranty protection in exchange for a fee.</para>
<para>
2. You may modify your copy or copies of the Program or any portion of it, thus
forming a work based on the Program, and copy and distribute such modifications
or work under the terms of Section 1 above, provided that you also meet all of
these conditions:</para>
<para>
* a) You must cause the modified files to carry prominent notices stating
that you changed the files and the date of any change.</para>
<para>
* b) You must cause any work that you distribute or publish, that in whole
or in part contains or is derived from the Program or any part thereof, to be
licensed as a whole at no charge to all third parties under the terms of this
License.</para>
<para>
* c) If the modified program normally reads commands interactively when run,
you must cause it, when started running for such interactive use in the most
ordinary way, to print or display an announcement including an appropriate
copyright notice and a notice that there is no warranty (or else, saying that
you provide a warranty) and that users may redistribute the program under these
conditions, and telling the user how to view a copy of this License. (Exception:
if the Program itself is interactive but does not normally print such an
announcement, your work based on the Program is not required to print an
announcement.)</para>
<para>
These requirements apply to the modified work as a whole. If identifiable
sections of that work are not derived from the Program, and can be reasonably
considered independent and separate works in themselves, then this License, and
its terms, do not apply to those sections when you distribute them as separate
works. But when you distribute the same sections as part of a whole which is a
work based on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the entire whole,
and thus to each and every part regardless of who wrote it.</para>
<para>
Thus, it is not the intent of this section to claim rights or contest your
rights to work written entirely by you; rather, the intent is to exercise the
right to control the distribution of derivative or collective works based on the
Program.</para>
<para>
In addition, mere aggregation of another work not based on the Program with the
Program (or with a work based on the Program) on a volume of a storage or
distribution medium does not bring the other work under the scope of this
License.</para>
<para>
3. You may copy and distribute the Program (or a work based on it, under Section
2) in object code or executable form under the terms of Sections 1 and 2 above
provided that you also do one of the following:</para>
<para>
* a) Accompany it with the complete corresponding machine-readable source
code, which must be distributed under the terms of Sections 1 and 2 above on a
medium customarily used for software interchange; or,</para>
<para>
* b) Accompany it with a written offer, valid for at least three years, to
give any third party, for a charge no more than your cost of physically
performing source distribution, a complete machine-readable copy of the
corresponding source code, to be distributed under the terms of Sections 1 and 2
above on a medium customarily used for software interchange; or,</para>
<para>
* c) Accompany it with the information you received as to the offer to
distribute corresponding source code. (This alternative is allowed only for
noncommercial distribution and only if you received the program in object code
or executable form with such an offer, in accord with Subsection b
above.)</para>
<para>
The source code for a work means the preferred form of the work for making
modifications to it. For an executable work, complete source code means all the
source code for all modules it contains, plus any associated interface
definition files, plus the scripts used to control compilation and installation
of the executable. However, as a special exception, the source code distributed
need not include anything that is normally distributed (in either source or
binary form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component itself
accompanies the executable.</para>
<para>
If distribution of executable or object code is made by offering access to copy
from a designated place, then offering equivalent access to copy the source code
from the same place counts as distribution of the source code, even though third
parties are not compelled to copy the source along with the object code.</para>
<para>
4. You may not copy, modify, sublicense, or distribute the Program except as
expressly provided under this License. Any attempt otherwise to copy, modify,
sublicense or distribute the Program is void, and will automatically terminate
your rights under this License. However, parties who have received copies, or
rights, from you under this License will not have their licenses terminated so
long as such parties remain in full compliance.</para>
<para>
5. You are not required to accept this License, since you have not signed it.
However, nothing else grants you permission to modify or distribute the Program
or its derivative works. These actions are prohibited by law if you do not
accept this License. Therefore, by modifying or distributing the Program (or any
work based on the Program), you indicate your acceptance of this License to do
so, and all its terms and conditions for copying, distributing or modifying the
Program or works based on it.</para>
<para>
6. Each time you redistribute the Program (or any work based on the Program),
the recipient automatically receives a license from the original licensor to
copy, distribute or modify the Program subject to these terms and conditions.
You may not impose any further restrictions on the recipients' exercise of the
rights granted herein. You are not responsible for enforcing compliance by third
parties to this License.</para>
<para>
7. If, as a consequence of a court judgment or allegation of patent infringement
or for any other reason (not limited to patent issues), conditions are imposed
on you (whether by court order, agreement or otherwise) that contradict the
conditions of this License, they do not excuse you from the conditions of this
License. If you cannot distribute so as to satisfy simultaneously your
obligations under this License and any other pertinent obligations, then as a
consequence you may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by all those
who receive copies directly or indirectly through you, then the only way you
could satisfy both it and this License would be to refrain entirely from
distribution of the Program.</para>
<para>
If any portion of this section is held invalid or unenforceable under any
particular circumstance, the balance of the section is intended to apply and the
section as a whole is intended to apply in other circumstances.</para>
<para>
It is not the purpose of this section to induce you to infringe any patents or
other property right claims or to contest validity of any such claims; this
section has the sole purpose of protecting the integrity of the free software
distribution system, which is implemented by public license practices. Many
people have made generous contributions to the wide range of software
distributed through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing to
distribute software through any other system and a licensee cannot impose that
choice.</para>
<para>
This section is intended to make thoroughly clear what is believed to be a
consequence of the rest of this License.</para>
<para>
8. If the distribution and/or use of the Program is restricted in certain
countries either by patents or by copyrighted interfaces, the original copyright
holder who places the Program under this License may add an explicit
geographical distribution limitation excluding those countries, so that
distribution is permitted only in or among countries not thus excluded. In such
case, this License incorporates the limitation as if written in the body of this
License.</para>
<para>
9. The Free Software Foundation may publish revised and/or new versions of the
General Public License from time to time. Such new versions will be similar in
spirit to the present version, but may differ in detail to address new problems
or concerns.</para>
<para>
Each version is given a distinguishing version number. If the Program specifies
a version number of this License which applies to it and "any later version",
you have the option of following the terms and conditions either of that version
or of any later version published by the Free Software Foundation. If the
Program does not specify a version number of this License, you may choose any
version ever published by the Free Software Foundation.</para>
<para>
10. If you wish to incorporate parts of the Program into other free programs
whose distribution conditions are different, write to the author to ask for
permission. For software which is copyrighted by the Free Software Foundation,
write to the Free Software Foundation; we sometimes make exceptions for this.
Our decision will be guided by the two goals of preserving the free status of
all derivatives of our free software and of promoting the sharing and reuse of
software generally.</para>
<para>
NO WARRANTY</para>
<para>
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE
PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED
IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS
IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT
NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.</para>
<para>
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL
ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE
PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL,
SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY
TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF
THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER
PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</para>
<para>END OF TERMS AND CONDITIONS</para>
</sect1>
<sect1 label="" id="gpl-howto">
<title>How to use this License for your documents</title>
<para> If you develop a new program, and you want it to be of the
greatest possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these
terms.</para>
<para>To do so, attach the following notices to the program. It is
safest to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least the
"copyright" line and a pointer to where the full notice is found.</para>
<blockquote><para>
<replaceable>one line to give the program's name and an idea of what it
does.</replaceable> Copyright (C) <replaceable>yyyy</replaceable> name of author
This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
Foundation; either version 2 of the License, or (at your option) any later
version. This program 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 General Public License for more
details. You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc., 59
Temple Place - Suite 330, Boston, MA 02111-1307, USA.
</para></blockquote>
<para>Also add information on how to contact you by electronic and
paper mail.</para>
<para>If the program is interactive, make it output a short notice
like this when it starts in an interactive mode:</para>
<screen>Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This
is free software, and you are welcome to redistribute it under certain
conditions; type `show c' for details.
</screen>
<para>The hypothetical commands `<command>show w</command>' and
`<command>show c</command>' should show the appropriate parts of the General
Public License. Of course, the commands you use may be called something other
than `<command>show w</command>' and `<command>show c</command>'; they could
even be mouse-clicks or menu items--whatever suits your program.</para>
<para>You should also get your employer (if you work as a
programmer) or your school, if any, to sign a "copyright disclaimer" for the
program, if necessary. Here is a sample; alter the names:</para>
<blockquote>
<para>Yoyodyne, Inc., hereby disclaims all copyright interest in
the program `Gnomovision' (which makes passes at compilers) written by James
Hacker.</para>
<para><replaceable>signature of Ty Coon</replaceable>, 1 April
1989 Ty Coon, President of Vice</para>
</blockquote>
<para>This General Public License does not permit incorporating your
program into proprietary programs. If your program is a subroutine library, you
may consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Library General Public
License instead of this License.</para>
</sect1>
</appendix>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-parent-document:("fcron-doc.sgml" "book" "appendix" "")
End:
-->

View File

@ -1,186 +0,0 @@
<!--
Fcron documentation
Copyright 2000-2014 Thibault Godouet <fcron@free.fr>
Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License,
Version 1.1 or any later version published by the Free Software
Foundation.
A copy of the license is included in gfdl.sgml.
-->
<sect1 id="install">
<title>How to install fcron</title>
<sect2>
<title>Compilation requirements</title>
<itemizedlist>
<listitem><para>A C compiler (e.g. gcc)</para></listitem>
<listitem><para>(optional) <productname>readline</productname> development
library (e.g. libreadline-dev)</para></listitem>
<listitem><para>(optional) <productname>PAM</productname> development
library (e.g. libpam0g-dev)</para></listitem>
<listitem><para>(optional) <productname>SE Linux</productname> development library (e.g. libselinux1-dev)</para></listitem>
<listitem><para>(optional) <productname>Linux audit</productname> development library (e.g. libaudit-dev)</para></listitem>
<listitem><para>If compiling from git checkout (rather than a tarball), then no generated file will be included out of the box, so you will need more tools to generate them. In particular the ./configure script and the documentation will be generated from the sources.</para>
<itemizedlist>
<listitem><para>git</para></listitem>
<listitem><para>autoconf</para></listitem>
<listitem><para>docbook</para></listitem>
<listitem><para>docbook-xsl</para></listitem>
<listitem><para>docbook-xml</para></listitem>
<listitem><para>docbook-util</para></listitem>
<listitem><para>manpages-dev</para></listitem>
</itemizedlist>
</listitem>
</itemizedlist>
</sect2>
<sect2>
<title>Compilation and installation instructions</title>
<itemizedlist>
<listitem>
<para>uncompress the archive:</para>
<screen><prompt>bash$ </prompt><command>
tar -xzf fcron-X.Y.Z.src.tar.gz</command></screen>
</listitem>
<listitem>
<para>cd to the archive directory</para>
<screen><prompt>bash$ </prompt><command>cd fcron-X.Y.Z</command></screen>
</listitem>
<listitem>
<para>run the <command>configure</command> script:</para>
<screen><prompt>bash$
</prompt><command>./configure</command></screen>
<para>
<note>
<itemizedlist>
<listitem>
<para>
If you can't see a <filename>./configure</filename>, then you probably checked out the files from git, in which case you need to run <command>autoconf</command> to generate the <filename>configure</filename> script.</para>
</listitem>
<listitem>
<para>
If using <productname>PAM</productname>, beware that by default the <productname>PAM</productname> configuration will be installed in <filename>/usr/local/etc/</filename>. That most likely mean that your system won't use this config, and may ask you to type your password everytime you start fcrontab or fcrondyn.</para>
<para>The simplest way to avoid this is to instruct configure to use <filename>/etc</filename> instead with:</para>
<screen><prompt>bash$ </prompt><command>./configure --sysconfdir=/etc</command></screen>
</listitem>
<listitem>
<para>
You may also want to change the place where
&fcron; will be installed: you can use the <command>configure </command>'s
option <option>--prefix</option> to do that. For instance:
</para>
<screen><prompt>bash$ </prompt><command>./configure --prefix=/usr--sysconfdir=/etc</command></screen>
<para>(default is <option>prefix=/usr/local</option> and <option>sysconfdir=${prefix}/etc</option>).</para>
</listitem>
<listitem>
<para>
To disable the use of
<productname>PAM</productname>, <productname>SE Linux</productname> or &fcrondyn;, use <command>configure</command>'s
option <option>--with-pam=no</option>, <option>--with-selinux=no</option>
and/or <option>--with-fcrondyn=no</option>.</para>
</listitem>
<listitem>
<para>
The command <command>make install</command> asks
you by default some questions you have to answer. To avoid that (which can be
useful for automatic installers), you can use the
<command>./configure</command>'s option <option>--with-answer-all</option>
and/or <option>--with-boot-install</option> (see "<command>./configure
--help</command>" for more details).
</para>
</listitem>
<listitem>
<para>To debug &fcron;, you should use
<command>configure </command>'s option <option>--with-debug</option>.
</para>
</listitem>
<listitem>
<para>
You can get info on the others
<command>configure </command>'s options by running
"<command>./configure --help</command>".
</para>
</listitem>
</itemizedlist>
</note>
<warning>
<itemizedlist>
<listitem>
<para>
The <command>configure</command> script may not
define a correct directory for the man pages and the documentation on some
systems. You may check the values defined by <command>configure</command> and if
necessary force a value by the options <option>--mandir</option> and
<option>-with-docdir </option> (see the help by running
"<command>./configure</command> <option>--help</option>").
</para>
</listitem>
<listitem>
<para>
If you get older &fcron;'s man-pages with
<command>man</command> command after having upgraded, it's probably because
&fcron; has changed its default man directory: you should remove manually the
outdated man-pages.
</para>
</listitem>
<listitem>
<para>
The <filename>Makefile</filename> has been
designed for <application>GNU make</application>. Some other version of
<command>make</command> may fail to use it.
</para>
</listitem>
</itemizedlist>
</warning>
</para>
</listitem>
<listitem>
<para><emphasis>(optional)</emphasis> check the file
<filename>config.h</filename>, and change it if necessary (the configurable part
is on the top of the file and clearly delimited).</para>
</listitem>
<listitem>
<para>compile:</para>
<screen><prompt>bash$ </prompt><command>make</command></screen>
</listitem>
<listitem>
<para>then install binaries as root:</para>
<screen><prompt>bash$ </prompt><command>su root</command></screen>
<screen><prompt>bash# </prompt><command>make install</command></screen>
</listitem>
</itemizedlist>
<para>You can now run <command>fcron</command> and
<command>fcrontab</command>.</para>
<note>
<itemizedlist>
<listitem>
<para>
This is a <productname>POSIX</productname> conforming
software. You must have a <productname>POSIX</productname> compiler
(<application>gcc</application> for example) in order to compile it.
</para>
</listitem>
<listitem>
<para>
This software has been written for
<productname>GNU/Linux</productname> systems. If you want to port it on an other
<productname>Unix</productname> platform (thank you if you do it), try to modify
- if possible - only the <application>configure</application> script. Please
send me any modifications at &email; in order to include it in future releases.
</para>
</listitem>
</itemizedlist>
</note>
</sect2>
</sect1>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-parent-document:("fcron-doc.sgml" "book" "chapter" "sect1" "")
End:
-->

View File

@ -1,168 +0,0 @@
.\" Copyright (c) 1989 The Regents of the University of California.
.\" All rights reserved.
.\"
.\" This code is derived from software contributed to Berkeley by
.\" Paul Vixie.
.\"
.\" Redistribution and use in source and binary forms are permitted
.\" provided that the above copyright notice and this paragraph are
.\" duplicated in all such forms and that any documentation,
.\" advertising materials, and other materials related to such
.\" distribution and use acknowledge that the software was developed
.\" by the University of California, Berkeley. The name of the
.\" University may not be used to endorse or promote products derived
.\" from this software without specific prior written permission.
.\" THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
.\" IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
.\" WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
.\"
.\" @(#)bitstring.3 5.1 (Berkeley) 12/13/89
.\"
.TH BITSTRING 3 "December 13, 1989"
.UC 4
.SH NAME
bit_alloc, bit_clear, bit_decl, bit_ffs, bit_nclear, bit_nset,
bit_set, bitstr_size, bit_test \- bit-string manipulation macros
.SH SYNOPSIS
.ft B
.nf
#include <bitstring.h>
name = bit_alloc(nbits)
bitstr_t *name;
int nbits;
bit_decl(name, nbits)
bitstr_t name;
int nbits;
bit_clear(name, bit)
bitstr_t name;
int bit;
bit_ffc(name, nbits, value)
bitstr_t name;
int nbits, *value;
bit_ffs(name, nbits, value)
bitstr_t name;
int nbits, *value;
bit_nclear(name, start, stop)
bitstr_t name;
int start, stop;
bit_nset(name, start, stop)
bitstr_t name;
int start, stop;
bit_set(name, bit)
bitstr_t name;
int bit;
bitstr_size(nbits)
int nbits;
bit_test(name, bit)
bitstr_t name;
int bit;
.fi
.ft R
.SH DESCRIPTION
These macros operate on strings of bits.
.PP
.I Bit_alloc
returns a pointer of type
.I bitstr_t\ *
to sufficient space to store
.I nbits
bits, or NULL if no space is available.
.PP
.I Bit_decl
is a macro for allocating sufficient space to store
.I nbits
bits on the stack.
.PP
.I Bitstr_size
returns the number of elements of type
.I bitstr_t
necessary to store
.I nbits
bits.
This is useful for copying bit strings.
.PP
.I Bit_clear
and
.I bit_set
clear or set the zero-based numbered bit
.IR bit ,
in the bit string
.IR name .
.PP
.I Bit_nset
and
.I bit_nclear
set or clear the zero-based numbered bits from
.I start
to
.I stop
in the bit string
.IR name .
.PP
.I Bit_test
evaluates to zero if the zero-based numbered bit
.I bit
of bit string
.I name
is set, and non-zero otherwise.
.PP
.I Bit_ffs
sets
.I *value
to the zero-based number of the first bit set in the array of
.I nbits
bits referenced by
.IR name .
If no bits are set,
.I *value
is set to -1.
.PP
.I Bit_ffc
sets
.I *value
to the zero-based number of the first bit not set in the array of
.I nbits
bits referenced by
.IR name .
If all bits are set,
.I value
is set to -1.
.SH EXAMPLE
.nf
.in +5
#include <limits.h>
#include <bitstring.h>
...
#define LPR_BUSY_BIT 0
#define LPR_FORMAT_BIT 1
#define LPR_DOWNLOAD_BIT 2
...
#define LPR_AVAILABLE_BIT 9
#define LPR_MAX_BITS 10
make_lpr_available()
{
bitstr_t bit_decl(bitlist, LPR_MAX_BITS);
...
bit_nclear(bitlist, 0, LPR_MAX_BITS - 1);
...
if (!bit_test(bitlist, LPR_BUSY_BIT)) {
bit_clear(bitlist, LPR_FORMAT_BIT);
bit_clear(bitlist, LPR_DOWNLOAD_BIT);
bit_set(bitlist, LPR_AVAILABLE_BIT);
}
}
.fi
.SH "SEE ALSO"
malloc(3)

View File

@ -1,213 +0,0 @@
.\" This manpage has been automatically generated by docbook2man
.\" from a DocBook document. This tool can be found at:
.\" <http://shell.ipoline.com/~elmert/comp/docbook2X/>
.\" Please send any bug reports, improvements, comments, patches,
.\" etc. to Steve Cheng <steve@ggi-project.org>.
.TH "FCRON" "8" "06 July 2014" "07/06/2014" ""
.SH NAME
fcron \- daemon to execute scheduled tasks
.SH SYNOPSIS
\fBfcron\fR [ \fB-c \fIfile\fB\fR ] [ \fB-d\fR ] [ \fB-b\fR ] [ \fB-s \fItime\fB\fR ] [ \fB-m \fInum\fB\fR ] [ \fB-q \fInum\fB\fR ]
\fBfcron\fR [ \fB-c \fIfile\fB\fR ] [ \fB-d\fR ] [ \fB-f\fR ] [ \fB-o\fR ] [ \fB-y\fR ] [ \fB-p \fIfile\fB\fR ] [ \fB-l \fItime\fB\fR ]
\fBfcron\fR [ \fB-n \fIdir\fB\fR ]
\fBfcron\fR [ \fB-h\fR ]
\fBfcron\fR [ \fB-V\fR ]
.SH "DESCRIPTION"
.PP
\fBFcron\fR should be started from \fI/etc/rc\fR or
\fI/etc/rc.local\fR\&. Unless the \fB-f\fR (or
\fB--foreground\fR) option is given, it will return immediately, so
you don't need to start it with '&'.
.PP
\fBFcron\fR loads users \fBfcrontab\fRs (see \fBfcrontab\fR(5)) files previously installed by
\fBfcrontab\fR (see \fBfcrontab\fR(1)). Then, \fBfcron\fR calculates the time
and date of each job's next execution, and determines how long it has to sleep,
and sleeps for this amount of time. When it wakes up, it checks all jobs loaded
and runs them if needed. When a job is executed, \fBfcron\fR forks, changes its user
and group permissions to match those of the user the job is being done for,
executes that job and mails the outputs to the user (this can be changed: see
\fBfcrontab\fR(5)).
.PP
Informative message about what \fBfcron\fR is doing are sent to
\fBsyslogd\fR(8) under facility \fBcron\fR,
priority \fBnotice\fR\&. Warning and error messages are sent
respectively at priority \fBwarning\fR and
\fBerror\fR\&.
.PP
.sp
.RS
.B "Note:"
\fBfcron\fR sleeps at least 20 seconds after it has been started before
executing a job to avoid to use too much resources during system boot.
.RE
.SH "OPTIONS"
.TP
\fB-f\fR
.TP
\fB--foreground\fR
Don't fork to the background. In this mode, \fBfcron\fR will
output informational message to standard error as well as to syslogd.
.TP
\fB-b\fR
.TP
\fB--background\fR
Force running in background, even if \fBfcron\fR has been
compiled to run in foreground as default.
.TP
\fB-s \fItime\fB\fR
.TP
\fB--savetime \fItime\fB\fR
Save \fBfcrontab\fRs on disk every
\fItime\fR sec (default is 1800).
.TP
\fB-m \fInum\fB\fR
.TP
\fB--maxserial \fInum\fB\fR
Set to \fInum\fR the maximum number
of serial jobs which can run simultaneously. By default,
this value is set to 1.
\fBSee also\fR: option serial in \fBfcrontab\fR(5).
.TP
\fB-q \fInum\fB\fR
.TP
\fB--queuelen \fInum\fB\fR
Set to n the number of jobs the serial queue and
the lavg queue can contain.
.TP
\fB-c \fIfile\fB\fR
.TP
\fB--configfile \fIfile\fB\fR
Make \fBfcron\fR use config file
\fIfile\fR instead of default config file
\fI/usr/local/etc/fcron.conf\fR\&. To interact with that running
\fBfcron\fR process, \fBfcrontab\fR must use the same config file (which is defined by
\fBfcrontab\fR\&'s option \fB-c\fR). That way, several \fBfcron\fR processes
can run simultaneously on an only system (but each \fBfcron\fR process *must* have a
different spool dir and pid file from the other processes).
.TP
\fB-o\fR
.TP
\fB--once\fR
Execute all jobs that need to be run at the time \fBfcron\fR
was started, wait for them, then return. Sets --sleeptime to 0.
May be especially useful when used with options \fB-y\fR and
\fB-f\fR in a script run, for instance, at dialup connection.
\fBSee also\fR: fcrontab's options volatile,
stdout\&.
.TP
\fB-y\fR
.TP
\fB--nosyslog\fR
Don't log to syslog at all. May be useful when running
in foreground.
.TP
\fB-p \fIfile\fB\fR
.TP
\fB--logfilepath \fIfile\fB\fR
If set, log to the file given as argument. \fBfcron\fR will
log to both that file and syslog in parallel unless
\fB-y\fR is also set.
.TP
\fB-l \fItime\fB\fR
.TP
\fB--firstsleep \fItime\fB\fR
Sets the initial delay (in seconds) before any job is
executed, default to 20 seconds.
.TP
\fB-n \fIdir\fB\fR
.TP
\fB--newspooldir \fIdir\fB\fR
Create \fIdir\fR as a new spool
directory for \fBfcron\fR\&. Set correctly its mode and owner. Then, exit.
.TP
\fB-h\fR
.TP
\fB--help\fR
Display a brief description of the options.
.TP
\fB-V\fR
.TP
\fB--version\fR
Display an informational message about \fBfcron\fR,
including its version and the license under which it is distributed.
.TP
\fB-d\fR
.TP
\fB--debug\fR
Run in debug mode (more details on stderr -- if option
\fB-f\fR is set -- and in log file)
.SH "RETURN VALUES"
.PP
\fBFcron\fR returns 0 on normal exit, and 1 on
error.
.SH "SIGNALS"
.TP
\fBSIGTERM\fR
Save configuration (time remaining until next
execution, time and date of next execution, etc), wait for all running jobs and
exit.
.TP
\fBSIGUSR1\fR
Force \fBfcron\fR to reload its configuration.
.TP
\fBSIGUSR2\fR
Make \fBfcron\fR print its current schedule on syslog. It
also toggles on/off the printing on debug info on syslog.
.TP
\fBSIGHUP\fR
Tell \fBfcron\fR to check if there is any configuration
update (this signal is used by \fBfcrontab\fR(5))
.SH "CONFORMING TO"
.PP
Should be POSIX compliant.
.SH "FILES"
.TP
\fB\fI/usr/local/etc/fcron.conf\fB\fR
Configuration file for \fBfcron\fR, \fBfcrontab\fR and
\fBfcrondyn\fR: contains paths (spool dir, pid file) and default programs to use
(editor, shell, etc). See \fBfcron.conf\fR(5)
for more details.
.TP
\fB\fI/usr/local/etc/fcron.allow\fB\fR
Users allowed to use \fBfcrontab\fR and \fBfcrondyn\fR (one
name per line, special name "all" acts for everyone)
.TP
\fB\fI/usr/local/etc/fcron.deny\fB\fR
Users who are not allowed to use \fBfcrontab\fR and
\fBfcrondyn\fR (same format as allow file)
.TP
\fB\fI/usr/local/etc/pam.d/fcron\fB (or \fI/usr/local/etc/pam.conf\fB)\fR
PAM configuration file for
\fBfcron\fR\&. Take a look at \fBpam\fR(8) for more details.
.SH "SEE ALSO"
\fBfcrontab\fR(1),
\fBfcrondyn\fR(1),
\fBfcrontab\fR(5),
\fBfcron.conf\fR(5),
\fBfcron\fR(8).
If you're learning how to use fcron from scratch, I suggest
that you read the HTML version of the documentation (if your are not reading it
right now! :) ): the content is the same, but it is easier to navigate thanks
to the hyperlinks.
.SH "AUTHOR"
.PP
Thibault Godouet <fcron@free.fr>

View File

@ -1,104 +0,0 @@
.\" This manpage has been automatically generated by docbook2man
.\" from a DocBook document. This tool can be found at:
.\" <http://shell.ipoline.com/~elmert/comp/docbook2X/>
.\" Please send any bug reports, improvements, comments, patches,
.\" etc. to Steve Cheng <steve@ggi-project.org>.
.TH "FCRON.CONF" "5" "06 July 2014" "07/06/2014" ""
.SH NAME
fcron.conf \- configuration file for fcron and fcrontab
.SH "DESCRIPTION"
.SS "ABSTRACT"
.PP
This page describes the syntax used for the configuration file
of \fBfcrontab\fR(1), \fBfcrondyn\fR(1) and \fBfcron\fR(8).
.PP
Blank lines, line beginning by a hash sign (#) (which are
considered comments), leading blanks and tabs are ignored. Each line in a
\fBfcron.conf\fR file is of the form
.sp
.RS
.PP
name = value
.RE
where the blanks around equal-sign (=) are ignored and
optional. Trailing blanks are also ignored.
.PP
The following names are recognized (default value in parentheses):
"VALID VARIABLES IN A FCRON.CONF FILE"
.TP
\fBfcrontabs=\fIdirectory\fB (\fI/usr/local/var/spool/fcron\fB)\fR
\fBFcron\fR spool directory.
.TP
\fBpidfile=\fIfile-path\fB (\fI/usr/local/var/run/fcron.pid\fB)\fR
Location of \fBfcron\fR pid file (needed by \fBfcrontab\fR
to work properly).
.TP
\fBfifofile=\fIfile-path\fB (\fI/usr/local/var/run/fcron.fifo\fB)\fR
Location of \fBfcron\fR fifo file (needed by
\fBfcrondyn\fR to communicate with \fBfcron\fR).
.TP
\fBfcronallow=\fIfile-path\fB (\fI/usr/local/etc/fcron.allow\fB)\fR
Location of fcron.allow file.
.TP
\fBfcrondeny=\fIfile-path\fB (\fI/usr/local/etc/fcron.deny\fB)\fR
Location of fcron.deny file.
.TP
\fBshell=\fIfile-path\fB (\fI/bin/sh\fB)\fR
Location of default shell called by \fBfcron\fR when
running a job. When \fBfcron\fR runs a job, \fBfcron\fR uses the value of \fBSHELL\fR from the fcrontab if any, otherwise it uses the value from \fIfcron.conf\fR if any, or in last resort the value from \fI/etc/passwd\fR\&.
.TP
\fBsendmail=\fIfile-path\fB (\fI/usr/sbin/sendmail\fB)\fR
Location of mailer program called by \fBfcron\fR to
send job output.
.TP
\fBeditor=\fIfile-path\fB (\fI/usr/bin/vi\fB)\fR
Location of default editor used when invoking
"fcrontab -e".
File-paths and directories are complete and absolute
(i.e. beginning by a "/").
.PP
To run several instances of \fBfcron\fR simultaneously on the same
system, you must use a different configuration file for each instance. Each
instance must have a different fcrontabs,
pidfile and fifofile\&. Then, use \fBfcron\fR(8)'s command line option
\fI-c\fR to select which config file (so which instance) you
refer to.
.SH "FILES"
.TP
\fB\fI/usr/local/etc/fcron.conf\fB\fR
Configuration file for \fBfcron\fR, \fBfcrontab\fR and
\fBfcrondyn\fR: contains paths (spool dir, pid file) and default programs to use
(editor, shell, etc). See \fBfcron.conf\fR(5) for
more details.
.TP
\fB\fI/usr/local/etc/fcron.allow\fB\fR
Users allowed to use \fBfcrontab\fR and \fBfcrondyn\fR (one
name per line, special name "all" acts for everyone)
.TP
\fB\fI/usr/local/etc/fcron.deny\fB\fR
Users who are not allowed to use \fBfcrontab\fR and
\fBfcrondyn\fR (same format as allow file)
.TP
\fB\fI/usr/local/etc/pam.d/fcron\fB (or \fI/usr/local/etc/pam.conf\fB)\fR
PAM configuration file for
\fBfcron\fR\&. Take a look at \fBpam\fR(8) for more details.
.SH "SEE ALSO"
\fBfcrontab\fR(1),
\fBfcrondyn\fR(1),
\fBfcrontab\fR(5),
\fBfcron.conf\fR(5),
\fBfcron\fR(8).
If you're learning how to use fcron from scratch, I suggest
that you read the HTML version of the documentation (if your are not reading it
right now! :) ): the content is the same, but it is easier to navigate thanks
to the hyperlinks.
.SH "AUTHOR"
.PP
Thibault Godouet <fcron@free.fr>

View File

@ -1,219 +0,0 @@
.\" This manpage has been automatically generated by docbook2man
.\" from a DocBook document. This tool can be found at:
.\" <http://shell.ipoline.com/~elmert/comp/docbook2X/>
.\" Please send any bug reports, improvements, comments, patches,
.\" etc. to Steve Cheng <steve@ggi-project.org>.
.TH "FCRONDYN" "1" "06 July 2014" "07/06/2014" ""
.SH NAME
fcrondyn \- dialog dyn-amically with a running fcron daemon
.SH SYNOPSIS
\fBfcrondyn\fR [ \fB-c \fIfile\fB\fR ] [ \fB-i\fR ]
\fBfcrondyn\fR [ \fB-c \fIfile\fB\fR ] \fB-x \fIcommand\fB\fR
\fBfcrondyn\fR [ \fB-h\fR ]
.SH "DESCRIPTION"
.PP
\fBFcrondyn\fR is a user tool intended to interact with a running
fcron daemon. It can, for instance, list user's jobs loaded by fcron, run one of
them, renice a running job, send a signal to a running job, etc.
.SH "OPTIONS"
.TP
\fB-i\fR
Run \fBfcrondyn\fR in interactive mode. \fBfcrondyn\fR is also
run in interactive mode when no option is given.
.TP
\fB-x \fIcommand\fB\fR
Run \fIcommand\fR and returns
immediately. See below for syntax
and a list of commands.
.TP
\fB-c \fIfile\fB\fR
Make \fBfcrondyn\fR use config file
\fIfile\fR instead of default config file
\fI/usr/local/etc/fcron.conf\fR\&. To interact with a running
\fBfcron\fR process, \fBfcrondyn\fR must use the same config file as the process. That
way, several \fBfcron\fR processes can run simultaneously on an only system.
.TP
\fB-d\fR
Run in debug mode. In this mode, many informational
messages will be output in order to check if anything went wrong.
.TP
\fB-h\fR
Display a brief description of the options.
.TP
\fB-V\fR
Display an informational message about \fBfcrondyn\fR,
including its version and the license under which it is distributed.
.SH "COMMAND DESCRIPTION"
.PP
\fBFcrondyn\fR\&'s command syntax is the following:
.sp
.RS
.PP
\fBcommand\fR \fIarg1\fR
\fIarg2\fR [...]
.RE
.PP
An argument of a \fBfcrondyn\fR command is of one of the following
type:
"ARGUMENT TYPES OF FCRONDYN'S COMMANDS"
.TP
\fBuser\fR
A valid user name.
.TP
\fBjobid\fR
A job id given by one of \fBfcrondyn\fR\&'s
\fBls*\fR commands (i.e. an integer).
.TP
\fBsig\fR
A signal number, or its name (case does not matter).
For instance, "term" or "15".
.TP
\fBniceval\fR
A job priority value. A
\fBniceval\fR is an integer from -20 (highest
priority) to 19 (lowest) (only root is allowed to use a negative value with this
option).
.PP
Last, but not least, the following commands are recognized
(optional arguments are between []):
"VALID FCRONDYN'S COMMANDS"
.TP
\fBhelp\fR
.TP
\fBh\fR
Print an help message about fcrondyn's
commands.
.TP
\fBquit\fR
.TP
\fBq\fR
In interactive mode, quit fcrondyn.
.TP
\fBls [user]\fR
List all jobs of user. When \fBls\fR is
run by root, all users are listed unless a user name is given as argument. See below for some explanations about the
fields used by \fBls*\fR commands.
.TP
\fBls_lavgq [user]\fR
Same as \fBls\fR, but list only the jobs
which are in the load-average queue (i.e. which are waiting for a lower load
average to be run).
.TP
\fBls_serialq [user]\fR
Same as \fBls\fR, but list only the jobs
which are in the serial queue (i.e. which are waiting for
other jobs to be finished).
.TP
\fBls_exeq [user]\fR
Same as \fBls\fR, but list only the jobs
which are running.
.TP
\fBdetail jobid\fR
Print details about a
job. \fBjobid\fR is the one given by
\fBls\fR\&.
.TP
\fBrunnow jobid\fR
Instead of waiting for the next scheduled execution
time, run the job now. The next execution time is changed as
if the job had run on schedule.
.TP
\fBrun jobid\fR
Run the job now. Its next execution time is not changed.
.TP
\fBkill sig jobid\fR
Send a signal to a running job.
.TP
\fBrenice niceval jobid\fR
Change the priority of a running job.
"FIELDS USED BY DETAIL AND LS* COMMANDS"
.TP
\fBID\fR
Job's unique identification number.
.TP
\fBUSER\fR
User who owns this job.
.TP
\fBPID\fR
The pid of the running job.
.TP
\fBINDEX\fR
Index of the job in the serial queue (i.e. it will be run when all the jobs of an inferior index have been run)
.TP
\fBR&Q\fR
The job has this number instances of the given task which are either running or queued in the serial or lavg queue.
.TP
\fBOPTIONS\fR
List of main options which are set for the task.
L for the jobs which run only under a given system Load average (option lavg, lavg1, lavg5 and lavg15), LO (Load average Once) if only at most one instance of the task can be in the load average queue at a given time (option lavgonce), S for serialized jobs (option serial), SO for the jobs which will be serialized only for the next execution (Serial Once), and ES if several instances of the same job can run simultaneously (option exesev).
.TP
\fBLAVG\fR
3 values, corresponding to the 1, 5, and 15-minute (in
this order) system load average values below which the job
will be run, otherwise it will be queued until the system
load average is appropriate (see lavg option).
.TP
\fBUNTIL\fR
Field corresponding to the until option.
.TP
\fBSTRICT\fR
Field corresponding to the strict option. Y for
yes, N for no.
.TP
\fBSCHEDULE\fR
Next run is scheduled at this time and date. Please note that fcrondyn prints the next execution time and date in the time zone of the system where fcron is running, and not the time zone which can be defined for using option timezone\&.
.TP
\fBCMD\fR
The command that will be executed.
.SH "RETURN VALUES"
.PP
\fBFcrondyn\fR returns 0 on normal exit and 1 on
error.
.SH "CONFORMING TO"
.PP
Should be POSIX compliant.
.SH "FILES"
.TP
\fB\fI/usr/local/etc/fcron.conf\fB\fR
Configuration file for \fBfcron\fR, \fBfcrontab\fR and
\fBfcrondyn\fR: contains paths (spool dir, pid file) and default programs to use
(editor, shell, etc). See \fBfcron.conf\fR(5)
for more details.
.TP
\fB\fI/usr/local/etc/fcron.allow\fB\fR
Users allowed to use \fBfcrontab\fR and \fBfcrondyn\fR (one
name per line, special name "all" acts for everyone)
.TP
\fB\fI/usr/local/etc/fcron.deny\fB\fR
Users who are not allowed to use \fBfcrontab\fR and
\fBfcrondyn\fR (same format as allow file)
.TP
\fB\fI/usr/local/etc/pam.d/fcron\fB (or \fI/usr/local/etc/pam.conf\fB)\fR
PAM configuration file for
\fBfcron\fR\&. Take a look at pam(8) for more details.
.SH "SEE ALSO"
\fBfcrontab\fR(1),
\fBfcrondyn\fR(1),
\fBfcrontab\fR(5),
\fBfcron.conf\fR(5),
\fBfcron\fR(8).
If you're learning how to use fcron from scratch, I suggest
that you read the HTML version of the documentation (if your are not reading it
right now! :) ): the content is the same, but it is easier to navigate thanks
to the hyperlinks.
.SH "AUTHOR"
.PP
Thibault Godouet <fcron@free.fr>

View File

@ -1,178 +0,0 @@
.\" This manpage has been automatically generated by docbook2man
.\" from a DocBook document. This tool can be found at:
.\" <http://shell.ipoline.com/~elmert/comp/docbook2X/>
.\" Please send any bug reports, improvements, comments, patches,
.\" etc. to Steve Cheng <steve@ggi-project.org>.
.TH "FCRONTAB" "1" "06 July 2014" "07/06/2014" ""
.SH NAME
fcrontab \- manipulate per-user fcrontab files
.SH SYNOPSIS
\fBfcrontab\fR [ \fB-c
\fIfile\fB\fR ] [ \fB-n\fR ] \fB\fIfile\fB\fR [ \fB\fIuser\fB\fR | \fB-u
\fIuser\fB\fR ]
\fBfcrontab\fR [ \fB-c
\fIfile\fB\fR ] [ \fB-n\fR ] { \fB-l\fR | \fB-r\fR | \fB-e\fR | \fB-z\fR } [ \fB\fIuser\fB\fR | \fB-u
\fIuser\fB\fR ]
\fBfcrontab\fR [ \fB-h\fR ]
.SH "DESCRIPTION"
.PP
\fBFcrontab\fR is the program intended to
install, edit, list and remove the tables used by \fBfcron\fR(8) daemon. As \fBfcron\fR internally
uses a non-human readable format (this is needed because \fBfcron\fR
saves more informations than the user gives, for example the time
and date of next execution), the user cannot edit directly his
\fBfcrontab\fR (the one used by \fBfcron\fR).
.PP
When a user
installs a \fBfcrontab\fR, the source file is saved in the spool
directory (\fI/usr/local/var/spool/fcron\fR) to allow future
editions, and a formatted file is generated for the \fBfcron\fR daemon,
which is signaled once about ten seconds before the next minute for
all changes made previously. The daemon is not informed of the changes
immediately but at most once a minute
to keep ill disposed users from blocking the daemon by installing
\fBfcrontab\fRs over and over (ie. denial of service attack). We will call
"\fBfcrontab\fR" the source file of the \fBfcrontab\fR
in the following.
.PP
A user can install a \fBfcrontab\fR if
he is listed in the \fI/usr/local/etc/fcron.allow\fR and not
(unless by the keyword all) listed in
\fI/usr/local/etc/fcron.deny\fR (see section "files" below). If neither
\fIfcron.allow\fR nor \fIfcron.deny\fR
exist, all users are allowed. None of these files have to exist, but
if they do, the deny file takes precedence.
.PP
The first
form of the command is used to install a new \fBfcrontab\fR file, from
any named file or from standard input if the pseudo-filename "-" is
given, replacing the previous one (if any): each user can have only
one \fBfcrontab\fR\&.
.PP
For instance, root can create a
systemwide fcrontab file, say \fI/etc/fcrontab\fR,
and run "\fBfcrontab\fR
\fI/etc/fcrontab\fR" to install the new version after
each change of the file. Or (s)he can create a new fcrontab running
a simple "\fBfcrontab\fR", and then maintain it using
"\fBfcrontab\fR \fB-e\fR". Same
considerations apply to a non privileged user.
.SH "OPTIONS"
.TP
\fB-u \fIuser\fB\fR
Specify the user whose \fBfcrontab\fR will be managed, or
"systab" for the system fcrontab. Should only be
used by root. If not given, the \fBfcrontab\fR file of the
user invoking \fBfcrontab\fR will be handled. It may be useful
since the \fBsu\fR(8) command may
confuse \fBfcrontab\fR\&.
.sp
.RS
.B "Note:"
the
\&'\fIuser\fR\&' in the synopsys is equivalent
to a '\fB-u\fR
\fIuser\fR\&'.
.RE
.TP
\fB-l\fR
List user's current \fBfcrontab\fR to standard
output.
.TP
\fB-e\fR
Edit user's current \fBfcrontab\fR using either the editor
specified by the environment variable
\fBVISUAL\fR, or \fBEDITOR\fR if
\fBVISUAL\fR is not set. If none or them are set,
\fB/usr/bin/vi\fR will be used.
.TP
\fB-r\fR
Remove user's \fBfcrontab\fR\&.
.TP
\fB-z\fR
Reinstall user's \fBfcrontab\fR from its source code. All
informations \fBfcron\fR may have kept in the binary
\fBfcrontab\fR (such as the last execution time and date) will
be forgotten (ie. lost).
.TP
\fB-n\fR
Ignore previous version. If this option is not given,
\fBfcron\fR will try to keep as much information as possible
between old and new version of the \fBfcrontab\fR (time and
date of next execution, if job is in serial queue, etc) if
the line hasn't been modified (same fields, same shell
command).
.TP
\fB-c \fIfile\fB\fR
Make \fBfcrontab\fR use config file
\fIfile\fR instead of default config
file \fI/usr/local/etc/fcron.conf\fR\&. To
interact with a running \fBfcron\fR process, \fBfcrontab\fR must
use the same config file as the process. That way, several
\fBfcron\fR processes can run simultaneously on an only
system.
.TP
\fB-d\fR
Run in debug mode. In this mode, many informational
messages will be output in order to check if anything went
wrong.
.TP
\fB-h\fR
Display a brief description of the options.
.TP
\fB-V\fR
Display an informational message about \fBfcrontab\fR,
including its version and the license under which it is
distributed.
.SH "RETURN VALUES"
.PP
\fBFcrontab\fR returns 0 on
normal exit and 1 on error.
.SH "CONFORMING TO"
.PP
Should be POSIX compliant.
.SH "FILES"
.TP
\fB\fI/usr/local/etc/fcron.conf\fB\fR
Configuration file for \fBfcron\fR, \fBfcrontab\fR and
\fBfcrondyn\fR: contains paths (spool dir, pid file) and
default programs to use (editor, shell, etc). See \fBfcron.conf\fR(5) for more
details.
.TP
\fB\fI/usr/local/etc/fcron.allow\fB\fR
Users allowed to use \fBfcrontab\fR and \fBfcrondyn\fR (one name
per line, special name "all" acts for everyone)
.TP
\fB\fI/usr/local/etc/fcron.deny\fB\fR
Users who are not allowed to use \fBfcrontab\fR and
\fBfcrondyn\fR (same format as allow file)
.TP
\fB\fI/usr/local/etc/pam.d/fcron\fB (or \fI/usr/local/etc/pam.conf\fB)\fR
PAM configuration file for
\fBfcron\fR\&. Take a look at pam(8) for more details.
.SH "SEE ALSO"
\fBfcrontab\fR(1),
\fBfcrondyn\fR(1),
\fBfcrontab\fR(5),
\fBfcron.conf\fR(5),
\fBfcron\fR(8).
If you're learning how to use fcron from scratch, I suggest
that you read the HTML version of the documentation (if your are not reading it
right now! :) ): the content is the same, but it is easier to navigate thanks
to the hyperlinks.
.SH "AUTHOR"
.PP
Thibault Godouet <fcron@free.fr>

View File

@ -1,863 +0,0 @@
.\" This manpage has been automatically generated by docbook2man
.\" from a DocBook document. This tool can be found at:
.\" <http://shell.ipoline.com/~elmert/comp/docbook2X/>
.\" Please send any bug reports, improvements, comments, patches,
.\" etc. to Steve Cheng <steve@ggi-project.org>.
.TH "FCRONTAB" "5" "06 July 2014" "07/06/2014" ""
.SH NAME
fcrontab \- tables for driving fcron
.SH "DESCRIPTION"
.PP
A \fBfcrontab\fR is a file containing all tables used by the
\fBfcron\fR(8) daemon. In other words, it is the means for a user to tell the daemon
"execute this command at this moment". Each user has his own \fBfcrontab\fR, whose
commands are executed as his owner (only root can run a job as another using the
option runas (see below)).
.PP
Blank lines, line beginning by a hash sign (#) (which are
considered comments), leading blanks and tabs are ignored. Each line in a
fcrontab file can be either
.TP 0.2i
\(bu
an environment setting,
.TP 0.2i
\(bu
an option setting,
.TP 0.2i
\(bu
entries based on elapsed system up time,
.TP 0.2i
\(bu
entries based on absolute time (like normal crontab
entries), or
.TP 0.2i
\(bu
entries run periodically.
.PP
Any logical line (an entry or an assignment) can be divided into
several real lines (the lines which end by a newline character) by placing a
backslash (\\) before the newline character (\\n).
.SS "THE ENVIRONMENT SETTINGS"
.PP
The environment settings are of the form
.sp
.RS
.PP
name = value
.RE
.PP
where the blanks around equal-sign (=) are ignored and
optional. Trailing blanks are also ignored, but you can place the value in
quotes (simple or double, but matching) to preserve any blanks in the
value.
.PP
When \fBfcron\fR executes a command, it always sets
\fBUSER\fR, and \fBHOME\fR as defined in
\fI/etc/passwd\fR for the owner of the \fBfcrontab\fR from which the
command is extracted. TZ is also defined to the value of the option timezone when this option is used. It also defines \fBSHELL\fR to the value of the SHELL used to run the command. \fBFcron\fR uses the value of \fBSHELL\fR from the fcrontab if any, otherwise it uses the value from \fIfcron.conf\fR if any, or in last resort the value from \fI/etc/passwd\fR\&. \fBHOME\fR and \fBSHELL\fR may be
overridden by settings in the \fBfcrontab\fR, but \fBUSER\fR may not.
Every other environment assignments defined in the user \fBfcrontab\fR are then
made, and the command is executed.
.PP
By default, fcron will send emails using the email "Content-Type:" header of "text/plain" with the "charset=" parameter set to the charmap / codeset of the locale in which \fBfcron\fR(8) is started up - i.e. either the default system locale, if no LC_* environment variables are set, or the locale specified by the LC_* environment variables (see locale(7)). You can use different character encodings for emailed fcron job output by setting the CONTENT_TYPE and CONTENT_TRANSFER_ENCODING variables in fcrontabs, to the correct values of the mail headers of those names.
.PP
Plus, the special variable MAILTO allows
you to tell \fBfcron\fR to whom it has to mail the command's output. Note that
MAILTO is in fact equivalent to a global declaration of the
option mailto (see below). It is only used for backward compatibility, so
you should use the option mailto directly.
.SS "ENTRIES BASED ON ELAPSED SYSTEM UP TIME"
.PP
The entries of commands which have to be run once every m
minutes of \fBfcron\fR\&'s execution (which is normally the same as m minutes of
system's execution) are of the form
.nf
@options frequency command
.fi
.PP
where frequency is a time value of the form
value*multiplier+value*multiplier+...+value-in-minutes as "12h02" or "3w2d5h1".
The first means "12 hours and 2 minutes of fcron execution" while the second
means "3 weeks, 2 days, 5 hours and 1 minute of fcron execution". The only valid
multipliers are:
"VALID TIME MULTIPLIERS"
meaning: multipliers: months (4 weeks): m weeks (7 days): w days (24 hours): d hours (60 minutes): h seconds: s
.PP
In place of \fIoptions\fR, user can put a
time value: it will be interpreted as
@first(\fI<time>\fR)\&. If first option is
not set, the value of "frequency" is used.
.PP
This kind of entry does not guarantee a time and date of
execution (as the job is delayed at each startup by the time elapsed since the
shutdown), but should be useful for jobs depending on the number of things done
by the users (for instance, the filesystem should better be checked after a
certain amount of use by the users rather than every x days, as the system may
run from 1 day to x days during that x days interval).
.PP
The time remaining before next execution is saved every 1800
seconds (to limit damages caused by a crash) and when \fBfcron\fR exits after having
received a SIGTERM signal, i.e. when systems go down. Thus,
this kind of entries is particularly useful for systems that don't run
regularly. The syntax being very simple, it may also useful for tasks which
don't need to be run at a specific time and date.
.PP
\fBSee also\fR: options first, mail, nolog,
serial, lavg, nice, runas (see below).
.PP
.SS "SOME EXAMPLES OF LINES BASED ON ELAPSED SYSTEM UP TIME"
.nf
# Get our mails every 30 minutes
@ 30 getmails -all
# make some security tests every 48 hours of system up time,
# force a mail to be sent to root even if there is no output
@mailto(root),forcemail 2d /etc/security/msec/cron-sh/security.sh
.fi
.SS "ENTRIES BASED ON TIME AND DATE"
.PP
The second type of \fBfcrontab\fR\&'s entries begins by an optional
"&", which can be immediately followed by an optional number defining the
frequency of execution (this is equivalent to option runfreq) or a
declaration of options; it has five time and date fields, and a shell command
:
.nf
&options min hrs day-of-month month day-of-week command
.fi
.PP
Note that the shell command may be preceded by a user name,
which is equivalent to runas(\fI<user>\fR): as
it is only here for backward compatibility you should use option runas (see
below) instead. The frequency is interpreted as: "run this command after x
matches of time and date fields". The time and date fields are:
"TIME AND DATE FIELDS"
field: allowed values: minute: 0-59 hour: 0-23 day of month: 1-31 month: 1-12 (or names, see below) day of week: 0-7 (0 and 7 are both Sunday, or names)
.PP
A field is always filled by either an asterisk (*), which acts
as "first-last" range, a single number or a list.
.PP
List are numbers or range separated with commas (,). For
instance: "2,5,15,23".
.PP
Ranges of number are of the form
"\fI<begin>\fR-\fI<end>\fR",
where "\fIbegin\fR" and "\fIend\fR"
are included. For example, "3-5" specifies the values 3, 4 and 5. You can also
add an optional "/\fInumber\fR" to a range, where the
\fInumber\fR specifies skips of the
\fInumber\fR\&'s value through the range. For example,
"0-23/2" can be used in the hours field to specify command execution every other
hour. Finally, one or several "~\fInumber\fR" can be added
to turn off some specific values in a range. For example, "5-8~6~7" is equivalent to
"5,8". The final form of a field is:
.sp
.RS
.PP
a[-b[/c][~d][~e][...]][,f[-g[/h][~i][~j][...]]][,...]
.RE
.PP
where the letters are integers.
.PP
You can also use an asterisk (*) in a field. It acts for
"first-last". For example, a "*" in the field minute means all
minutes from minute 0 down to minute 59.
.PP
Ranges can be included in a list as a single number. For
instance: "2,5-10/2~6,15,20-25,30".
.PP
Names can also be used for the "month" and "day of week"
fields. To do so, use the first three letters of the particular day or month
(case doesn't matter). Please note that names are used exactly as numbers: you
can use them in a list or a range.
.PP
If a day of month and a day of week are given, the command
will execute only when \fBboth\fR match with the current time and
date unless option dayor is set. For example, with the line
.nf
5 10 31 * 7 echo ''
.fi
echo will only be executed
days which are a Sunday AND a 31th, at 10:05.
.PP
\fBSee also\fR: options dayor, bootrun, runfreq,
mail, nolog, serial, lavg, nice, runas (see
below).
.PP
.SS "SOME EXAMPLES OF ENTRIES BASED ON TIME AND DATE"
.nf
# run mycommand at 12:05, 12:35, 13:05, 13:35,
# 14:05 *and* 14:35 everyday
& 05,35 12-14 * * * mycommand -u me -o file
# get mails every hour past 20, 21, 22, and 24 minutes.
20-24~23 * * * * getmail
# save our work of the day every night at 03:45 with a low priority
# unless we are sunday, mail the output to jim and run that job
# at startup if computer was down at 03:45
&nice(10),mailto(jim),bootrun 45 03 * * *~0 "save --our work"
.fi
.SS "ENTRIES RUN PERIODICALLY"
.PP
The third type of \fBfcrontab\fR\&'s entries begin by a "%",
followed by a keyword from one of 3 different lists, and optional options.
.SS "*LY KEYWORDS"
.PP
Those keywords are:
.PP
\fIhourly \fR, \fIdaily \fR, \fImonthly \fR, \fIweekly \fR
.PP
Those keywords tell \fBfcron\fR to run the command
once from the beginning of the corresponding time interval to the end of that
time interval. A time interval is, for example, the time from Monday 16:20 to Wednesday 01h43.
For instance, the keyword \fIweekly\fR tells \fBfcron\fR
to run a command once between Monday and Sunday each week.
.PP
With this two kind of keywords, user must give the needed time
fields (as defined in "Entries based on time
and date" (see above)) to specify when the command should be run during
each time interval:
.PP
"NEEDED TIME FIELDS FOR EACH KEYWORD"
Keywords: must be followed by the fields: \fI hourly\fR,
\fImidhourly\fR: minutes.\fI daily\fR,
\fImiddaily\fR, \fInightly\fR,
\fIweekly\fR, \fImidweekly\fR: minutes and hours.\fI monthly\fR,
\fImidmonthly\fR: minutes, hours and days.
.SS "MID*LY KEYWORDS"
.PP
They are similar to the "*ly" ones:
.PP
\fImidhourly \fR, \fImiddaily \fR, \fInightly \fR, \fImidmonthly \fR, \fImidweekly \fR
.PP
They work exactly has the "*ly" keywords, except
that the time intervals are defined from middle to middle of the corresponding
"*ly" intervals: \fImidweekly\fR will run a command once from
Thursday to Wednesday. Note that \fInightly\fR is equivalent to
\fImiddaily\fR\&.
.PP
For example:
.PP
.nf
%nightly,mail(no) * 21-23,3-5 echo "a nigthly entry"
.fi
.PP
will run the command once each night either between 21:00 and
23:59, or between 3:00 and 5:59 (it will run as soon as possible. To change
that, use option random) and won't send mail (because option mail
is set to "no").
.PP
\fBSee also\fR: options lavg, noticenotrun, strict,
mail, nolog, serial, nice, runas, random (see
below).
.SS "*S KEYWORDS"
.PP
They are:
.PP
\fImins \fR, \fIhours \fR, \fIdays \fR, \fImons \fR, \fIdow \fR
.PP
Those keywords act differently, as
follows:
.PP
run this command once during EACH time interval specified, ignoring
the fields below the keyword in the time interval definition (a
\fIhours\fR prevents the mins field to be considered as a time
interval, but it will be used to determine when the line should be run during an
interval: see the note below) (\fIdow\fR means "day of
week").
.PP
Such a keyword is followed by 5 time and date fields (the same
fields used for a line based on absolute
time (see above)). Furthermore, there must be some non-matching time and
dates in the lines with that kind of keyword (i.e. the following is not allowed
:
.nf
%hours * 0-23 * * * echo "INCORRECT line!"
.fi
but
.nf
%hours * 0-22 * * * echo "Ok."
.fi
is
allowed).
.sp
.RS
.B "Note:"
.PP
a single number in a field is considered as a time interval:
.nf
%mins 15 2-4 * * * echo
.fi
will run at 2:15, 3:15
AND 4:15 every day.
.PP
But all fields below the keywords are ignored in time
interval definition:
.nf
%hours 15 2-4 * * * echo
.fi
will run only ONCE either at 2:15, 3:15 OR 4:15.
.RE
.PP
\fBSee also\fR: option random (see below).
.SS "VIXIE CRON SHORTCUTS"
.PP
To ensure a good compatibility with Vixie cron, Vixie cron shortcuts are supported. Generally speaking their usage is not recommended as they lack some of the flexibility brought by fcron. Also where the precise time of execution is not critical, the use lines based on elapsed system up time is recommended instead.
.PP
A task using a Vixie cron shortcut is of the form:
.nf
shortcut command
.fi
.PP
Below is a list of available shortcuts with their fcron equivalent:
"VIXIE CRON SHORTCUTS"
shortcut: meaning: fcron equivalent: suggested alternative: @reboot Run once, at startup @runatreboot,runonce(true) @yearly Run once a year 0 0 1 1 * @ 12m @annually (same as @yearly) 0 0 1 1 * @ 12m @monthly Run once a month 0 0 1 * * @ 1m @weekly Run once a week 0 0 * * 0 @ 1w @daily Run once a day 0 0 * * * @ 1d @midnight (same as @daily) 0 0 * * * @hourly Run once an hour 0 * * * * @ 1h
.PP
A few examples:
.nf
# run check_laptop_logs.sh at the first minute of every hour:
@hourly check_laptop_logs.sh
# run check_web_server.sh and check_file_server.sh every day at exactly
# midnight, both at the same time:
@daily check_web_server.sh
@daily check_file_server.sh
# run compress_home_made_app_log_files.sh at exactly midnight
# on the first day of every month:
@monthly compress_home_made_app_log_files.sh
.fi
.PP
However you might want to replace those task definitions by something as:
.nf
# run check_laptop_logs.sh after every hour of system up time:
@ 60 check_laptop_logs.sh
# run check_web_server.sh and check_file_server.sh every night between midnight
# and 3am, one by after the other:
%nightly,serial * 0-3 check_web_server.sh
%nightly,serial * 0-3 check_file_server.sh
# Run compress_home_made_app_log_files.sh once a month, only at night
# when the load is low:
@monthly,lavg(0.5) * 21-23,0-5 * compress_home_made_app_log_files.sh
.fi
.PP
Last, but not least, it should be noted that tasks defined using a Vixie cron shortcut will only have the same behaviour as in Vixie cron if they are not modified by some earlier option definition. That will be the case if you import a Vixie cron crontab into fcron without modification, or if you precede the task definition by a reset, e.g.:
.nf
!serial
@ 10 fcron_task_1
@ 25 fcron_task_2
!reset
@reboot start_unprivileged_user_program
@daily cleanup_tmp.sh
.fi
.PP
In the example above, serial would apply to the last two tasks if we hadn't used reset\&.
.SS "OPTIONS"
.PP
The options can be set either for every line below the
declaration or for an individual line. In the first case, the setting is done on
a whole line immediately after an exclamation mark (!), while it is done after a
"&", a "%" or a "@" depending on the type of scheduling in the second case. Note
that an option declaration in a schedule overrides the global declaration of
that same option.
.PP
Options are separated by commas (,) and their arguments, if
any, are placed in parentheses ("(" and ")") and separated by commas. No space
or surrounding (double-)quote is allowed. A declaration of options is of the form
.sp
.RS
.PP
\fIoption\fR[(\fIarg1\fR[,\fIarg2\fR][...])][,\fIoption\fR[(\fIarg1\fR[...])]][...]
.RE
.PP
where option is either the name of an option or its
abbreviation. The options are (default value in parentheses):
"VALID OPTIONS IN A FCRONTAB"
.TP
\fBbootrun\fR
.TP
\fBb\fR
\fBboolean\fR(false)
Run an &-line at \fBfcron\fR\&'s startup if it should
have run during system down time.
.TP
\fBdayand\fR
\fBboolean\fR(true)
Perform a logic AND between week and month
day.
\fBSee also\fR: options dayor\&.
.TP
\fBdayor\fR
\fBboolean\fR(false)
Perform a logic OR between week and month
day.
\fBSee also\fR: options dayand\&.
.TP
\fBerroronlymail\fR
\fBboolean\fR(false)
Mail output only if job exited with a non-zero status.
\fBSee also\fR: options mail, mailto,
forcemail, nolog\&.
.TP
\fBexesev\fR
\fBboolean\fR(false)
Can a job be executed several times simultaneously
?
\fBSee also\fR: options serialonce,
lavgonce\&.
.TP
\fBfirst\fR
.TP
\fBf\fR
\fBtime-value\fR
Delay before first execution of a job based on
system up time ("@"-lines). Useful in the following case: you have several jobs
running, say, every hour. By setting different first value for each job, you can
avoid them to run simultaneously everytime. You can also set it to 0, which is
useful when used in conjunction with option volatile\&.
.TP
\fBforcemail\fR
\fBboolean\fR(false)
Mail output even if zero-length.
Setting this option to true will also set mail to true.
\fBSee also\fR: options mail, mailto,
erroronlymail, nolog\&.
.TP
\fBjitter\fR
\fBinteger\fR(0)
Run the task between 0 and jitter seconds later than it should have been run. This options only applies to &-lines and is intended for systems where many jobs are supposed to be started at the same minute: the jitter option will randomly spread the start of all those jobs across the first jitter seconds of the minute instead of starting all of them at the first second of the minute. The argument must be between 0 and 255 (inclusive).
\fBSee also\fR: option random\&.
.TP
\fBlavg\fR
\fBreal\fR(0)
\fBreal\fR(0)
\fBreal\fR(0)
Set the values of the 1, 5 and 15-minute (in this
order) system load average values below which the job should run. The values
have a maximum of 1 decimal (i.e. "2.3"): if there are more than 1 decimal,
the value will be round off. Set a value to 0 to ignore the corresponding
load average (or all of the values to run the job regardless of the load
average).
\fBSee also\fR: options lavg1, lavg5,
lavg15, until, lavgonce, lavgor, lavgand, strict,
noticenotrun\&.
.TP
\fBlavg1\fR
.TP
\fBlavg5\fR
.TP
\fBlavg15\fR
\fBreal\fR(0)
Set the threshold of, respectively, the 1, 5 or 15
minutes system load average value. Set one of them to 0 to ignore the
corresponding load average.
\fBSee also\fR: options lavg\&.
.TP
\fBlavgand\fR
\fBboolean\fR(true)
Perform a logic AND between the 1, 5 and 15
minutes system load average values.
\fBSee also\fR: options lavg, lavgor\&.
.TP
\fBlavgonce\fR
\fBboolean\fR(1)
Can a job be queued several times in lavg queue
simultaneously?
\fBSee also\fR: options lavg\&.
.TP
\fBlavgor\fR
\fBboolean\fR(false)
Perform a logic OR between the 1, 5 and 15 minutes
system load average values.
\fBSee also\fR: options lavg, lavgand\&.
.TP
\fBmail\fR
.TP
\fBm\fR
\fBboolean\fR(true)
Mail output (if any) or not.
Setting this option to false will also set forcemail to false.
\fBSee also\fR: options mailto, forcemail,
erroronlymail, nolog\&.
.TP
\fBmailto\fR
\fBemail-address\fR(name
of file's owner)
Mail output (if needed) to
"\fIemail-address\fR". It can be either a single user-name
or a fully qualified email address. A mailto declared and empty (string
"") is equivalent to "mail(false)".
\fBSee also\fR: options mail, forcemail,
erroronlymail, nolog\&.
.TP
\fBnice\fR
.TP
\fBn\fR
\fBnice-value\fR
Change job priority. A
\fBnice-value\fR is an integer from -20 (highest
priority) to 19 (lowest) (only root is allowed to use a negative value with this
option).
.TP
\fBnolog\fR
\fBboolean\fR(false)
If set to true, log only errors for the
corresponding job(s). May be useful for jobs running very often, and/or to
reduce disk access on a laptop.
\fBSee also\fR: options mail, mailto,
erroronlymail, forcemail\&.
.TP
\fBnoticenotrun\fR
\fBboolean\fR(false)
Should \fBfcron\fR mail user to report the
non-execution of a %-job or an &-job? (because of system down state for both or
a too high system load average for the latter)
\fBSee also\fR: options lavg, strict\&.
.TP
\fBrandom\fR
\fBboolean\fR(false)
In a line run
periodically, this option answers the question: should this job be run
as soon as possible in its time interval of execution (safer), or should fcron set a
random time of execution in that time interval? Note that if this option is set, the
job may not run if fcron is not running during the \fBwhole\fR
execution interval. Besides, you must know that the random scheme may be quite
easy to guess for skilled people: thus, you shouldn't rely on this option
to make important things secure. However, it shouldn't be a problem
for most uses.
\fBSee also\fR: option jitter\&.
.TP
\fBrebootreset\fR
\fBboolean\fR(false)
When set to true, fcron will act as if the task was
a new one every time the OS reboots. This is very similar to the option volatile
but based on the OS reboots instead of fcron restarts.
You may also want to use option first if you use fcron that way.
\fBSee also\fR: options first, volatile, runonce, runatreboot\&.
.TP
\fBreset\fR
\fBboolean\fR
Reset all the options to default.
.TP
\fBrunas\fR
\fBuser-name\fR
Run with "\fIuser-name\fR"
permissions and environment (only root is allowed to use this option).
.TP
\fBrunatreboot\fR
\fBboolean\fR(false)
If set to true, the task will be run at system startup (i.e. immediately after the --sleeptime delay -- by default, 20 seconds -- when the \fBfcron\fR daemon starts the first time after the OS has booted). This is in addition to the regular schedule which won't be modified by this option.
For instance, if a program should be started automatically and run from 7am to 6pm, you could use the following dfcrontab definitions:
.nf
&runatreboot 0 6 * * 1-5 start_my_program.sh
& 0 7 * * 1-5 stop_my_program.sh
.fi
\fBSee also\fR: options volatile, runonce, rebootreset\&.
.TP
\fBrunfreq\fR
.TP
\fBr\fR
\fBinteger\fR
Run every "\fIrunfreq\fR"
matches of time and date. (this option is ignored for lines based on elapsed system up time).
.TP
\fBrunonce\fR
\fBboolean\fR(false)
Do not re-schedule the task after it has run once, until the next OS reboot (if volatile is not set) or until the next \fBfcron\fR daemon restart (if volatile is set).
\fBSee also\fR: options volatile, rebootreset, runatreboot\&.
.TP
\fBserial\fR
.TP
\fBs\fR
\fBboolean\fR(false)
\fBFcron\fR runs at most 1 serial
jobs (ie. for which the option serial is set to true), and the same number of lavg serial jobs (ie. for which both option serial and lavg (or lavg1 or lavg5 or lavg15) are set to true) simultaneously. This value may be modified by \fBfcron\fR\&'s option \fB-m\fR\&. This option is especially useful when used with big jobs in order to limit the system overload.
\fBSee also\fR: options serialonce,
lavg\&.
.TP
\fBserialonce\fR
\fBboolean\fR(0)
Can a job be queued several times in serial queue
simultaneously?
\fBSee also\fR: options exesev,
lavgonce\&.
.TP
\fBstdout\fR
\fBboolean\fR(false)
If fcron is running in the foreground, then also
let jobs print to stderr/stdout instead of mailing or discarding it.
\fBSee also\fR: fcron's option --once
in \fBfcron\fR(8)\&.
.TP
\fBstrict\fR
\fBboolean\fR(true)
When a lavg %-job is at the end of a time interval of
execution, should it be removed from the lavg queue (strict(true), so the job is
not run) or be let there until the system load average allows its execution
(strict(false))?
\fBSee also\fR: options lavg,
noticenotrun\&.
.TP
\fBtimezone\fR
\fBtimezone-name\fR(time zone of the system)
Run the job in the given time zone. timezone-name is a string which is valid for the environment variable TZ: see the documentation of your system for more details. For instance, "Europe/Paris" is valid on a Linux system. This option handles daylight saving time changes correctly. The TZ environment variable is set to the value of timezone when a job defining this option is run.
Please note that if you give an erroneous timezone-name argument, it will be SILENTLY ignored, and the job will run in the time zone of the system.
WARNING: do *not* use option timezone and option tzdiff simultaneously! There is no need to do so, and timezone is cleverer than tzdiff.
\fBSee also\fR: options tzdiff\&.
.TP
\fBtzdiff\fR
\fBinteger\fR(0)
WARNING: this option is deprecated: use option timezone instead!
Time zone difference (in hours, between -24 and
24) between the system time, and the local real time. This option allows a user
to define its & and %-lines in the local time. Note that this value is set for a
whole fcrontab file, and only the last definition is taken into account. tzdiff is quite stupid: it doesn't handle daylight saving changes, while option timezone does, so you should use the latter.
\fBSee also\fR: options timezone\&.
.TP
\fBuntil\fR
\fBtime-value\fR(0)
Set the timeout of the waiting of the wanted
system load average values. If the timeout is exceeded, the job runs no matter
the load average. Set until to 0 to remove the timeout.
\fBSee also\fR: options lavg\&.
.TP
\fBvolatile\fR
\fBboolean\fR(false)
When set to true, the job is based on a "volatile"
system up time, i.e. restart counting each time \fBfcron\fR is started, which is
useful when \fBfcron\fR is started by a script running only, for instance, during a
dialup connection: the "volatile" system up time then refers to the dialup
connection time. You may also want to use option first if you use fcron
that way.
\fBSee also\fR: options first, stdout, rebootreset,
lines based on elapsed system up time, fcron's command line argument
--once in \fBfcron\fR(8)\&.
.PP
A \fBboolean\fR argument can be non-existent, in which
case parentheses are not used and it means true; the string
"true", "yes" or 1 to mean true; and the string "false",
"no" or 0 to mean false\&. See above for explanations about
time value (section "entries based on elapsed system up
time").
.PP
Note that dayand and
dayor are in fact the same option: a false value to
dayand is equivalent to a true to dayor,
and reciprocally a false value to dayor is equivalent a true
value to dayand\&. It is the same for
lavgand and lavgor\&.
.PP
Note a special case to be handled: A job should be entered
into the serial queue, *but* the previous entry for this job has not been
completed yet, because of high system load or some external event. Option
serialonce answers the question: should the new entry of the
job be ignored? This way one can distinguish between jobs required to run a
certain number of times, preferably at specified times, and tasks to be
performed irrespective of their number (-> serialonce(true)), which make the
system respond faster.
.PP
The same considerations apply for the load average queue, and
can be expressed with option lavgonce\&.
.PP
Moreover, if the serial or the lavg queue contains
respectively more than 30 and 30 jobs, any new job is
refused and not run to avoid an overwhelming of system resources. In this case,
an error message is logged through syslog.
.PP
Finally, if jobs remain in the lavg or serial queues when
fcron stops, they will be put once in the corresponding queue on startup (their
order may not be conserved).
.PP
.SS "AN EXAMPLE OF AN OPTION DECLARATION:"
.nf
!reset,serial(true),dayor,bootrun(0),mailto(root),lavg(.5,2,1.5)
.fi
.SH "EXAMPLES"
.PP
.SS "AN EXAMPLE OF A USER FCRONTAB"
.nf
# use /bin/bash to run commands, ignoring what /etc/passwd says
SHELL=/bin/bash
# mail output to thib, no matter whose fcrontab this is
!mailto(thib)
# define a variable which is equivalent to " Hello thib and paul! "
# here the newline characters are escaped by a backslash (\\)
# and quotes are used to force to keep leading and trailing blanks
TEXT= " Hello\\
thib and\\
paul! "
# we want to use serial but not bootrun:
!serial(true),b(0)
# run after five minutes of execution the first time,
# then run every hour
@first(5) 1h echo "Run every hour"
# run every day
@ 1d echo "fcron daily"
# run once between in the morning and once in the afternoon
# if systems is running at any moment of these time intervals
%hours * 8-12,14-18 * * * echo "Hey boss, I'm working today!"
# run once a week during our lunch
%weekly * 12-13 echo "I left my system on at least once \\
at lunch time this week."
# run every Sunday and Saturday at 9:05
5 9 * * sat,sun echo "Good morning Thibault!"
# run every even days of march at 18:00, except on 16th
0 18 2-30/2~16 Mar * echo "It's time to go back home!"
# the line above is equivalent to
& 0 18 2-30/2~16 Mar * echo "It's time to go back home!"
# reset options to default and set runfreq for lines below
!reset,runfreq(7)
# run once every 7 matches (thanks to the declaration above),
# so if system is running every day at 10:00, this will be
# run once a week
& 0 10 * * * echo "if you got this message last time 7 days ago,\\
this computer has been running every day at 10:00 last week.\\
If you got the message 8 days ago, then the system has been down \\
one day at 10:00 since you got it, etc"
# wait every hour for a 5 minutes load average under 0.9
@lavg5(0.9) 1h echo "The system load average is low"
# wait a maximum of 5 hours every day for a fall of the load average
@lavgand,lavg(1,2.0,3.0),until(5h) 1d echo "Load average is going down"
# wait for the best moment to run a heavy job
@lavgor,lavg(0.8,1.2,1.5),nice(10) 1w echo "This is a heavy job"
# run once every night between either 21:00 and 23:00 or
# between 3:00 and 6:00
%nightly,lavg(1.5,2,2) * 21-23,3-6 echo "It's time to retrieve \\
the latest release of Mozilla!"
.fi
.SH "FILES"
.TP
\fB\fI/usr/local/etc/fcron.conf\fB\fR
Configuration file for \fBfcron\fR, \fBfcrontab\fR and
\fBfcrondyn\fR: contains paths (spool dir, pid file) and default programs to use
(editor, shell, etc). See \fBfcron.conf\fR(5) for
more details.
.TP
\fB\fI/usr/local/etc/fcron.allow\fB\fR
Users allowed to use \fBfcrontab\fR and \fBfcrondyn\fR (one
name per line, special name "all" acts for everyone)
.TP
\fB\fI/usr/local/etc/fcron.deny\fB\fR
Users who are not allowed to use \fBfcrontab\fR and
\fBfcrondyn\fR (same format as allow file)
.TP
\fB\fI/usr/local/etc/pam.d/fcron\fB (or \fI/usr/local/etc/pam.conf\fB)\fR
PAM configuration file for
\fBfcron\fR\&. Take a look at pam(8) for more details.
.SH "SEE ALSO"
\fBfcrontab\fR(1),
\fBfcrondyn\fR(1),
\fBfcrontab\fR(5),
\fBfcron.conf\fR(5),
\fBfcron\fR(8).
If you're learning how to use fcron from scratch, I suggest
that you read the HTML version of the documentation (if your are not reading it
right now! :) ): the content is the same, but it is easier to navigate thanks
to the hyperlinks.
.SH "AUTHOR"
.PP
Thibault Godouet <fcron@free.fr>

View File

@ -1,37 +0,0 @@
<!--
Fcron documentation
Copyright 2000-2014 Thibault Godouet <fcron@free.fr>
Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License,
Version 1.1 or any later version published by the Free Software
Foundation.
A copy of the license is included in gfdl.sgml.
-->
<refsect1>
<title>See also</title>
<simplelist>
<member><link linkend="fcrontab.1">&fcrontab;(1),</link></member>
<member><link linkend="fcrondyn.1">&fcrondyn;(1),</link></member>
<member><link linkend="fcrontab.5">&fcrontab;(5),</link></member>
<member><link linkend="fcron.conf.5">&fcron.conf;(5),</link></member>
<member><link linkend="fcron.8">&fcron;(8).</link></member>
<member>If you're learning how to use fcron from scratch, I suggest
that you read the HTML version of the documentation (if your are not reading it
right now! :) ): the content is the same, but it is easier to navigate thanks
to the hyperlinks.</member>
</simplelist>
</refsect1>
<refsect1>
<title>Author</title>
<para>Thibault Godouet &email;</para>
</refsect1>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-parent-document:("fcron-doc.sgml" "book" "chapter" "sect1" "refentry" "")
End:
-->

View File

@ -1,152 +0,0 @@
<!--
Fcron documentation
Copyright 2000-2014 Thibault Godouet <fcron@free.fr>
Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License,
Version 1.1 or any later version published by the Free Software
Foundation.
A copy of the license is included in gfdl.sgml.
-->
<sect1 id="readme">
<title>About fcron</title>
<sect2>
<title>What is fcron?</title>
<para>&Fcron; is a scheduler. It aims at replacing <application>Vixie
Cron</application>, so it implements most of its functionalities.</para>
<para>But contrary to <application>Vixie Cron</application>, &fcron;
does not need your system to be up 7 days a week, 24 hours a day: it also works
well with systems which are not running neither all the time nor regularly
(contrary to <application>anacrontab</application>).</para>
<para>In other words, &fcron; does both the job of <application>Vixie
Cron</application> and <application>anacron</application>, but does even more
and better :)) ...</para>
<para>To do so, &fcron; allows you to use the standard mode in which you
tell it to execute one command at a given date and hour and to make it run a
command according to its time of execution, which is normally the same as system
up time. For example:
<blockquote>
<para>Run the task 'save /home/ directory' every 3h15 of system
up time.</para>
</blockquote> and, of course, in order to make it really useful, the
time remaining until next execution is saved each time the system is stopped.
You can also say:
<blockquote>
<para>run that command once between 2am and 5am</para>
</blockquote> which will be done if the system is running at any
time in this interval.</para>
<para>&Fcron; also includes a useful system of options, which can be
applied either to every lines following the declaration or to a single line.
Some of the supported options permit to:
<itemizedlist>
<listitem><para>run jobs one by one (fcrontab option
&optserial;),</para></listitem>
<listitem><para>set the max system load average value under
which the job should be run (fcrontab option &optlavg;),</para></listitem>
<listitem><para>set a nice value for a job (fcrontab option
&optnice;),</para></listitem>
<listitem><para>run jobs at &fcron;'s startup if they should
have been run during system down time (fcrontab option
&optbootrun;),</para></listitem>
<listitem><para>mail user to tell him a job has not run and why
(fcrontab option &optnoticenotrun;),</para></listitem>
<listitem><para>a better management of the mailing of outputs
...</para></listitem>
</itemizedlist>
</para>
</sect2>
<sect2>
<title>License</title>
<para>&Fcron; is distributed under GPL license (please read the license
in the <link linkend="gpl">gpl</link> file).</para>
</sect2>
<sect2>
<title>Requirements</title>
<itemizedlist>
<listitem>
<para>a <productname>Linux/Unix system</productname></para>
<para>&Fcron; should work on every
<productname>POSIX</productname> system, but it has been developed on
<productname>Mandrake</productname> Linux (so it should work without any
problems on <productname>Redhat</productname>).</para>
<para>Fcron has been reported to work correctly on:
</para>
<itemizedlist>
<listitem><para><productname>Linux Mandrake</productname>
</para></listitem>
<listitem><para><productname>Linux Debian 3.0</productname>
</para></listitem>
<listitem><para><productname>LFS</productname></para>
<para>(take a look at the <ulink
url="http://www.linuxfromscratch.org/blfs/">Beyond
LFS book</ulink> to find the installation
informations).</para>
</listitem>
<listitem><para><productname>FreeBSD 4.2</productname>
</para></listitem>
<listitem><para><productname>OpenBSD 2.8</productname>
</para></listitem>
<listitem><para><productname>NetBSD 2.0</productname>
</para></listitem>
<listitem>
<para><productname>Darwin/MacOS-X</productname></para>
</listitem>
<listitem><para><productname>Solaris 8</productname>
</para></listitem>
<listitem><para><productname>AIX 4.3.3</productname>
</para></listitem>
<listitem><para><productname>HP-UX 11.11</productname>
</para></listitem>
</itemizedlist>
<para>but fcron should work on other OS as well. Yet,
if you have troubles
making it work on a <productname>POSIX</productname> system, please
contact me at &email;.</para>
</listitem>
<listitem><para>a running <application>syslog</application> (or you
won't have any log)</para></listitem>
<listitem><para>a running mail system (
<application>sendmail</application> or <application>postfix</application> for
example) (or users will not able to read their jobs output)
</para></listitem>
<listitem><para>(optional) a <productname>PAM</productname>
library.</para></listitem>
<listitem><para>(optional) a system with a working <productname>SE Linux</productname> environment.</para></listitem>
</itemizedlist>
</sect2>
<sect2>
<title>Compilation and installation</title>
<para>See the <link linkend="install">install</link> file (either install.txt
or install.html).</para>
</sect2>
<sect2>
<title>Configuration</title>
<para>See the <link linkend="fcron.8">&fcron;(8)</link>, <link
linkend="fcrontab.5">&fcrontab;(5)</link> and <link
linkend="fcrontab.1">&fcrontab;(1)</link> manpages.</para>
</sect2>
<sect2>
<title>Bug reports, corrections, propositions...</title>
<para>Please send me the description of any bug you happen to encounter
(with, even better, the corresponding patch -:) and any propositions,
congratulations or flames at &email;</para>
<para>Please contact Russell Coker directly for problems about SE Linux support at &selinuxemail;, since he maintains this part of the code.</para>
</sect2>
</sect1>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-parent-document:("fcron-doc.sgml" "book" "chapter" "sect1" "")
End:
-->

View File

@ -1,27 +0,0 @@
<!--
Fcron documentation
Copyright 2000-2014 Thibault Godouet <fcron@free.fr>
Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License,
Version 1.1 or any later version published by the Free Software
Foundation.
A copy of the license is included in gfdl.sgml.
-->
<sect1 id="relnotes">
<title>Release notes: &fcron; &version;</title>
<itemizedlist>
<listitem>
<para>Nothing special to be aware of in this release.</para>
</listitem>
</itemizedlist>
</sect1>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-parent-document:("fcron-doc.sgml" "book" "chapter" "sect1" "")
End:
-->

View File

@ -1,93 +0,0 @@
<!--
Fcron documentation
Copyright 2000-2014 Thibault Godouet <fcron@free.fr>
Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License,
Version 1.1 or any later version published by the Free Software
Foundation.
A copy of the license is included in gfdl.sgml.
-->
<sect1 id="thanks">
<title>Thanks</title>
<variablelist>
<varlistentry>
<term>Uwe Ohse <email>uwe@ohse.de</email></term>
<listitem>
<para>Corrected a bug concerning the signals, has reported
security issues.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>Max Heijndijk <email>cchq@wanadoo.nl</email></term>
<listitem>
<para>Has made the rpm packages.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>Gabor Z. Papp <email>gzp@papp.hu</email></term>
<listitem>
<para>Helped to correct some bugs in installation process and
reported various bugs.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>Clemens Fischer <email>rabat@web.de</email></term>
<listitem>
<para>Proofread docs, reported bugs, and made some
propositions.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>Henrique de Moraes Holschuh
<email>hmh@debian.org</email></term>
<listitem>
<para>Has worked on fcron's integration in Linux Debian system,
reported bugs and corrected some of them, made some propositions.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>Thomas Whateley <email>thomas@whateley.net</email></term>
<listitem>
<para>Has done a big part of Solaris port, implemented the
fcron.conf file, and Vixie crontab format support.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>Guy Geens <email>ggeens@iname.com</email></term>
<listitem>
<para>Fixed a nasty bug in goto_non_matching() which caused an
endless loop (midmonthly jobs executed after the 15th of the month).</para>
</listitem>
</varlistentry>
<varlistentry>
<term>Patrick Ohly <email>Patrick.Ohly@gmx.de</email></term>
<listitem>
<para>Added fcron's option -y, -o and -l, and fcrontab's stdout
and volatile, in order to run fcron from time to time in foreground, for
instance in a ppp-up script.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>Russell Coker <email>russell@coker.com.au</email></term>
<listitem>
<para>Helped me to secure fcron, make code clearer,
and he wrote the patch for SE Linux support.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>Alain Portal</term>
<listitem>
<para>Initial French translation of the manual pages.</para>
</listitem>
</varlistentry>
</variablelist>
</sect1>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-parent-document:("fcron-doc.sgml" "book" "chapter" "sect1" "")
End:
-->

View File

@ -1,134 +0,0 @@
<!--
Fcron documentation
Copyright 2000-2014 Thibault Godouet <fcron@free.fr>
Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License,
Version 1.1 or any later version published by the Free Software
Foundation.
A copy of the license is included in gfdl.sgml.
-->
<sect1 id="todo">
<title>Todo</title>
<para>Here are some things that should be done ... Note that some of these
entries are just some ideas, which <emphasis>may</emphasis> be done in
the long run.</para>
<para>If you see something you'd really like to see implemented here, feel
free to send me a mail: it may make me move it to the top of my to-do list ;) .
</para>
<para>If you plan to help me, please send a mail at &email; to prevent two
people from doing the same thing. You can send me some propositions as
well, or ask me to move something to the top of the heap ;) .</para>
<sect2>
<title>High priority</title>
<itemizedlist>
<listitem>
<para>Option to compile and install from git sources without generating the doc</para>
</listitem>
<listitem>
<para>register in OS suspend/hibernate mechanism to stop fcron when going to sleep and start it again when resuming from sleep (see FAQ entry).</para>
</listitem>
<listitem>
<para></para>
</listitem>
</itemizedlist>
</sect2>
<sect2>
<title>Low priority</title>
<itemizedlist>
<listitem>
<para>Add unit tests using some unit-test framework (turn the tests/* code into unit tests)</para>
</listitem>
<listitem>
<para>For environment settings, make a var substitution.</para>
</listitem>
<listitem>
<para>add a mailsubject option, for custom mail subjects (for instance, in case of a job containing something secret -- password, etc -- in the command line).</para>
</listitem>
<listitem>
<para>Use directory notifications (FAM) / inotify, and support a fcrontab
and a cron.d as Vixie cron does (directly included in fcron itself, not thanks to a script as now).
However the parsing work is done by fcrontab, and should probably keep on being done by fcrontab for
security and stability reasons: have fcron call fcrontab to do that job?</para>
</listitem>
<listitem>
<para>could be worth checking fcron for memory leaks using specialized library (just in case...)</para>
</listitem>
<listitem>
<para>option to put a maximum limit on the execution time of a task + terminate it if not finished yet + send email to let the user know</para>
</listitem>
<listitem>
<para>setting to limit the number of jobs of a single user in the serialq/lavgq to X jobs + make sure root always has Y slots that it can use in those queues (i.e. number of slots used by root + number of free slots >= Y)</para>
</listitem>
<listitem>
<para>Test (and use ?) docbook2x-man -- xlstproc ? cf http://antoine.ginies.free.fr/docbook/ch09.html</para>
</listitem>
<listitem>
<para>find way to have the non translated pages of the French translation be updated automatically (changes, todo, etc -> copied from the English doc)</para>
</listitem>
<listitem>
<para>add a return code for jobs which would mean that they
should not be run again (in case of an error, etc...).</para>
</listitem>
<listitem>
<para>PAM support (included in fcron, but needs more tests by
people using PAM - not implemented in fcrondyn: is it needed
in fcrondyn anyway?)</para>
</listitem>
<listitem>
<para>support for per user serial queue (especially for root)</para>
</listitem>
</itemizedlist>
</sect2>
<sect2>
<title>Ideas</title>
<itemizedlist>
<listitem>
<para>add a system of modules: at startup, fcron loads some
modules (.so files). Then, when fcron should run the job, it
calls a function of the module, and let it manage the job
(threads?). (do linux dlopen(), etc exist on other systems?
- yes: thanks Harring ;) dlopen exists on all POSIX system -
even windoze - abait it does not use the same insterface of
function calls. But it can be easily implemented to port to
another system.).</para>
</listitem>
<listitem>
<para>(related to the system of modules? create a kind of
dependencies?) Add a way to run a job only if a command
returns true. It would permit, for instance, to run some jobs
on a laptop only if it is on AC power.</para>
<para>and depending on the return value of the command, cancel
the execution, or wait x seconds before trying again, etc.
In this case, needs change the way the jobs are queued?</para>
</listitem>
<listitem>
<para>add an option/module to prevent fcron from running a job if the
system is running on battery (anacron does it?)</para>
</listitem>
<listitem>
<para>Add a way to stop a job (SIGSTOP) if the lavg gets to high,
and restart it (SIGCONT) when the lavg has decreased.</para>
</listitem>
<listitem>
<para>Add a timeout for task completion: if a task takes more
than a specified timeout, then start another script with the
initial task PID as argument. That would allow a kill with
different signals (-HUP, -TERM -STOP, .... or any other action
like sending a mail to sysadmin to alert him/her that a task
is taking too much time and that he has to have a look at it.)
(add an option to specify the cmd, and combine w/ option until)
</para>
</listitem>
</itemizedlist>
</sect2>
</sect1>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-parent-document:("fcron-doc.sgml" "book" "chapter" "sect1" "")
End:
-->

View File

@ -1,730 +0,0 @@
#Fcron documentation Fcron: how and why? How to install fcron Release
notes: fcron 3.2.0
Copyright © 2000-2014 Thibault Godouet Fcron 3.2.0 Web page :
http://fcron.free.fr
_______________________________________________________________________
Fcron documentation
Prev Chapter 1. Fcron: how and why? Next
_______________________________________________________________________
1.3. Changes
From version 3.1.3 to 3.2.0
* Print date as %Y-%m-%d (the ISO 8601 date format), to avoid being
ambiguous in international context. Also always use the ':' as
hour:minute separator (there was a couple of 'h' instead).
* Don't fully disable a @-line when something goes wrong (e.g. fcron
didn't shut down cleanly). The idea was to prevent infinite loops,
but this was overkill. Instead set its next execution to
now+frequency.`
* Cosmetic changes in the log lines (quote the job shell commands)
and fcrondyn (use the pipe char "|" as a column separator).
* Fixed file descriptor leak when executing jobs in case of NSS
failures (thanks Pavel Stano).
From version 3.1.2 to 3.1.3
* Fixed compilation on Solaris 10, and fixed fcrondyn authentication
without a password on that platform.
* Fixed bug where LONG_MAX could potentially be used in functions
like localtime(), which is too big for localtime(). This was
unlikely to happen unless there was another problem in the first
place.
* fcrondyn -x no longer adds null characters at the end of the
output. This would cause problems if the output was piped to
something as grep. Thanks Dimitri Semitsoglou-Tsiapos for pointing
this out.
* Fixed minor bug in fcronsighup resulting in log errors about
closing the signal file
* fcrondyn no longer crashes when receiving an EOF when using
readline (thanks Wade Carpenter for the patch)
* fcrontab no longer crash if mailto is empty (thanks Olaf for
reporting the issue)
* Fixed SELinux issue with Linux user being used instead of the
SELinux user (thanks Sven Vermeulen for the patch)
From version 3.1.1 to 3.1.2
* bug fix: fixed fcron crash bug when using fcrondyn
* bug fix: the configure option --without-sendmail was not working
correctly.
* bug fix: inline runas wouldn't work with Vixie-cron style shortcut
lines.
* bug fix: fixed bug in the code to log to a file.
* systemd: fixed the installation on systems using systemd, and also
don't kill jobs when killing fcron.
* Made file closures more robust to prevent bugs difficult to
troubleshoot to creep in.
From version 3.1.0 to 3.1.1
* Added readline support for fcrondyn
* tweaked 'make indent' options and applied
* Fcron can now log to a file (without syslog) - thanks Matthew
Signorini.
* fixed fcrontab edition of *ly lines (hourly, daily, etc)
* fixed fcron crashes when noticenotrun was triggered
From version 3.0.6 to 3.1.0
* Vixie cron compatibility: added options @reboot, @daily, @hourly,
etc. Also added more generic options runatreboot, rebootreset and
runonce.
* Pass fcrondyn client credentials through the socket when possible
so as the user doesn't need to type his password when using
fcrondyn.
* added audit (libaudit) support
* Better validation of string arguments of fcrontab options. In
particular for timezones, previously a space could be added at the
beginning or the end of the timezone with no warning, and this led
fcron to use an unexpected timezone, which could cause confusion.
* Allow tasks to run every seconds
* don't inherit fcron's environment when running a job but build the
environment from scratch (cleaner, and this is what Vixie cron
does)
* fcron now sets the email headers X-Cron-Env and Auto-Submitted (as
described in RFC 3834).
* email encoding: fcron now sets the email headers Content-Type and
Content-Transfer-Encoding. They can be controlled by setting the
CONTENT_TYPE and CONTENT_TRANSFER_ENCODING variables in fcrontabs.
* Added systemd service definition (thank you Reiner)
* Allow Makefile parallelism (e.g. make -j 4)
* bug fix: fcrontab: don't alert about invalid character when
correcting fcrontab twice
* bug fix: fixed free_safe() function (replaced by macro).
* bug fix: configure script: usage of sendmail couldn't be disabled
* bug fix: fixed a potential (unlikely) 1 byte overflow in strncat()
in socket.c
* Quite a lot of code clean-up and refactoring -- e.g. implemented
generic unordred list for lavgq / exeq.
From version 3.0.5 to 3.0.6
* Fixed bug preventing normal user from running fcrontab -l if
fcron's uid!=gid
* Fixed fcrontab's PAM initialization when working on the systab
user.
* Added check_system_crontabs.sh which is to replace the less
portable check_system_crontabs.bash.
* Added option -c to check_system_crontabs.sh to specify a fcron.conf
file to use
* Fixed Makefile bug preventing installation when building from a
different folder than the sources (wrong fcron.conf path)
From version 3.0.4 to 3.0.5
* Security issue: fixed security issue that allowed malicious user to
read any file readable by group 'fcron' (in particular fcron's
config files and the fcrontabs of non-root users). On systems
without seteuid() (i.e. quite exotic systems) then the bug is
harder to exploit but any file could be read.
* Improved general security of fcrontab and fcrondyn by dropping more
privileges.
* Work on portability (aix, hpux, irix, tru64 unix, solaris). Thanks
Peter O'Gorman for his patch!
* Patched startup script to make it more compliant to the LSB.
* Increased maximum number of fcrontab entries from 256 to 1024.
* bug fix: if fcron could not fork() to run a job, then the job would
still appear to be running until fcron is restarted (thanks
Alexander Y. Fomichev for noticing this bug).
* bug fix: fcrontab used to accept MAXENTRIES+1 fcrontab entries
* chdir to /tmp before executing the editor (as some editor needs to
be able to read information on the current folder).
From version 3.0.3 to 3.0.4
* Initialize the random number generator with some values specific to
the machine so as two fcron started exactly at the same time on two
different machines run their random jobs at different time. This is
useful for clusters for instance.
* Added option erroronlymail so as the output of a job is emailed
only when the job exited with a non-zero status.
* Bug fix: in certain conditions, jobs could be executed outside
their interval of execution when using option random on %-lines.
* Fixed bug which prevented the pid of the job to be written to the
(grand-)parent process. This was not a major issue but would
prevent fcrondyn from working well with the concerned jobs. This
bug was caused by a close() function applied twice on a file
descriptor, which would trigger the bug in some rare occasions
(only one affected linux system reported).
* Fixed bug which would stop fcron from running any job any more on
the affected system and until fcron was restarted if the bug above
occured.
* Cleaned-up the closures of file descriptors (check for errors,
etc).
From version 3.0.3-rc1 to 3.0.3
* The configure script now check that the make command is GNU make
(which is required to build fcron).
Bug fix: better handling of getpwnam() errors (we cannot rely on
errno to spot an error). This was causing problems for AIX for
instance.
From version 3.0.2 to 3.0.3-rc1
* New configure scripts, with more standard default values for paths,
etc. This aims at simplifying the packaging of fcron. Thanks go to
Patrice Dumas for his patch!
* New make targets: perms and strip. This aims at simplifying the
packaging of fcron. Thanks go to Patrice Dumas for his patch!
* Set environment variable LOGNAME when running a job (as Vixie Cron
does: thanks Martin McGreal for pointing that out).
* Portability work for AIX 5.2 and Solaris 8 and 10 (thanks Martin
McGreal).
* Chmod()ed fcron's fifo file to 777. It was 666 previously, but the
exec bit is needed for AIX and apparently ignored on other
platforms, so we now set it to.
* Set TZ environment variable for lines which uses fcron option
timezone.
* A file was closed twice by fcrontab: removed the duplicate close().
* Replaced include sys/termios.h by termios.h.
* Fixed a fcrontab bug cause by an return value not handled and
resulting in many useless (but pretty much harmless) iteration in a
loop.
From version 3.0.1 to 3.0.2
* Use sockaddr's field sa_len/sun_len on system defining it (BSD,
...). It should allow fcrondyn to connect to fcron on these
systems.
* Non-SELinux systems: run each job in a different session by calling
setuid() for each one of them. This is to improve compatibility
with Vixie cron.
* Don't use the shell defined in /etc/passwd by default, but use the
default value from fcron.conf instead. This is for compatibility
with Vixie cron.
* Use root name and group instead of root uid and gid. This seems
more logical since the configure scripts asks for the name and
group and not the uid and gid.
* Added an init file for Suse in script/ (contribution from Alex:
thanks!).
* Minor spelling fixes in the French documentation.
From version 3.0.0 to 3.0.1
* fcrontab: access user's directory with user's rights (necessary if
user/group fcron has not the right to read the directory).
* improvement in check_system_crontabs: more comments, added some
help messages, added command line options, cleaner, safer code.
* Improved English documentation: clarified some previously-unclear
points.
* Added French translation of the manual pages (thanks go to Alain
Portal)
* Removed old documentation from the package.
* Better handling of the pipes in job.c: this should remove some
problems encountered on BSD systems.
* bug fix: do not use a tv_usec > 999999: should fix the problem
encountered on BSD systems with select().
* bug fix: fixed a bug in make_msg(): the size of a string written to
a buffer was not controlled correctly in some cases. This could
result in buffer overflow and thus this was security problem.
However the bug seems not exploitable as the part of the string
which could overflow the buffer could not be freely defined by an
attacker (it was either ": " or one of the strings returned by
strerror()).
* Bug fix: set the FDs correctly for select().
From version 2.9.7 to 3.0.0
* Added a missing entry in changelog (changes from 2.9.6 to 2.9.7,
bug fix for NetBSD).
* Merged a patch for the check_system_crontabs script (Security
enhancements and cleanups).
From version 2.9.6 to 2.9.7
* Added time zone support (option timezone).
* Better support FreeBSD's users and groups modifications in fcron's
install scripts.
* Fixed a bug which used to make fcron send empty mails on very
recent systems.
* Fixed a bug which prevented fcrondyn to being used on NetBSD
(thanks go to Gabor Z. Papp).
* Added some casts in fileconf.c and save.c (to avoid some warnings
when compiling on HP-UX).
* Added a FAQ entry on how to emulate an anacron entry.
From version 2.9.5.1 to 2.9.6
* fixed the bug which made jobs run an hour too early after a
daylight saving time change.
Added detailed explanations about when a job will run when there is
a DST change in the FAQ.
* fixed fcrondyn's "Unknown command" bug on x86_64 (thanks go to
Georgi Georgiev).
* made fcrontab behave better when there is no space left in the
spool directory (used to truncate the fcrontab source file).
* Added a script, check_system_crontabs, to emulate Vixie cron's
behavior about /etc/crontab and /etc/cron.d. Please have a look at
the top of script/check_system_crontabs for more information.
* HP-UX support (needs more tests).
* bug fix: restore umask even if fcron runs unprivileged.
From version 2.9.5 to 2.9.5.1
* Fixed serious security vulnerabilities in fcronsighup, and improved
fcronsighup's overall security (drop privileges, better check user
inputs, etc).
* Fixed several typos in the doc.
* Updated debian package scripts (patch from debian maintainer).
From version 2.9.4 to 2.9.5
* Ported to HP-UX (thanks go to Scott Tinsley)
* Implemented fcrondyn commands run and runnow.
* Merged patch from Russell Coker for new SE Linux.
* Merged debian/ dir for debian package.
* Mail reports: put the same username in the To: field than the one
we give as recipient to the MTA. mailto can now also be a fully
qualified email address.
* changed a log message: a job which has ended without error is
reported has "completed" (which is more appropriated than
"terminated").
* Internal changes in log.c: code is more segmented, and code has
been added to be able to send log message to fcrondyn. Syslog
messages are now never longer than MAX_MSG (even with string from
strerror()).
* Fixed a bug which happened on Daylight Saving Time change on some
systems. It would make fcron run into a nasty infinite loop. Added
a sanity check in set_nextexe() to avoid such things.
* Fixed a crash bug: in 2.9.4, if a user run ls_exeq when a job is
running and has been removed from its fcrontab, it makes fcron
crash.
* Fixed a small bug: scripts were supposing perl was in /usr/bin.
* Fixed a bug which caused the pid of a child process to be
incorrectly read
* fixed memory leak: some strings returned by log.c:make_msg()
weren't always free()d.
* bug fix: fcrondyn commands renice and kill used not to handle
correctly the case where a job has several entries in exeq (exesev
jobs).
From version 2.9.3 to 2.9.4
* Merged support for SE Linux (patch from Russell Coker: thanks!)
* Work on the documentation (fixed spelling mistakes, tried to make
things clearer in fcrontab.5) (thanks Bill Wohler for your help!)
* Changed the subject line of mail reports: it now contains the
subject line, and is very similar to vixie cron's one.
* Added a sum-up at the end of ./configure.
* bug fix: "makewhatis" bug is fixed -- at last!
In fact, the problems encountered were due to an abusively ignored
signal SIGPIPE.
* bug fix: possible crash of fcron when trying to save a file if
there was no space left on device.
* bug fix: we don't consider '-' and '_' as word delimiters for a
username before the command anymore, since many programs have one
of these characters in their name.
* bug fix: option first was broken in fcron 2.9.3.
* fixed a little typo in an error message (could->couldn't)
* bug fix: do not ignore the last line of a fcrontab if there is no
\n before the end of file.
* fixed compile on SunOS 5.9 .
* Fcron now compiles on MacOS X.
* added some $srcdir to be able (again ;) ) to run configure from
another directory.
* Perf improvement: use buffer for i/o in run_job().
From version 2.9.2 to 2.9.3
* security issue: fcron used not to check the fcrontabs installed by
root for a standard user. This could make an inattentive superuser
install a user job runas(root) involontary.
* Perf improvement: we now use buffers to write something to disk
(became necessary due to the use of O_SYNC).
* To avoid loss of data in case of an hardware failure or a system
crash, fcron now saves files to a temporary name, and then renames
them to their definitive filename if everything's ok.
* The PID indicated by fcrondyn is now the pid of the job itself (up
to now, it was the one of the fcron process controlling the job).
* Implemented functions kill (send a signal to a running job) and
renice (change the priority of a running job) in fcrondyn.
* Added fcron's option -q to control the lavg and serial queue sizes.
* Added some timeouts in fcron for fcrondyn clients.
* Fcron is less restrictive concerning mailto addresses. In
particular, you can now use address like user@host.
* bug fix: in 2.9.2, fcrontab and fcron did not set correctly some
file modes.
* bug (introduced in 2.9.1): when a job stops with an non-zero exit
status or because it has been signaled, send a mail to its owner to
inform him (in 2.9.1 and 2.9.2, the mail was sent, but contained
nothing).
* code clean: use the same scheme for all struct types, removed some
code redundancy (save to disk management).
From version 2.9.1 to 2.9.2
* Added a system fcrontab. Root can access it with fcrontab by using
"-u systab".
* fcrondyn's ls_lavgq, ls_serialq and ls_exeq are now functional.
* mailto can now be set to a non-real user (for ex., an alias).
* fcron now calls shutdown() when a connection from fcrondyn is
closed. Another change in the code should prevent fcrondyn from not
returning to the prompt after a command has been run.
* use open() instead of fopen() to write files, for more security.
* fcrontab sets euid=uid before running the editor. This is required
by some programs (for instance, perl).
* bug fix: using DESTDIR with make did not work with the doc.
* Code clean: changed macros to make parameters clearly different
from vars.
From version 2.9.0 to 2.9.1
* fcron can now be run without root's privileges (see FAQ)
* added configure's option --with-boot-install .
* Minor change in the PAM code of fcron: may work better on some
systems.
* configure script now uses getpwnam() and getgrnam() instead of
reading directly /etc/passwd and /etc/group: this makes easier the
use of NIS, LDAP, etc.
* Bug fix: using some "cmd > /dev/stderr" (or stdout) in a script
used to make fcron send a bogus output mail. (rewrite of the code
managing the output of jobs)
* Bug fix: typo error prevented fcrontab to be compiled on some
systems.
* Minor bug fix about stdout option.
* Minor bug fix: giving fcrontab's option -c a relative path now
works correctly.
From version 2.1.0 to 2.9.0
* Added some new options to fcron: -y, -o, -l; and some fcrontab
options: stdout and volatile. All these permit to make fcron run in
foreground, execute all the pending jobs (mainly %-jobs), and
return. May be used, for instance, in a ppp-up script with a dialup
connection to update a software regularly.
* Added fcrondyn: this software allows users to dialog dyn-amically
with a running fcron daemon. Currently, it can list jobs of the
user running it (or all jobs for root). In the near future, it
should be able to run a job, change its next time and date of
execution, renice a running job, send a signal to a running job,
etc.
* All the documentation has been ported to SGML DocBook.
It results on a much better HTML version, which I recommand you
use. It is installed by default in fcron documentation directory
(for instance, on my system: /usr/share/doc/fcron-X.X.X/).
* Fcrontab.5 has been updated and improved. Some examples have been
added and some possible use of the different lines and options are
mentioned.
* Added option random, which allows an entry run periodically to be
run at a random time in its intervals of execution, instead of
being run as soon as possible.
* added some more checks in fileconf.c: allow user to use hours,
days, hourly, daily, etc options only with %-lines: it is ignored
if set for a &-line, which is quite confusing for users who may
type, for instance "&hourly" instead of "%hourly".
* bug fixed: you can now use arguments in the var EDITOR and VISUAL.
* bug fixed: fcron used to call sometimes a sleep(-1), which causes a
freeze (no crash, but a very very long sleep :) ) under system
using LIBC5, and maybe on some non-linux systems. It was not
causing any problem under GLIBC2. Thanks go to Nick Pasich.
From version 2.0.0 to 2.1.0
* PAM support for fcron and fcrontab (need testing! - help would be
appreciated).
* Fcron now send a mail if a job has noticenotrun set and could not
be run because of a queue full.
* Fcron now compiles on AIX (thank you, John A. Parker!), and a few
AIX-only bugs have been fixed, but it may remain some problems to
correct. Please try, and tell me!
* We now use constants ROOTUID and ROOTGID instead of some hard-coded
"0", and those constants are defined by the configure script (we
use the uid/gid of the name given with the option
"--with-root{name|group}"). It allows fcron to be run on system on
which root is not uid/gid 0/0.
* code cleaning.
* bug fixed: setting lavg to (0,0,0) used to make the line be added
in the lavg queue instead of the serial queue (but the lavgs were
ignored anyway).
* bug fixed: fcrontab's "-z" option was not ignoring previous user's
fcrontab version.
* bug fixed: on systems using putenv(), the var HOME, USER and SHELL
wasn't correctly assigned. On system supporting setenv() (which is
the default), the problem did not occur. (thanks go to Evan A.
Zacks).
From version 1.1.1 to 2.0.0
* using SIGUSR2 on fcron makes it print its current schedule on
syslog and toggles on/off the printing of debug info on syslog.
* fcron behavior on serial and lavg queues overflow has changed: in
previous versions, it used to run a job to make room to put a new
one. As it may conduct to a overwhelming of system resources, the
new job is now refused (and not run). An error message is also
logged through syslog.
* a mail is now sent if the job exited due to a signal, or if exit
status is non-zero. Read FAQ if you experience problems about that.
* added a FAQ.
* bug fixed: a midmonthly job executed after the 15th of the month
used to cause an endless loop. Thanks go to Guy Geens (thanks a
lot!).
* bug fixed: inserting a job in serial queue or running a job not
finished at startup was broken, unless the job was strict(no).
* bug fixed: some 1.1.1 changes used to make fcron impossible to
compile without sendmail (./configure's option
"--with-sendmail=no").
* bug fixed in sysV boot script: we know specify explicitly the path
to fcron.
* bug fixed: unresolved error used to occur on some system not
defining getopt_long().
From version 1.1.0 to 1.1.1
* security fix: sym link attack against fcrontab. Any user allowed to
use fcrontab used to be able to remove any fcrontab, and
potentially to truncate any file to zero-length (under certain
conditions, anyway).
* fcron and fcrontab now have a configuration file: fcron.conf. It
contains the default paths (spool dir, etc) and programs to use
(editor, shell, etc). Thanks to that file, several fcron processes
can run simultaneously if they have a different config (different
spool dir and pid file).
* added fcron's option "-m" to control the number of serial jobs
which can be executed simultaneously.
* added fcron's option "-n" to create a new spool dir.
* command line syntax of fcrontab has changed: you can know use
"user" (after the file name if any) instead of "-u user". It should
make fcrontab a little more intuitive.
* It is now possible to put a user name between the time/date fields
and the shell command of a fcrontab line (for Vixie cron format
compatibility): it is equivalent to runas(user).
* support of Solaris (and SysV).
* early support of OpenBSD.
* the installation scripts now use nsswitch.conf to detect if a user
or a group exists on the system. That way, naming services (NYS,
ldap, etc) are supported.
* the man page and doc is now installed by default in
$prefix/share/{man|doc} (instead of the previous $prefix/{man|doc})
($prefix is generally "/usr").
* bug corrected: fcron used not to add a serial_sev line to
serial/lavg queue if this line was running, saying "already in
serial queue".
* bug corrected: a "all" in fcron.allow with no fcron.deny file was
not considered as an allow rule.
From version 1.0.3 to 1.1.0
* The binary format of the binary fcrontabs has changed: there is now
no more need to reinstall the fcrontabs when upgrading fcron (but
you need to convert your fcrontabs to the new format once), and
this format should allow extensions without losing any information.
* better management of the errors in load/save fcrontabs functions.
* the doc is a clearer about @-lines.
* more security tests by fcrontab in the case it is suid root (but,
if possible, it should be suid fcron as it is far more secure).
* we now remove unwanted fcrontabs before loading them in memory:
well, it seems to be more logical like that :)) .
* bug fix: using options first with a &-line may have led to some
problems during the first read by fcron (mail send erroneously if
noticenotrun was used, bad set of the first execution's time and
date or immediate execution if bootrun was set: in fact, the line
was not recognized as a new line).
* bug fix: fcron used not to be able to be compiled from any
directory because of an absent -I. line option for the compiler
(the config.h file was not found).
From version 1.0.2 to 1.0.3
* fcron can now be configured and compiled from any directory (not
only from the source dir).
* bug fix: fcron now sets umask to the value it got at start before
running a job.
* bug corrected: a bug used to make the "truncated" system not to
work correctly, so a too long log message used to make fcron crash.
From version 1.0.1 to 1.0.2
* the user for whom a job is run is now logged.
* installation script is now more explicit about what it is going to
do.
* a boolean value can now also be set by "yes" and "no".
* bug corrected: bootrun option works again.
* bug corrected: shell variable containing underscore (_) used to be
rejected.
* bug corrected: installation script used not to check if user fcron
was in group fcron, in which case fcrontab doesn't work correctly
(it cannot, in that case, read the fcrontabs for non-privileged
users).
From version 1.0.0 to 1.0.1
* security fix: a user used to be able to read a file owned by root
if root runs a "fcrontab -u user -e".
From version 0.9.5 to 1.0.0
* added fcron's option "-s" to control the time between two saves of
the fcrontabs on disk.
* installation scripts now support better FreeBSD and sh.
* bug corrected: configure's options prefix and without-sendmail used
not to work.
* bug corrected: installing an fcrontab by "fcrontab file" wasn't
working correctly with a relative path (a path not beginning by a
"/").
From version 0.9.4 to 0.9.5
* security fix: the jobs of a fcrontab reinstalled by root used to be
run as root (until the next action of the owner on the fcrontab).
* added options strict and noticenotrun to tell fcron respectively if
a job should be removed from lavg queue if its execution interval
is exceeded, and if fcron should mail user to report the
non-execution of a job.
* added option nolog in order to log only errors (i.e. no message
like "job x started"). This can help to reduce the disk access and
save energy on a laptop, and make the log more readable if some
jobs are run very often.
* better handle of changes of the uids of users in /etc/passwd (no
more need to reinstall the fcrontabs).
* fcron.deny and fcron.allow files are now owned by root (they used
to be owned by user fcron).
* added ./configure's option --with-answer-all to be able to use
"make install" in a non-interactive way (can be useful for
automatic installers).
* added option --with-rootname and --with-rootgroup to ./configure
script for a better support of exotic systems.
* bug corrected in make install (script user-group): the script used
not to handle correctly the absence of both useradd and adduser
commands. This script now checks and tries to add a group fcron if
necessary.
From version 0.9.3 to 0.9.4
* security improvement: after the (horrible) root exploit found in
version 0.9.3, I decided to improve fcron/fcrontab's security. I've
included some strong (I hope :)) ) tests in fcron to ensure that
only root can run commands as superuser and use option runas. Even
an corrupted fcrontab should not be able to get root's privileges.
Pretty reassuring, isn't it?
* runfreq(1) lines have been replaced and extended by a new kind of
line: the lines beginning by a "%". It's now possible to tell fcron
to run a command once an hour, a week, etc, but only at some
specified moments. For instance: '%weekly * 4-7 echo "foo"' will
run the command 'echo "foo"' once a week between 4 and 7 in the
morning. (see "man 5 fcrontab" for more details).
* installation process improved: user is now consulted before
anything is done about installation in boot scripts, etc. The
default username of fcron is now ... fcron! (this is more secure
than daemon, which can be used by other programs).
* fcron now adds the host name to the addresses of the mails it
sends.
* fcrontab determines the identity of the running user by his uid (it
used to use the var USER). That way, fcrontab should act as crontab
under a "su".
* bug fixed: a tmp file was not removed after a "fcron -z"
* bug fixed in fcrontab: an expression of the form "start-stop" with
start > stop used to be incorrectly managed by fcron.
* bug fixed: when fcron and fcrontab were installed under a
non-privileged user rights, a normal user used to be not able to
use fcrontab.
* bug fixed: while fcrontab was asking user if he would like to
correct an erroneous line, the answer was not correctly handled.
From version 0.9.2.1 to 0.9.3
* installation scripts improved.
* added code to avoid infinite loops.
* bugs corrected in the functions to set the time and date of next
execution.
* bug corrected in the check for invalid lines.
From version 0.9.2 to 0.9.2.1
* minor bug corrected in Makefile
From version 0.9.1 to 0.9.2
* fcron now uses autoconf (the configure script), so it should be
easier to compile and install it and various systems.
* support of lavg options for all systems where getloadavg() is
defined (BSD unix, etc) and on Linux systems with a proc filesystem
(fcron can use /proc/loadavg).
* a job can now be executed several times simultaneously if option
exesev is set to 1.
* user can determine if a job can be put several times in the serial
queue simultaneously thanks to option serialonce.
* fcron does not wait anymore for the completion of all jobs of a
file before deleting it from memory.
* fcron handles correctly the jobs which are both serial and lavg.
* fcron now runs under a specific user and group (other than root)
for basic security reasons.
* bug corrected: fcron used to crash after a file was deleted from
memory in some conditions.
* corrected the bug which used to appear when a line was put several
times in the serial queue: in this case, fcron used not to count
correctly the number of running serial jobs.
* bug corrected: fcrontab used not to remove the temporary file it
creates if no modification where done to a file after an edition
using the -e option and on errors.
* bug corrected: fcrontab now defines correctly the remain value of a
line based on time and date beginning with a "&" but without
runfreq definition.
* bug corrected: fcron used to not install correctly a file edited if
a correction was made.
* bug corrected: reset option was not working correctly when set to a
single line.
From version 0.9.0 to 0.9.1
* support of the option mailto for each line (it used to be set for
the whole file).
* the value of the runas and mailto options are now stored internally
as a uid number: you must reinstall all the system's fcrontabs if
you change the uid of a user.
* Support of options "lavg*", in order to run a job under a specific
1, 5 and/or 15 minutes system load average value(s). When the job
should be run, it is placed in a specific queue and the load
average is checked regularly until the right value(s) is/are got.
The options "lavgor" and "lavgand" permits users to tell fcron if
they prefer to perform a logic OR or AND between the 1, 5 and 15
load average values. The option "until" can be use to force the
execution of a job after a determined timeout if the right
conditions to run the job are not filled.
* fcron now uses putenv() in place of setenv() (setenv() is not POSIX
compliant).
* a mailto option set to "" is now equivalent to "mail(false)".
* corrected the bug which used to make a bootrun and runfreq(1) job
executed twice when fcron's start occurs in an interval of
execution of the job.
* corrected the bug which used to make fcron crash after serial_array
is resized.
From version 0.8.3 to 0.9.0
* support of options in fcrontabs. Options can be specific to a line
or defined once for every line located after their definition (a
special option "reset" set all options to their default). Some
options also have too names: a long name and an abbreviation.
* jobs can now be run be run one after the other (option "serial"):
when the job should normally be run, it is added to a queue, which
entries are executed one by one. It permits to avoid the use of a
lot of system resources for a brief moment by the simultaneous
execution of several tasks.
* jobs can be run at system start up if they should have been run
during system down time (option "bootrun").
* root can run jobs as an another user (option "runas")
* user can set a nice value to a job, but only root can use a
negative value (a negative value will increase priority)
* user can choose to perform a logic AND or a logic OR between day of
month and day of week (option "dayor" and "dayand")
* user can choose to mail the output of jobs (option "mail") if any,
and can force fcron to send a mail even if output is zero-length
(option "forcemail").
* fixed the bug which used to make fcron run a job with a runfreq set
to 1 at a wrong time.
* fixed a bug which used to make fcrontab crash after several
corrections in edit mode.
From version 0.8.2 to 0.8.3
* (all this bugs appeared in version 0.8.2 :)
* fixed the bug which used to make fcron crash after a SIGHUP
* fixed the bug which used to prevent fcron from running some job
based on time and date
* fixed the bug which used to makes fcron run the jobs one second too
late
From version 0.8.1 to 0.8.2
* code has been optimized: The jobs are now queued in order of
execution. It permits avoid useless tests of all jobs every time
fcron wakes up, speeds up the determination of the time fcron
should sleep, speeds up the processing after the end of a job, etc.
I don't know why I haven't made it before :-) ...
* fcrontab has been improved: it is now more stable (many bugs which
used to make fcrontab crash in case of errors in the fcrontab has
been fixed). Plus, it now asks if you want to make corrections if
needed when editing.
From version 0.8.0 to 0.8.1
* ported to FreeBSD 4.0
From version 0.7.0 to 0.8.0
* corrected the bug which keep normal users from listing and editing
their current configuration file with fcrontab -l or -e.
* corrected the bugs which used to block fcron when a task was marked
for execution but fcron stopped before it has been launched, and
when fcron stopped after the end of a job but before the output has
been mailed.
* day of week 0 and 7 now both mean Sunday.
* the abbreviations of months and day of week are not any more case
dependent.
* months are now defined from 1 to 12 (and not from 0 to 11) (it was
a little bit illogical :-).
* you can now force spaces in strings if you place them in quotes.
* I discovered ispell :-) ...
* I've added a kind of signature in the formated configuration files
in order to keep the daemon from attempting to read an old
configuration file which doesn't use the same syntax.
* You can now install a file with fcrontab from standard input.
* others minor adds and bug corrections.
_______________________________________________________________________
Prev Home Next
How to install fcron Up Release notes: fcron 3.2.0

View File

@ -1,344 +0,0 @@
#Fcron documentation Using fcron ... fcrondyn GNU GENERAL PUBLIC
LICENSE
Copyright © 2000-2014 Thibault Godouet Fcron 3.2.0 Web page :
http://fcron.free.fr
_______________________________________________________________________
Fcron documentation
Prev Chapter 2. Using fcron ... Next
_______________________________________________________________________
2.2. Frequently Asked Questions
This FAQ intends to complement the man pages by following a more
practical approach.
If you think a QA should be added, please mail me it!
2.2.1. How does fcron handle system clock adjustments?
2.2.2. How does fcron handle daylight saving time changes?
2.2.3. What about fcron and software suspend (aka. suspend to RAM, to
disk)?
2.2.4. How can I prevent fcrontab from considering the first "word" of
my command line as a user name i.e. "runas(word)"?
2.2.5. I have a job which usually terminates with a non-zero status.
When it does, I receive a email with the exit status even if the
command had no output. How can I avoid the email?
2.2.6. What does "loadavg" mean anyway?
2.2.7. How can I use fcrontab in scripts?
2.2.8. Can I use fcron from time to time, for instance in a script?
2.2.9. Can I run fcron without root's privileges?
2.2.10. Has fcron some incompatibilities with Vixie cron?
2.2.11. How can I emulate an anacron entry?
2.2.12. How can I emulate a Vixie cron @reboot entry?
2.2.1. How does fcron handle system clock adjustments?
First, you must understand that fcron determines, for each job, its
next time and date of execution. It then determines which of those jobs
would be the next to run and then, sleeps until that job should be run.
In other words, fcron doesn't wake up like Vixie cron each minute to
check all job in case one should be run ... and it avoids some problems
associated with clock adjusts.
This means that if the new time value is set into the past, fcron won't
run a particular job again. For instance, suppose the real time and
system clock are 3:00, so the next job cannot be scheduled to run
before 3:00, as it would have already been run and re-scheduled.
First, suppose you set your system clock into the past, say to 2:00,
Presuming that the last run was shortly before 3:00. then fcron will
sleep until the next job should be executed. The execution time for a
job is determined by identifying the last time that the job ran and
computing the next scheduled time. This means that the next scheduled
time must be on or after 3:01. Therefore, in this example, fcron will
not run a job for at least one hour.
Next, if you set the system time into the future, say to 4:00, fcron
will run every job scheduled between the old and the new time value
once, regardless of how many times it would have been scheduled. When
fcron wakes up to run a job after the time value has changed, it runs
all the jobs which should have run during the interval because they are
scheduled to run in a past time.
As special case is when "@xxx" style scheduling rules are involved, you
must consider the "adjustment-interval". The "adjustment-interval" is
the time difference between the original system time and the new system
time. The concerned jobs will run at "adjust-interval" too early or too
late depending of the nature of the adjust.
To conclude, fcron behaves quite well for small clock adjusts. Each job
which should have run does so once, but not exactly at the correct time
as if the job were scheduled within the adjustment interval. But, if
you have to make a big change in the time and date, you should probably
reset all the scheduled "nextexe" by running "fcrontab -z" on all the
fcrontabs.
2.2.2. How does fcron handle daylight saving time changes?
There are two types of daylight saving time change: the remove-one-hour
change (for instance, "at 3:00, it will be 2:00"), and the add-one-hour
one (for instance, "at 2:00, it will be 3:00"). In both cases, fcron
will run the job only once (more precisely, it won't run the job twice
as many as it should have).
In the first case, the official time changes as follow (in order of
real chronological time): [x, 2:00] -> i1: [2:00, 3:00] -> i2: [2:00,
3:00] -> [3:00, y]. i1 and i2 are the names of the two intervals [2:00,
3:00]. For this kind of DST change, a job which should run between 2:00
and 3:00 will run either in i1 or in i2, but not both. Consequently, a
job scheduled to run every day at 2:30 (for instance) will be run only
once. There is no way for a user to know if the job will be run in i1
or i2.
In the second case, there is a gap in time: the official time changes
as follow (in order of real chronological time): [x, 2:00] -> [3:00,
y]. A job scheduled between 2:00 and 3:00 will get run once, and only
once, even if it should have been run several times. For instance, a
job which should have run every 10 minutes will run only once, not 6
times, between 1:59 and 3:01. A job scheduled to run at 2:xx will run
at 3:xx. For instance, if a job is scheduled to run every day at 2:30,
it will run at 3:30 the day of this kind of DST change.
2.2.3. What about fcron and software suspend (aka. suspend to RAM, to disk)?
We suppose here that you are using swsusp and the hibernate script to
do a "suspend to disk", but it should be similar with other methods.
When you switch on your computer after a suspend to disk, the system
time will be incorrect, and will then be corrected by the hibernate
script. Before it is corrected, fcron may compute the time and date of
the next execution of a job: the computation would then be incorrect
(please see the entry about system clock adjustment in the present
FAQ).
So you should have the hibernate script stop fcron before the suspend,
and then restart it when the system is switched on, ie. put a line like
"RestartServices fcron" in your hibernate.conf file. That way, the
system time will always be correct when fcron runs (assuming that fcron
is started after the system time is corrected).
2.2.4. How can I prevent fcrontab from considering the first "word" of my
command line as a user name i.e. "runas(word)"?
Suppose you have an user called "echo" (weird idea ... :)) ). If you
use the line '* * * * * echo "Hello!"' in root's fcrontab, "echo" will
be interpreted as "runas(echo)".
To avoid that, put your command in quotes:
* * * * * 'echo "Hello!"'
will work as expected as quotes are allowed for the shell command but
not for the user name.
2.2.5. I have a job which usually terminates with a non-zero status. When it
does, I receive a email with the exit status even if the command had no
output. How can I avoid the email?
You could disable email entirely by setting the "mail" option to "no".
But, if you still want to receive the standard output as email, you can
add an command which always evaluates to 0, like "/bin/true", after
your primary command. This will not affect your job nor create
additional output. For example:
* * * * * /a/non/zero/status/job ; /bin/true
2.2.6. What does "loadavg" mean anyway?
The "/proc/loadavg" file provides loadavg values. These values are (in
order): the system load averages for the past 1, 5, and 15 minutes; a
count of the (active tasks/active processes); the pid of last process
run;
The active task count includes those processes marked as running or
uninterruptable. A load average is an estimate of the average number of
processes running within a specified period. The load averages are
computed from active task count. They are updated each time active task
counts are taken.
The load average formula is:
loadavg(d,n) = active_task_cnt - (active_task_cnt - old_loadavg)*(1/exp(d/n)
where: d is the time interval between active task count readings,
typically every 5 seconds; n is the time over which the readings are
averaged.
2.2.7. How can I use fcrontab in scripts?
You can use pipes with "fcrontab -l" (list the fcrontab) and "fcrontab
-" (read the new fcrontab from input). For example:
echo -e "`fcrontab -l | grep -v exim`\n0 * * * * /usr/sbin/exim -q" | fcr
ontab -
can be used to add a line. Another way to do it would be to: list the
fcrontab settings into a temporary file ("fcrontab -l > tmpfile");
modify the temporary file ("echo $LINE >> tmpfile"); replace the
original fcrontab by the temporary; and finally, remove the temporary
file ("fcrontab tmpfile ; rm -f tmpfile").
2.2.8. Can I use fcron from time to time, for instance in a script?
Let's suppose you use fcron in your ppp-up script. Fcron can permit you
to run some jobs at connection startup, but not at each connection,
like it would be if the job was run directly by the ppp-up script: for
instance, only once every week.
Example 2-5. Using fcron in a script: running a job once every day,
week, etc, at dialup connection
You can use a script like:
# A ppp-up script ...
# run the jobs pending, then returns:
fcron -f -y -o
in conjunction with a fcrontab file like:
# a fcrontab file ...
%random(no),weekly,stdout * * /a/command/to/download/latest/mozilla/release
%monthly,stdout * * * /update/junkbuster/config/files
You can also use fcron to run some jobs until the end of the
connection. For instance, you can make fetchmail retrieve emails more
often during connection: we suppose that it is configured to retrieve
mails every hour, which launches a dialup connection if necessary, and
we want it to check for mails every 5 minutes while connected.
Example 2-6. Using fcron in a script: running a job until the end of
the connection
ppp-up script:
# A ppp-up script ...
# run fcron at the beginning of the connection:
fcron -b
ppp-down script:
# A ppp-down script ...
# stop fcron at the end of the connection:
# -- Warning: killall may have unwanted effect on non linux systems --
killall -TERM fcron
the fcrontab:
# a fcrontab file ...
@volatile,first(0) 5 fetchmail
If you run fcron in several scripts, or if you run fcron as a daemon
and want also to run fcron in scripts, then you should use fcron,
fcrontab and fcrondyn's --configfile.
For more details, see fcron's command line arguments --once,
--nosyslog, --sleeptime and --configfile in fcron(8), and fcrontab's
options volatile, stdout, first in fcrontab(5)
2.2.9. Can I run fcron without root's privileges?
Yes, you can. To do that, see the following instructions, but please
note that fcrondyn currently does *not* work without root privileges.
1. First, create a directory where you'll install fcron, and some
subdirectories:
bash$ mkdir /home/thib/fcron
bash$ cd /home/thib/fcron
bash$ mkdir doc man spool
2. Then, run configure with option --with-run-non-privileged, set all
user names and groups to yours, and set appropriately the paths:
Warning
This option allows a non privileged user to run fcron. When used, fcron
does not change its rights before running a job (i.e., if joe runs
fcron, every job will run as joe). It means that YOU SHOULD NOT RUN
FCRON AS A PRIVILEGED USER WHEN COMPILED WITH THIS OPTION or you'll
have a serious security hole.
bash$ ./configure --with-run-non-privileged --with-rootname=thib
--with-rootgroup=thib --with-username=thib --with-groupname=thib
--with-etcdir=/home/thib/fcron --with-piddir=/home/thib/fcron
--with-fifodir=/home/thib/fcron --with-spooldir=/home/thib/fcron/spool
--with-docdir=/home/thib/fcron/doc --prefix=/home/thib/fcron
The rest of the installation is described in the install file.
2.2.10. Has fcron some incompatibilities with Vixie cron?
As far as I know, fcron supports Vixie cron's crontab syntax fully. You
should be able to use a crontab with fcron with no modification (if not
please contact me at <fcron@free.fr>).
The main problem is about the management of the system (f)crontab.
Vixie cron monitors the changes on /etc/crontab every minute, and
automatically takes into account the changes if any. As for now, fcron
does not do that by itself. Fcron does not support the /etc/cron.d/
directory either, as it is just an extension to the /etc/crontab file.
However /etc/cron.{daily,weekly,monthly} directories will work in fcron
just fine: they are supported through the run-parts program, just as
Vixie cron).
So if you want to replace Vixie cron by fcron transparently, all you
have to do is create a /usr/bin/crontab link to /usr/bin/fcrontab, and
reinstall the system (f)crontab with 'fcrontab /etc/crontab' every time
you modify it (if you needed some more work than that, please let me
know!).
You can also use the script script/check_system_crontabs to monitor for
system (f)crontab changes, i.e. changes to /etc/(f)crontab and
/etc/cron.d/. When it detects a change, it will generate a new system
fcrontab, and install it automatically. Should you choose to use that
script, please take a look at the beginning of the script: you will
find insctructions on how to use it -- and a few warnings you should
pay attention to. With this script, the fcron's behavior should be very
similar to Vixie cron regarding /etc/crontab and /etc/cron.d/.
2.2.11. How can I emulate an anacron entry?
As anacron, fcron does not assume that the system runs permanently.
Thus, fcron features similar functionalities to anacron, but it has
different means to achieve it, in other words other ways to define when
a job should run. Fcron is in general much more flexible than anacron.
The best thing to do is to have look at fcrontab(5), and choose the
type of line which is the most appropriate for your needs (this is
likely to be a @-line or a %-line).
On a Debian/Ubuntu, the default /etc/anacrontab looks like:
1 5 cron.daily nice run-parts --report /etc/cron.daily
7 10 cron.weekly nice run-parts --report /etc/cron.weekly
@monthly 15 cron.monthly nice run-parts --report /etc/cron.monthly
A close fcron equivalent would be (see serial):
# Run once a day/week/month, and ensure only one of those tasks is run at a time
:
!reset
!serial,nice(10)
%daily * * run-parts --report /etc/cron.daily
%weekly * * run-parts --report /etc/cron.weekly
%monthly * * * run-parts --report /etc/cron.monthly
Or you could go for something a bit more specific (see lavg,
noticenotrun):
# Only run the tasks out of office-hours when the system load is low
# and send an email to the user if fcron couldn't run the job:
!reset
!serial,lavg(0.5,1,1.5),noticenotrun,nice(10),mailto(admin@yourdomain.com)
%daily * 0-9,18-23 run-parts --report /etc/cron.daily
%weekly * 0-9,18-23 run-parts --report /etc/cron.weekly
%monthly * 0-9,18-23 * run-parts --report /etc/cron.monthly
Also, if you do want to emulate an anacron entry of the form:
0 delay job-identity /your/command
then you can use something as:
@runonce delay /your/command
2.2.12. How can I emulate a Vixie cron @reboot entry?
No need to emulate any more, as Vixie cron shortcuts, including
@reboot, are now supported by fcron!
_______________________________________________________________________
Prev Home Next
fcrondyn Up GNU GENERAL PUBLIC LICENSE

View File

@ -1,356 +0,0 @@
#Fcron documentation Frequently Asked Questions GNU Free Documentation
License
Copyright © 2000-2014 Thibault Godouet Fcron 3.2.0 Web page :
http://fcron.free.fr
_______________________________________________________________________
Fcron documentation
Prev Next
_______________________________________________________________________
Appendix A. GNU GENERAL PUBLIC LICENSE
Table of Contents
0. PREAMBLE
1. TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
How to use this License for your documents
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc. 59 Temple
Place - Suite 330, Boston, MA 02111-1307, USA Everyone is permitted
to copy and distribute verbatim copies of this license document, but
changing it is not allowed.
0. PREAMBLE
The licenses for most software are designed to take away your freedom
to share and change it. By contrast, the GNU General Public License is
intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Library General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not price.
Our General Public Licenses are designed to make sure that you have the
freedom to distribute copies of free software (and charge for this
service if you wish), that you receive source code or can get it if you
want it, that you can change the software or use pieces of it in new
free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid anyone
to deny you these rights or to ask you to surrender the rights. These
restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether gratis
or for a fee, you must give the recipients all the rights that you
have. You must make sure that they, too, receive or can get the source
code. And you must show them these terms so they know their rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software patents.
We wish to avoid the danger that redistributors of a free program will
individually obtain patent licenses, in effect making the program
proprietary. To prevent this, we have made it clear that any patent
must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
1. TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains a
notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of running
the Program is not restricted, and the output from the Program is
covered only if its contents constitute a work based on the Program
(independent of having been made by running the Program). Whether that
is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's source
code as you receive it, in any medium, provided that you conspicuously
and appropriately publish on each copy an appropriate copyright notice
and disclaimer of warranty; keep intact all the notices that refer to
this License and to the absence of any warranty; and give any other
recipients of the Program a copy of this License along with the
Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion of
it, thus forming a work based on the Program, and copy and distribute
such modifications or work under the terms of Section 1 above, provided
that you also meet all of these conditions:
* a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
* b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any part
thereof, to be licensed as a whole at no charge to all third parties
under the terms of this License.
* c) If the modified program normally reads commands interactively when
run, you must cause it, when started running for such interactive use
in the most ordinary way, to print or display an announcement including
an appropriate copyright notice and a notice that there is no warranty
(or else, saying that you provide a warranty) and that users may
redistribute the program under these conditions, and telling the user
how to view a copy of this License. (Exception: if the Program itself
is interactive but does not normally print such an announcement, your
work based on the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote
it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of a
storage or distribution medium does not bring the other work under the
scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
* a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections 1
and 2 above on a medium customarily used for software interchange; or,
* b) Accompany it with a written offer, valid for at least three years,
to give any third party, for a charge no more than your cost of
physically performing source distribution, a complete machine-readable
copy of the corresponding source code, to be distributed under the
terms of Sections 1 and 2 above on a medium customarily used for
software interchange; or,
* c) Accompany it with the information you received as to the offer to
distribute corresponding source code. (This alternative is allowed only
for noncommercial distribution and only if you received the program in
object code or executable form with such an offer, in accord with
Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to control
compilation and installation of the executable. However, as a special
exception, the source code distributed need not include anything that
is normally distributed (in either source or binary form) with the
major components (compiler, kernel, and so on) of the operating system
on which the executable runs, unless that component itself accompanies
the executable.
If distribution of executable or object code is made by offering access
to copy from a designated place, then offering equivalent access to
copy the source code from the same place counts as distribution of the
source code, even though third parties are not compelled to copy the
source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt otherwise
to copy, modify, sublicense or distribute the Program is void, and will
automatically terminate your rights under this License. However,
parties who have received copies, or rights, from you under this
License will not have their licenses terminated so long as such parties
remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying the
Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further restrictions
on the recipients' exercise of the rights granted herein. You are not
responsible for enforcing compliance by third parties to this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent license
would not permit royalty-free redistribution of the Program by all
those who receive copies directly or indirectly through you, then the
only way you could satisfy both it and this License would be to refrain
entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made generous
contributions to the wide range of software distributed through that
system in reliance on consistent application of that system; it is up
to the author/donor to decide if he or she is willing to distribute
software through any other system and a licensee cannot impose that
choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License may
add an explicit geographical distribution limitation excluding those
countries, so that distribution is permitted only in or among countries
not thus excluded. In such case, this License incorporates the
limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail
to address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and
conditions either of that version or of any later version published by
the Free Software Foundation. If the Program does not specify a version
number of this License, you may choose any version ever published by
the Free Software Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the
author to ask for permission. For software which is copyrighted by the
Free Software Foundation, write to the Free Software Foundation; we
sometimes make exceptions for this. Our decision will be guided by the
two goals of preserving the free status of all derivatives of our free
software and of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO
WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND,
EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE
ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH
YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL
NECESSARY SERVICING, REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU
FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
DAMAGES.
END OF TERMS AND CONDITIONS
How to use this License for your documents
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these
terms.
To do so, attach the following notices to the program. It is safest to
attach them to the start of each source file to most effectively convey
the exclusion of warranty; and each file should have at least the
"copyright" line and a pointer to where the full notice is found.
one line to give the program's name and an idea of what it does.
Copyright (C) yyyy name of author This program is free software; you
can redistribute it and/or modify it under the terms of the GNU
General Public License as published by the Free Software Foundation;
either version 2 of the License, or (at your option) any later
version. This program 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
General Public License for more details. You should have received a
copy of the GNU General Public License along with this program; if
not, write to the Free Software Foundation, Inc., 59 Temple Place -
Suite 330, Boston, MA 02111-1307, USA.
Also add information on how to contact you by electronic and paper
mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This
is free software, and you are welcome to redistribute it under certain
conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the
appropriate parts of the General Public License. Of course, the
commands you use may be called something other than `show w' and `show
c'; they could even be mouse-clicks or menu items--whatever suits your
program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the
program `Gnomovision' (which makes passes at compilers) written by
James Hacker.
signature of Ty Coon, 1 April 1989 Ty Coon, President of Vice
This General Public License does not permit incorporating your program
into proprietary programs. If your program is a subroutine library, you
may consider it more useful to permit linking proprietary applications
with the library. If this is what you want to do, use the GNU Library
General Public License instead of this License.
_______________________________________________________________________
Prev Home Next
Frequently Asked Questions GNU Free Documentation License

View File

@ -1,115 +0,0 @@
#Fcron documentation Fcron: how and why? About fcron Changes
Copyright © 2000-2014 Thibault Godouet Fcron 3.2.0 Web page :
http://fcron.free.fr
_______________________________________________________________________
Fcron documentation
Prev Chapter 1. Fcron: how and why? Next
_______________________________________________________________________
1.2. How to install fcron
1.2.1. Compilation requirements
* A C compiler (e.g. gcc)
* (optional) readline development library (e.g. libreadline-dev)
* (optional) PAM development library (e.g. libpam0g-dev)
* (optional) SE Linux development library (e.g. libselinux1-dev)
* (optional) Linux audit development library (e.g. libaudit-dev)
* If compiling from git checkout (rather than a tarball), then no
generated file will be included out of the box, so you will need
more tools to generate them. In particular the ./configure script
and the documentation will be generated from the sources.
+ git
+ autoconf
+ docbook
+ docbook-xsl
+ docbook-xml
+ docbook-util
+ manpages-dev
1.2.2. Compilation and installation instructions
* uncompress the archive:
bash$ tar -xzf fcron-X.Y.Z.src.tar.gz
* cd to the archive directory
bash$ cd fcron-X.Y.Z
* run the configure script:
bash$./configure
+ If you can't see a ./configure, then you probably checked out
the files from git, in which case you need to run autoconf to
generate the configure script.
+ If using PAM, beware that by default the PAM configuration
will be installed in /usr/local/etc/. That most likely mean
that your system won't use this config, and may ask you to
type your password everytime you start fcrontab or fcrondyn.
The simplest way to avoid this is to instruct configure to use
/etc instead with:
bash$ ./configure --sysconfdir=/etc
+ You may also want to change the place where fcron will be
installed: you can use the configure 's option --prefix to do
that. For instance:
bash$ ./configure --prefix=/usr--sysconfdir=/etc
(default is prefix=/usr/local and sysconfdir=${prefix}/etc).
+ To disable the use of PAM, SE Linux or fcrondyn, use
configure's option --with-pam=no, --with-selinux=no and/or
--with-fcrondyn=no.
+ The command make install asks you by default some questions
you have to answer. To avoid that (which can be useful for
automatic installers), you can use the ./configure's option
--with-answer-all and/or --with-boot-install (see "./configure
--help" for more details).
+ To debug fcron, you should use configure 's option
--with-debug.
+ You can get info on the others configure 's options by running
"./configure --help".
Warning
+ The configure script may not define a correct directory for
the man pages and the documentation on some systems. You may
check the values defined by configure and if necessary force a
value by the options --mandir and -with-docdir (see the help
by running "./configure --help").
+ If you get older fcron's man-pages with man command after
having upgraded, it's probably because fcron has changed its
default man directory: you should remove manually the outdated
man-pages.
+ The Makefile has been designed for GNU make. Some other
version of make may fail to use it.
* (optional) check the file config.h, and change it if necessary (the
configurable part is on the top of the file and clearly delimited).
* compile:
bash$ make
* then install binaries as root:
bash$ su root
bash# make install
You can now run fcron and fcrontab.
* This is a POSIX conforming software. You must have a POSIX compiler
(gcc for example) in order to compile it.
* This software has been written for GNU/Linux systems. If you want
to port it on an other Unix platform (thank you if you do it), try
to modify - if possible - only the configure script. Please send me
any modifications at <fcron@free.fr> in order to include it in
future releases.
_______________________________________________________________________
Prev Home Next
About fcron Up Changes

View File

@ -1,110 +0,0 @@
#Fcron documentation Fcron: how and why? Fcron: how and why? How to
install fcron
Copyright © 2000-2014 Thibault Godouet Fcron 3.2.0 Web page :
http://fcron.free.fr
_______________________________________________________________________
Fcron documentation
Prev Chapter 1. Fcron: how and why? Next
_______________________________________________________________________
1.1. About fcron
1.1.1. What is fcron?
Fcron is a scheduler. It aims at replacing Vixie Cron, so it implements
most of its functionalities.
But contrary to Vixie Cron, fcron does not need your system to be up 7
days a week, 24 hours a day: it also works well with systems which are
not running neither all the time nor regularly (contrary to
anacrontab).
In other words, fcron does both the job of Vixie Cron and anacron, but
does even more and better :)) ...
To do so, fcron allows you to use the standard mode in which you tell
it to execute one command at a given date and hour and to make it run a
command according to its time of execution, which is normally the same
as system up time. For example:
Run the task 'save /home/ directory' every 3h15 of system up time.
and, of course, in order to make it really useful, the time remaining
until next execution is saved each time the system is stopped. You can
also say:
run that command once between 2am and 5am
which will be done if the system is running at any time in this
interval.
Fcron also includes a useful system of options, which can be applied
either to every lines following the declaration or to a single line.
Some of the supported options permit to:
* run jobs one by one (fcrontab option serial),
* set the max system load average value under which the job should be
run (fcrontab option lavg),
* set a nice value for a job (fcrontab option nice),
* run jobs at fcron's startup if they should have been run during
system down time (fcrontab option bootrun),
* mail user to tell him a job has not run and why (fcrontab option
noticenotrun),
* a better management of the mailing of outputs ...
1.1.2. License
Fcron is distributed under GPL license (please read the license in the
gpl file).
1.1.3. Requirements
* a Linux/Unix system
Fcron should work on every POSIX system, but it has been developed
on Mandrake Linux (so it should work without any problems on
Redhat).
Fcron has been reported to work correctly on:
+ Linux Mandrake
+ Linux Debian 3.0
+ LFS
(take a look at the Beyond LFS book to find the installation
informations).
+ FreeBSD 4.2
+ OpenBSD 2.8
+ NetBSD 2.0
+ Darwin/MacOS-X
+ Solaris 8
+ AIX 4.3.3
+ HP-UX 11.11
but fcron should work on other OS as well. Yet, if you have
troubles making it work on a POSIX system, please contact me at
<fcron@free.fr>.
* a running syslog (or you won't have any log)
* a running mail system ( sendmail or postfix for example) (or users
will not able to read their jobs output)
* (optional) a PAM library.
* (optional) a system with a working SE Linux environment.
1.1.4. Compilation and installation
See the install file (either install.txt or install.html).
1.1.5. Configuration
See the fcron(8), fcrontab(5) and fcrontab(1) manpages.
1.1.6. Bug reports, corrections, propositions...
Please send me the description of any bug you happen to encounter
(with, even better, the corresponding patch -:) and any propositions,
congratulations or flames at <fcron@free.fr>
Please contact Russell Coker directly for problems about SE Linux
support at <russell@coker.com.au>, since he maintains this part of the
code.
_______________________________________________________________________
Prev Home Next
Fcron: how and why? Up How to install fcron

View File

@ -1,17 +0,0 @@
#Fcron documentation Fcron: how and why? Changes Todo
Copyright © 2000-2014 Thibault Godouet Fcron 3.2.0 Web page :
http://fcron.free.fr
_______________________________________________________________________
Fcron documentation
Prev Chapter 1. Fcron: how and why? Next
_______________________________________________________________________
1.4. Release notes: fcron 3.2.0
* Nothing special to be aware of in this release.
_______________________________________________________________________
Prev Home Next
Changes Up Todo

View File

@ -1,54 +0,0 @@
#Fcron documentation Fcron: how and why? Todo Using fcron ...
Copyright © 2000-2014 Thibault Godouet Fcron 3.2.0 Web page :
http://fcron.free.fr
_______________________________________________________________________
Fcron documentation
Prev Chapter 1. Fcron: how and why? Next
_______________________________________________________________________
1.6. Thanks
Uwe Ohse <uwe@ohse.de>
Corrected a bug concerning the signals, has reported security
issues.
Max Heijndijk <cchq@wanadoo.nl>
Has made the rpm packages.
Gabor Z. Papp <gzp@papp.hu>
Helped to correct some bugs in installation process and reported
various bugs.
Clemens Fischer <rabat@web.de>
Proofread docs, reported bugs, and made some propositions.
Henrique de Moraes Holschuh <hmh@debian.org>
Has worked on fcron's integration in Linux Debian system,
reported bugs and corrected some of them, made some
propositions.
Thomas Whateley <thomas@whateley.net>
Has done a big part of Solaris port, implemented the fcron.conf
file, and Vixie crontab format support.
Guy Geens <ggeens@iname.com>
Fixed a nasty bug in goto_non_matching() which caused an endless
loop (midmonthly jobs executed after the 15th of the month).
Patrick Ohly <Patrick.Ohly@gmx.de>
Added fcron's option -y, -o and -l, and fcrontab's stdout and
volatile, in order to run fcron from time to time in foreground,
for instance in a ppp-up script.
Russell Coker <russell@coker.com.au>
Helped me to secure fcron, make code clearer, and he wrote the
patch for SE Linux support.
Alain Portal
Initial French translation of the manual pages.
_______________________________________________________________________
Prev Home Next
Todo Up Using fcron ...

View File

@ -1,99 +0,0 @@
#Fcron documentation Fcron: how and why? Release notes: fcron 3.2.0
Thanks
Copyright © 2000-2014 Thibault Godouet Fcron 3.2.0 Web page :
http://fcron.free.fr
_______________________________________________________________________
Fcron documentation
Prev Chapter 1. Fcron: how and why? Next
_______________________________________________________________________
1.5. Todo
Here are some things that should be done ... Note that some of these
entries are just some ideas, which may be done in the long run.
If you see something you'd really like to see implemented here, feel
free to send me a mail: it may make me move it to the top of my to-do
list ;) .
If you plan to help me, please send a mail at <fcron@free.fr> to
prevent two people from doing the same thing. You can send me some
propositions as well, or ask me to move something to the top of the
heap ;) .
1.5.1. High priority
* Option to compile and install from git sources without generating
the doc
* register in OS suspend/hibernate mechanism to stop fcron when going
to sleep and start it again when resuming from sleep (see FAQ
entry).
*
1.5.2. Low priority
* Add unit tests using some unit-test framework (turn the tests/*
code into unit tests)
* For environment settings, make a var substitution.
* add a mailsubject option, for custom mail subjects (for instance,
in case of a job containing something secret -- password, etc -- in
the command line).
* Use directory notifications (FAM) / inotify, and support a fcrontab
and a cron.d as Vixie cron does (directly included in fcron itself,
not thanks to a script as now). However the parsing work is done by
fcrontab, and should probably keep on being done by fcrontab for
security and stability reasons: have fcron call fcrontab to do that
job?
* could be worth checking fcron for memory leaks using specialized
library (just in case...)
* option to put a maximum limit on the execution time of a task +
terminate it if not finished yet + send email to let the user know
* setting to limit the number of jobs of a single user in the
serialq/lavgq to X jobs + make sure root always has Y slots that it
can use in those queues (i.e. number of slots used by root + number
of free slots >= Y)
* Test (and use ?) docbook2x-man -- xlstproc ? cf
http://antoine.ginies.free.fr/docbook/ch09.html
* find way to have the non translated pages of the French translation
be updated automatically (changes, todo, etc -> copied from the
English doc)
* add a return code for jobs which would mean that they should not be
run again (in case of an error, etc...).
* PAM support (included in fcron, but needs more tests by people
using PAM - not implemented in fcrondyn: is it needed in fcrondyn
anyway?)
* support for per user serial queue (especially for root)
1.5.3. Ideas
* add a system of modules: at startup, fcron loads some modules (.so
files). Then, when fcron should run the job, it calls a function of
the module, and let it manage the job (threads?). (do linux
dlopen(), etc exist on other systems? - yes: thanks Harring ;)
dlopen exists on all POSIX system - even windoze - abait it does
not use the same insterface of function calls. But it can be easily
implemented to port to another system.).
* (related to the system of modules? create a kind of dependencies?)
Add a way to run a job only if a command returns true. It would
permit, for instance, to run some jobs on a laptop only if it is on
AC power.
and depending on the return value of the command, cancel the
execution, or wait x seconds before trying again, etc. In this
case, needs change the way the jobs are queued?
* add an option/module to prevent fcron from running a job if the
system is running on battery (anacron does it?)
* Add a way to stop a job (SIGSTOP) if the lavg gets to high, and
restart it (SIGCONT) when the lavg has decreased.
* Add a timeout for task completion: if a task takes more than a
specified timeout, then start another script with the initial task
PID as argument. That would allow a kill with different signals
(-HUP, -TERM -STOP, .... or any other action like sending a mail to
sysadmin to alert him/her that a task is taking too much time and
that he has to have a look at it.) (add an option to specify the
cmd, and combine w/ option until)
_______________________________________________________________________
Prev Home Next
Release notes: fcron 3.2.0 Up Thanks

Some files were not shown because too many files have changed in this diff Show More