De dienstregeling van het systeem - cron - is een Unixprogramma, dat automatisch wordt gestart als het systeem opstart. Elke minuut worden de zogeheten crontabs bekeken om te zien of er een taak moet worden uitgevoerd. Iedere gebruiker van het systeem en het systeem zelf kunnen een (1) crontab hebben. Via CronniX kun je al deze crontabs een voor een bewerken.
Laten we eens kijken naar de gebruikersinterface van CronniX:
Het bovenste venster is het hoofdvenster van CronniX. Het toont regel voor regel alle taken die deze crontab bevat. Het "Huidige crontab"-icoon in de knoppenbalk laat zien welke crontab wordt getoond. Als de knoppenbalk is verborgen, kun je deze informatie in de titel van het venster zien. Bij het opstarten van CronniX wordt de crontab van de huidige gebruiker ingelezen en weergegeven.
Je kunt de knoppenbalk aan je eigen wensen aanpassen. De standaardset bevat de knoppen: Nieuw, Verwijder, Open, Bewaar, Huidige crontab, en Wijzig. Alle knoppen in de knoppenbalk, behalve 'Huidige crontab', hebben hun equivalent in het programmamenu. Dit is wat ze doen:
Nieuw (Cmd-N) | Maak een nieuwe taak voor deze crontab met behulp van het "Nieuwe taak / Wijzig taak"-venster. |
Verwijder | Kan alleen worden gebruikt als er een taak is geselecteerd. Verwijdert de geselecteerde taak. |
Open (Cmd-O) | Opent een andere crontab. Je hebt een (beheerders)wachtwoord nodig om toegang te krijgen tot de crontab van andere gebruikers. De systeemcrontab kan worden geopend (maar niet bewaard) zonder wachtwoord. |
Bewaar (Cmd-S) | Bewaart de huidige crontab. Deze crontab is nu onmiddellijk beschikbaar voor het systeem. |
Huidige crontab | Laat zien welke crontab wordt weergegeven. Bij de systeemcrontab staat hier "system". |
Wijzig | Opent het "Wijzig taak"-venster voor de geselecteerde taak. |
Start taak | Voert de geselecteerde taak onmiddellijk uit. |
Onder de knoppenbalk vind je de lijst met taken van de huidige crontab. De crontabvelden kun je wijzigen door er op te dubbelklikken. Kijk op de helppagina Crontab syntax voor informatie over de velden van een crontabtaak. Via de checkbox voor de regels kun je een taak activeren of deactiveren.
Er is een contextueel menu aanwezig voor taak-specifieke commando's. Klik met de rechter muisknop (Ctrl-klik voor een muis met een knop) op een taak om deze te selecteren en het contextuele menu weer te geven.
In versie 2.0 is er, onder de takenlijst, een informatieveld toegevoegd waarin je een taak van commentaar kunt voorzien. De scheiding tussen dit informatieveld en de takenlijst kan versleept worden om de grootte van het informatieveld te veranderen. Als je op een taak klikt wordt de bijbehorende informatie (zoals ingevoerd door de gebruiker) in het informatieveld getoond. De tekst die je in het informatieveld typt (of wijzigt) wordt samen met de betreffende taak bewaard.
Taken die door cron worden uitgevoerd, starten in een speciale omgeving die geen rekening houdt met aangepaste .cshrc of .login scripts (Als je niet het UNIXtype bent en niet weet waar ik het over heb, maak je dan geen zorgen). Als je de waarde van omgevingsvariabelen moet wijzigen, zoals bijv. MAIL, voor scripts die via cron worden gestart, moet je deze rechtstreeks in je crontab invoeren. Je doet dit door het omgevingsvariabelen-venster te activeren via het "Wijzig - Omg. variabelen" menu-onderwerp of de toetscombinatie Cmd-E.
Het omgevingsvariabelen-venster lijkt in veel opzichten op het hoofdvenster. Het heeft z'n eigen knoppenbalk met twee knoppen:
Nieuw (Cmd-N) | Maakt een nieuwe waarde voor een omgevingsvariabele. |
Verwijder | Alleen beschikbaar als er een variabele is geselecteerd. Verwijdert de geselecteerde variabele. |
Vanwege de consistentie (samenhang) van het programma kon ik de verleiding niet weerstaan om ook deze knoppenbalk aanpasbaar te maken. In de stijl van een oerdegelijk wiskundeboek: We laten het aan de gebruiker over om uit te vinden op hoeveel manieren je twee knoppen kunt rangschikken.
Je kunt de crontabs van andere gebruikers wijzigen door in het "Archief"-menu "Open voor gebruiker" te kiezen (toetscombinatie: Cmd-O). Als je een gebruikerscrontab wilt openen die niet van jezelf is, heb je hiervoor een beheerderswachtwoord nodig. CronniX zal je hierom vragen.
Er is ook een systeemcrontab die het toestaat systeemtaken te regelen, en niets te maken heeft met de crontabs van gebruikers. Deze is niet hetzelfde als root's crontab. Je kunt deze systeemcrontab bekijken door "Open systeemcrontab" te kiezen uit het "Archief"-menu of door "system" op te geven als gebruikersnaam bij het openen van een crontab van een andere gebruiker. Je kunt de systeemcrontab weliswaar bekijken, maar om hem te bewaren heb je een beheerderswachtwoord nodig.
CronniX ondersteunt drag-and-drop, wat erg handig kan zijn als je bijv. verscheidene AppleScripts aan je crontab wilt toevoegen. Sleep de bestanden vanuit je Finder en drop ze in je crontab.
Als je
Drag-and-drop handelingen veranderen alleen het 'Opdracht'-veld van een taak . Nieuwe taken worden toegevoegd met het schema van de standaardtaak en het bestandsgedeelte in het 'Opdracht'-veld.
Bestanden die op deze manier aan een crontab worden toegevoegd krijgen automatisch als voorvoegsel "/usr/bin/open". Dit is nodig om applicaties vanaf de opdrachtregel (prompt) te kunnen starten. Applicaties in deze context zijn programma's die gewoonlijk via een GUI (Grafische Gebruikers Interface) worden gestart door ze in de Finder te dubbelklikken. Shellscripts zouden dit voorvoegsel niet moeten krijgen, maar er wordt ook van je verwacht dat je deze niet dragt-and-dropt. (Wellicht is dit in de toekomst wel mogelijk.)
Je kunt het voorvoegsel "/usr/bin/open" gemakkelijk verwijderen door het "Wijzig taak"-venster te openen en de checkbox "Voorvoegsel /usr/bin/open" te deactiveren.
Drag-and-drop werkt ook met tekstselecties. Deze vervangen de opdracht als je ze op een bestaande taakregel dropt. Ze maken een nieuwe taak met de tekst als opdracht als je ze op een lege regel dropt.
Het menu-equivalent voor drag-and-drop van bestanden is "Voeg opdracht in" in het "Wijzig"-menu (toetscombinatie Cmd-I). Je krijgt dan een bestands-dialoogvenster te zien waaruit je een of meerdere bestanden kunt kiezen die aan de crontab moeten worden toegevoegd (gebruik de Cmd of Shift toets om meerdere bestanden tegelijk te selecteren) .
Als je niet de hele nacht op wilt blijven om te zien hoe je om 3 uur 's nachts geplande crontaak het doet, bestaat er de mogelijkheid om een opdracht onmiddellijk uit te voeren. De opdracht wordt uitgevoerd in een shell (tcsh) en het resultaat wordt in een venster weergegeven.
Ofschoon deze mogelijkheid erg handig is om een bepaalde taak te testen, is de tcsh-omgeving niet dezelfde als die van de cron-daemon. Soms kan tcsh bijv. een programma in het 'pad' hebben staan, terwijl de cron-daemon deze niet kan vinden. Als een taakopdracht echter in cron's omgeving wordt uitgevoerd, zullen er geen problemen zijn als je "Start taak" gebruikt.
Dit geldt alleen voor taken in je eigen crontab. Momenteel gebruikt de "Start taak"-opdracht niet het 'sudo'-commando om een taak te starten in de crontab van een andere gebruiker. Dus, als je de systeemcrontab bekijkt, zal de "Start taak"-opdracht niet veel uithalen. Tenzij je CronniX start als 'root', zul je geen bevoegdheid hebben om bijv. de onderhoudsscripts te starten. (Om het technisch helemaal correct te zeggen: je kunt de scripts wel starten, maar wat in de scripts staat, doet dingen waar een normale gebruiker geen permissie voor heeft, zodat uiteindelijk de uitvoering van de inhoud van de onderhoudsscripts zal mislukken.)
Versie 2.1 brengt ons het importeren en exporteren van crontabs. Je kunt de corresponderende menu-onderwerpen vinden in het "Archief"-menu. CronniX bewaart en leest de bestanden. De standaard extensie voor crontabs is "crontab" (dat had je vast niet gedacht, he). De opdrachten zijn "veilig": CronniX vraagt je of je eventuele veranderingen wilt bewaren voordat het een crontab importeert.
CronniX blijft voorlopig een programma waarin je een (1) crontab tegelijk kunt bewerken. Daarom is CronniX minder geschikt voor gegevensoverdracht tussen verschillende crontabbestanden. Omdat CronniX over een (1) venster beschikt zou het openen van een tweede crontab de inhoud van het huidige crontabvenster vervangen. Om van CronniX een multidocument-programma te maken, betekent voor mij voorlopig meer werk dan ik aan kan.
Let wel, na het importeren/exporteren blijft de gewijzigde crontab in zijn originele context behouden. Hij blijft dus verbonden aan je gebruikerscrontab, systeemcrontab, etc... Het is dus geen kloon van het bestand dat je hebt ingelezen of bewaard, maar de nieuwe inhoud van de crontab die je aan het bewerken was. De veranderingen hebben geen effect totdat je de crontab weer opnieuw bewaart (= installeert).