FLoM, Free Lock Manager, a free and open source lock manager
FLoM (Free Lock Manager) is an open source and free lock manager designed to
serialize and synchronize shell command execution.
Since version 0.9.0 it's a library to synchronize your own program too; basic
usage examples are in doc/examples directory (default installation path is
API documentation is distributed in directory doc/html/ (default installation
path is /usr/local/share/doc/flom/html/) and on the web at http://flom.sourceforge.net/
A list of implemented use cases is listed at this URL:
This is a brief list of the available features:
- synchronization of shell commands to avoid conflicts on files, directories,
- enforcement of command order execution to avoid one command is executed
before another one
- resource utilization leveling to avoid too many similar tasks run at the
- all the synchronization features are available inside a single host or in
a distributed environment using TCP/IP networking
- an autodiscovery feature is available to reduce deployment complexity in a
distributed environment (every node at any time may become a "server" for
the others node)
- easy API (Application Programming Interface) to synchronize your own
programs with shell executed flom commands. These languages have a ready
to use binding: C, C++, PHP, Python.
FLoM central documentation site is hosted by SourceForge Wiki: https://sourceforge.net/p/flom/wiki/Home/
* FLoM is free software: you can redistribute it and/or modify under the terms
* of GNU General Public License version 2 as published by the Free Software
* FLoM 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.
Note: libflom is the library distributed along with FLoM; it's free software:
you can redistribute it and/or modify under the terms of GNU Lesser
General Public License version 2.1 as published by the Free Software
Download the tarball from SourceForge: https://sourceforge.net/projects/flom/
and install FLoM using standard GNU build chain:
tar xvzf flom-X.Y.Z.tar.gz
sudo make install
if you are using a Red Hat derivative you will probably use
instead of "sudo make install".
Take a look to file INSTALL for more details.
to read man page and pick up Internet relevant URLs for FLOM project.
to perform package automatic tests.
NOTE: do *NOT* run tests on a system that's using flom because some tests
need to kill all FLoM running instances and this is not acceptable if
you are playing production workloads. DO USE A TEST SYSTEM!
NOTE: tests needs the system is NOT overloaded because they stick on timing
and timing breaks if the system is overloaded.
NOTE: FLoM must be installed with "sudo make install" before tests can
proceed (this is a library path issue...)
NOTE: if you are not interested in C++ API library support, specify
"--disable-cpp" at configure time; example:
NOTE: if you are not interested in PHP API library support, specify
"--disable-php" at configure time; example:
NOTE: if you are not interested in Java API library support, specify
"--disable-java" at configure time; example:
Issues related to multicast and internal Linux firewalling:
the easiest way is to completely disable the internal firewall with
systemctl stop firewalld
systemctl disable firewalld
service ipchains stop
service iptables stop
chkconfig ipchains off
chkconfig iptables off
If you cannot disable the firewall and you want to use FLoM autodiscovery
feature (IP multicast based), you will have to configure the internal
firewall allowing FLoM multicast packets.
If you need some help (usage tricks, hints, etc...) please post a message in
the forum: http://sourceforge.net/p/flom/discussion/
If you think you have discovered a bug, please open a ticket here:
If you avoided to send me an e-mail I would be happy: forum posts and tickets
can be seen by many people and I should not answer the same questions many
O.S. Feature Packages
Ubuntu Basic make gcc libglib2.0-dev pkg-config automake
Ubuntu C++ API g++
Ubuntu PHP API swig php5-cli php5-dev
Ubuntu Python API swig python-dev
Ubuntu 10.04 Java API openjdk-6-jdk
Ubuntu 12.04 Java API default-jdk (openjdk 6)
Ubuntu 14.04 Java API default-jdk (openjdk 7)
CentOS Basic gcc glib2-devel autoconf
CentOS C++ API gcc-c++
CentOS PHP API swig php-cli php-devel
CentOS Python API swig python-devel
CentOS 6.6 Java API java-1.6.0-openjdk* or java-1.7.0-openjdk*
CentOS 7.1 Java API