diff --git a/example/aitf-clean-temporal b/example/aitf-clean-temporal
index e4898aef07daf956c4787d7fe63c9292aa71acbd..914e0ac9b2b417e0dcd61156e5da08ba845619a4 100755
--- a/example/aitf-clean-temporal
+++ b/example/aitf-clean-temporal
@@ -25,6 +25,7 @@ import logging
 import aitf.ancil
 import aitf.conlog
 import csppfetch
+from csppfetch.exclusivelockfile import PIDLockFile
 
 
 def parse_args():
@@ -58,7 +59,7 @@ def parse_args():
     TEMPORAL_CACHE_ENV = 'CSPP_GEO_AITF_TEMPORAL_CACHE'
     TEMPORAL_DEFAULT = os.environ.get(TEMPORAL_CACHE_ENV, TEMPORAL_INVALID)
     ap.add_argument("temporal-dir", metavar = "DIR", nargs='?',
-        description = f'temporal directory to clean (default: environment variable {TEMPORAL_CACHE_ENV}',
+        help = f'temporal directory to clean (default: environment variable {TEMPORAL_CACHE_ENV}',
         default=TEMPORAL_DEFAULT)
 
     subgroup = ap.add_mutually_exclusive_group()
@@ -106,12 +107,16 @@ def main():
     if not args.keep_old:
         from datetime import datetime
         stats = csppfetch.CleaningStats()
-        csppfetch.delete_old_files(args.temporal_dir+"/L1b", args.oldest, stats)
-        csppfetch.delete_old_files(args.temporal_dir+"/L2",  args.oldest, stats)
-        if args.want_summary:
-            sys.stdout.write('Expiring Old Data Summary\n')
-            sys.stdout.write(f'    Removed {stats.num_deleted} files totaling {stats.size_deleted} bytes\n')
-            sys.stdout.write(f'    Kept {stats.num_kept} files totaling {stats.size_kept} bytes\n')
+        with PIDLockFile(args.temporal_dir+"cleaning-process.pid") as has_lock:
+            if has_lock:
+                csppfetch.delete_old_files(args.temporal_dir+"/L1b", args.oldest, stats)
+                csppfetch.delete_old_files(args.temporal_dir+"/L2",  args.oldest, stats)
+                if args.want_summary:
+                    sys.stdout.write('Expiring Old Data Summary\n')
+                    sys.stdout.write(f'    Removed {stats.num_deleted} files totaling {stats.size_deleted} bytes\n')
+                    sys.stdout.write(f'    Kept {stats.num_kept} files totaling {stats.size_kept} bytes\n')
+            else: # No lock
+                sys.stdout.write("Cleaning skipped; another process is already doing so.")
 
     return 0