Managing time-triggered events with Zeit


© Photo by Matthew Smith on Unsplash

© Photo by Matthew Smith on Unsplash

Article from Issue 261/2022

Zeit offers a graphic front end for the crontab and at tools, making it easier to manage the time-controlled execution of programs, alarms, and timers.

When it comes to managing the time-controlled execution of programs, you can use the entries in the /etc/crontab file (crontab) for repetitive tasks scheduled at regular intervals, or you can use the at command for a one-time action.

While at uses a kind of order book that stores the commands to be executed at a scheduled time, cron works somewhat differently. The crontab contains the entries for the whole system, while the files in /var/spool/cron/crontabs/ contain user-specific entries. Each line in the crontab fully describes a single job. Care must be taken when specifying the jobs because of the entry format's fairly arcane syntax. You can learn this syntax, but it is by no means a trivial task. If you have an LPIC-1 certificate, you will be familiar with the entry format.

Despite care and attention, you may find out that jobs fail to start or are executed at the wrong time. A graphical user interface (GUI) can help reduce errors, even for experienced users. However, several earlier attempts at a suitable GUI for time-controlled calls (e.g., KCron, Kcrontab, CroMagnon, Gnome Schedule [1], Gnome Task Scheduler [2], and VCron) have fallen short with development coming to a standstill.

Zeit [3], a graphic front end for at and crontab, promises to remedy this situation and make managing time-triggered events easier. In development since 2015, Zeit is now considered stable for use and offers both English and Russian versions.


I tested Zeit v0.6.0 on Debian 11 "Bullseye" without any problems. Currently, Zeit is not included in the official Debian and Ubuntu package sources. However, you can get it via the developer's GitHub repository [4] or an Ubuntu PPA [5].

You have a few options for installing Zeit. You can add the PPA repo by typing apt-add-repository and installing the packages with the package manager (Listing 1). Because this option is not available on Debian, I took the alternative route of deploying the zeit package provided by the developer. After grabbing the package from the project site, I deployed it to the test system using dpkg. There were no dependency problems on other packages. If the package libnotify-bin is missing, you can use apt for the install. When unpacked, Zeit uses about 450KB of disk space.

Listing 1

Installation via a PPA

$ sudo add-apt-repository ppa:blaze/main
$ sudo apt update
$ sudo apt install zeit

If there are no ready-made packages available for your choice of distribution, you can download the source code from the GitHub repository and compile it. I did not test this step, but there is nothing to prevent you from doing so, if necessary. Zeit uses the Qt libraries; you will need to install the associated development packages on your system to build the software.

User Interface

After installation, you'll find Zeit in the Tools section of your application menu. If you use the command-line approach, you can simply call the program by typing zeit. Zeit loads with a clear-cut, functional user interface without any bells and whistles.

In the version I used, the four menu headers are Zeit, View, Tools, and Help. Below the menubar you will find six buttons, some of which you cannot enable until you have selected a job from the list in the main window below.

Using the six buttons, you can add, copy, modify, or delete jobs or commands, and control alarms and timers (Figure 1). Right-clicking on a job opens a context menu where you can Toggle, copy, modify, and delete the selected jobs. Please note that Zeit immediately transfers all changes to the respective crontab or at table. I recommend creating a backup copy of your crontab and at table up front to avoid any nasty surprises later.

Figure 1: Zeit with the daily lunch reminder.

Operating Modes

Zeit launches with normal user authorizations and does not require root access. You can initially only manage your own time-controlled jobs. For system-related jobs, you need to check the box in View | System Mode or press Ctrl+S. You can use the same sequence to switch back to the normal user mode later.

You can also choose Periodic Tasks for crontab, Nonperiodic Commands (one-time jobs) for at, and Environment Variables for cron. You can configure this in the View menu or using the respective Ctrl+P, Ctrl+N, and Ctrl+E keyboard shortcuts. The button labels change to Task, Command, or Variable to indicate this, and you can access the content of the corresponding dialog box for fine-tuning.

The commands for at may require the retroactive installation of the tool; otherwise, your attempts to set up one-time jobs will fail. (You don't have to do this for crontab because cron is typically an essential part of any Linux system and usually installed from the outset.) In Debian GNU/Linux, the package is simply named at. You can install it from the standard package sources using apt.

Buy this article as PDF

Express-Checkout as PDF
Price $2.95
(incl. VAT)

Buy Linux Magazine

Get it on Google Play

US / Canada

Get it on Google Play

UK / Australia

Related content

comments powered by Disqus
Subscribe to our Linux Newsletters
Find Linux and Open Source Jobs
Subscribe to our ADMIN Newsletters

Support Our Work

Linux Magazine content is made possible with support from readers like you. Please consider contributing when you’ve found an article to be beneficial.

Learn More