Sailcron

Rating: 
5
Your rating: None Average: 5 (15 votes)

Warning regarding SailfishOS upgrades:

to prevent any misbehavior of the cron daemon, please stop the daemon before starting any OS upgrade

 

Frontend for the cron scheduler. Makes it easy to view your schedules in a more friendly way.

Also gives the opportunity to fully manage crontabs of nemo and root. The usual warning: always be careful with root permissions. Disabling is achieved by adding a specific comment string in the cron entry.

Displayed commands can be replaced by a more meaningful text.

Using cron-descriptor for the conversion of cron expressions into human readable strings.

Using python-crontab for the cron timestring syntax check.

Needs vixie-cron or cronie as cron daemon, which can be found in my repo.

Loading a large crontab can cause some unresponsiveness.

If you want to play more with the crontab syntax, you can have a try here: http://www.corntab.com/pages/crontab-gui

Why use cron as a scheduler?

  • Stable, simple and well known
  • Low on resources and a wakelock only every minute does not really effect battery usage
  • Systemd timers are not accurate, because they are effected by sleep states
  • Timed-qt5 (the "native" scheduling) would have been another option. I worked with something similar on Maemo, which I liked, but was missing documentation and implemented features

 

Swedish translation: eson

Sources can be found on github

 

Screenshots: 

Keywords:

Application versions: 
AttachmentSizeDate
File harbour-sailcron-0.4-2.armv7hl.rpm162.14 KB25/04/2020 - 01:24
File harbour-sailcron-0.4-2.i486.rpm164.37 KB25/04/2020 - 01:24
File harbour-sailcron-0.4-3.armv7hl.rpm162.04 KB29/09/2020 - 23:15
File harbour-sailcron-0.4-3.i486.rpm164.88 KB29/09/2020 - 23:15
File harbour-sailcron-0.4-4.armv7hl.rpm161.62 KB19/10/2020 - 18:07
File harbour-sailcron-0.4-4.i486.rpm164.45 KB19/10/2020 - 18:07
File harbour-sailcron-0.4-5.armv7hl.rpm137.81 KB05/02/2021 - 01:45
File harbour-sailcron-0.4-5.i486.rpm140.7 KB05/02/2021 - 01:45
File harbour-sailcron-0.4-5.aarch64.rpm139.48 KB15/05/2021 - 01:19
File harbour-sailcron-0.5-1.i486.rpm141.11 KB14/11/2021 - 12:15
File harbour-sailcron-0.5-1.aarch64.rpm139.34 KB14/11/2021 - 12:15
File harbour-sailcron-0.5-1.armv7hl.rpm137.75 KB14/11/2021 - 12:15
File harbour-sailcron-0.6-1.aarch64.rpm135 KB04/06/2022 - 13:04
File harbour-sailcron-0.6-1.i486.rpm136.43 KB04/06/2022 - 13:04
File harbour-sailcron-0.6-1.armv7hl.rpm133.33 KB04/06/2022 - 13:04
File harbour-sailcron-0.7-1.aarch64.rpm135.29 KB06/06/2022 - 15:57
File harbour-sailcron-0.7-1.i486.rpm136.75 KB06/06/2022 - 15:57
File harbour-sailcron-0.7-1.armv7hl.rpm133.66 KB06/06/2022 - 15:57
Changelog: 
  • 0.7-1 Special cron entries now translatable
  • 0.6-1
    • Do not notify cronline is ok at save
    • Added midnight and anually as special cron entries
  • 0.5-1
    • Opt out of sailjail
    • Switch from popup messages to smaller banner
  • 0.4-5 Changes in detecting running cron because Jolla installed yet more crippling busybox tooling in favor of gnu packages in SFOS 4.0.
  • 0.4-4 Do not assume nemo to be the default user
  • 0.4-3 Fix for SFOS 3.4
  • 0.4-2
    • Yet another fix for SFOS 3.3.0: writing failed as Jolla moved to busybox base64 command
  • 0.4-1
    • Fix for SFOS 3.3.0 so custom descriptions are displayed again
    • Small change in notification
  • 0.3-1
    • Load custom texts async for faster loading
    • Minor layout changes
  • 0.2-1
    • updated python-crontab and cron-descriptor
    • No longer require vixie-cron as a dependency
  • 0.1-21
    • Added button to cleanup orphaned custom texts
    • Upgraded python-crontab to 2.3.7
    • Latest changes from cron-descriptor
  • 0.1-20
    • Now support @reboot,@weekly etc.
    • Updated python-crontab and cron descriptor to latest version
  • 0.1-18
    • Cron descriptor updated to 1.2.9
    • Python-crontab updated to 2.2.3
  • 0.1-17
    • Increased max length cron line
    • Cron descriptor updated to 1.2.8
    • Python-crontab updated to 2.2.1
  • 0.1-16 Implemented python call_sync workaround (credits otsaloma) due to bug in 2.1.0.x
  • 0.1-15 Updated swedish translation
  • 0.1-14
    • Edit menu selectable directly from detailspage
    • Synced python-crontab to upstream 2.1.1
    • Cron syntax checker will now fail if cron range is backwards
  • 0.1-13 Settingspage no longer a dialog page (with cancel/accept)
  • 0.1-12 fixed introduced bug that would insert invalid cron entry
  • 0.1-11
    • The input "*/number" was not correctly passed
    • Limit accepted input characters
    • Added new python module for actual cron string checking
  • 0.1-10
    • Increased max length of input fields
    • Included upstream fix for cron-descriptor
  • 0.1-9
    • Updated Swedish
    • Added Dutch language
  • 0.1-8
    • No auto capitalisation in command field
    • Create custom names for execution string
  • 0.1-7 Fixed not showing cron entries with '=' sign
  • 0.1-6 Fixed weekday numbers explanation
  • 0.1-5 Fix: pipe symbol was not handled correctly
  • 0.1-4
    • Included cron-descriptor upstream change for week/month localizations
    • Swedish translation updated
  • 0.1-3
    • Fix: ignoring settings in crontab led to corruption
    • Manage crontab daemon from settings page
  • 0.1-2 Fix: try to ignore settings done in crontab
  • 0.1-1
    • Added Swedish translation
    • Localized days of week in cron-descriptor part
  • 0.1-0 Initial version

Comments

PawelSpoon's picture

The corntab link leads to nowhere i think

ade's picture

Yeah, it moved from launchpad to github to gitlab in a short period of time. But now it should be up-to-date again.

olf's picture

WRT the "warning regarding SailfishOS upgrades":
Is there an easy way to disable Sailcron from the command line?

ade's picture

It's not Sailcron but the cron deamon (as root): systemctl stop cron

olf's picture

 Thanks (& sorry for asking without thinking).

Louis's picture

 

Thanks for this great app.

Any reason for using cron over systemd timers? :)

ade's picture

The answer to your question has been mostly answered over here, in a comment by Self_Perfection, followed by my reaction.
I did put some more reasoning in the description.

manisblack's picture

Hello and thank you for this application but unfortunately it no longer works on SailfishOS 2.1.0.9
This message is a translation of translate.google

Here is the return of my terminal

[nemo@Sailfish ~]$ harbour-sailcron
[D] unknown:0 - Using Wayland-EGL
[D] :145 - pretty_cron module is now imported
[W] unknown:194 - file:///usr/lib/qt5/qml/Sailfish/Silica/DialogHeader.qml:194: TypeError: Cannot read property 'backIndicatorDown' of null
[W] unknown:189 - file:///usr/lib/qt5/qml/Sailfish/Silica/DialogHeader.qml:189: TypeError: Cannot read property 'backIndicatorDown' of null
[W] unknown:247 - file:///usr/lib/qt5/qml/Sailfish/Silica/DialogHeader.qml:247: TypeError: Cannot read property 'forwardIndicatorDown' of null
[W] unknown:242 - file:///usr/lib/qt5/qml/Sailfish/Silica/DialogHeader.qml:242: TypeError: Cannot read property 'forwardIndicatorDown' of null
[D] :325 - pretty_cron module is now imported
[D] :328 - valid_cron module is now imported
[D] onError:334 - python error: Not a parameter list in call to valid_cron.validate_cron:
[W] unknown:85 - file:///usr/share/harbour-sailcron/qml/pages/AddPage.qml:85: Error: Cannot assign [undefined] to bool

ade's picture

I am aware of this, hitting the same bug as Otsaloma reported (https://together.jolla.com/question/156736/2109-pyotherside-call_sync-br...). As I already implemented his workaround for now, I will release a new version.

manisblack's picture

Thanks for this update

ade's picture

That's a cool site, I have visited it earlier. Even considered creating a similiar interface, but in the end decided to keep it simple and use text input fields.
In combination with some explanation above the input fields and all the info about cron to be found on the internet, people should manage. And entering values like this keeps people closer to the actual cron syntax.

But this side can be a good exercise/validation site, I did add it to the description here.

eson's picture

Maybe this link could generate some new cron users... :)

http://www.corntab.com/pages/crontab-gui

cizi's picture

Hello, thanks for this application. But can you give me a hint? I tried to added an entry but no luck. I filled all the fields, verified the entry and confirmed save but no line appeared for user nemo in list. What do I wrong? 

ade's picture

hi cizi,

You seem to be right, I can modify entries, but new ones are not saved. I don't know what the issue is, but I will fix it asap.

cizi's picture

Thanks for answer and solution as well! But no worries, no rush.

ade's picture

should be solved now. I must be more careful with pasting ;-)

You will probably have some invalid crontab entries; you can remove them using "crontab -e" on the terminal.

objectifnul's picture

If I enter “0,1,3-6” for the 'day of the week' field, the syntax analyzer says “ok” but the task is displayed with “error in settings” (too bad, as I wanted to set an auto off task for every day except Tuesday to allow the weekly btrfs balance)
Btw “0,1,3,4,5,6” is too long and not accepted.

ade's picture

I will increase the input length of the fields so e.g. “0,1,3,4,5,6” will fit.

Your cronjob should already work as scheduled, but it looks like it can't display the combination of separate weekdays and a range of weekdays. I will make a bugreport for the person who made the module for the human readable translations.

Thanks for reporting.

ade's picture

The cron-descriptor part is targeted for describing the cron rule, not for checking the validity of the string.
That's why I also included another module, python-crontab. This can validate the string. Works pretty good, but still accepts '6-3' as day of week. I may report that.
Furthermore I limited the accepted input characters.

objectifnul's picture

Note that “3-1” is accepted. The descriptor displays “From Wednesday to Monday”. That's fine.

ade's picture

That's another clever approach :-)

Edit: with version 0.0.1-10 both issues should be solved

objectifnul's picture

After checking, "3-1" is actually accepted and correctly translated into human readable language, but not applied: the job is not launched.

"0,1,3,4,5,6" is OK after last update (v0.1-10)

ade's picture

Looks like cron in general can not cope with ranges that start with a higher value than it ends.

I will see if I can do something with that in the cron validation.

localhost's picture

Seems I can't install this app on SailfishOS 2.0.1.7 (early access). I'm getting an repo-not-found error for libpython3_4m1_0-3.4.3-1.6.3.armv7hl.rpm.

Any suggestions on getting it installed?

ade's picture

The terminal command "pkcon refresh" first might help.

objectifnul's picture

The "day of the week" setting says "Range from 0 to 7 (...) Sunday is 0".

So, Monday is 1 etc until Saturday is 6 I guess. But what is 7?

ade's picture

I didn't notice, but you are right, it should be 0 to 6.

Btw the cron syntax validator would not accept the value of 7.

Thanks for informing, will correct this.

objectifnul's picture

Too bad. I thought you invented the three days week-end.

ade's picture

If only I could :-)

Uploaded version 0.0.1-6 with corrected text.

Self_Perfection's picture

I don't like this approach. Systemd timers are known to not activate while a phone in deep sleep, is using cron reliable enough? Are we sure, that cron does not increase amount of wakes from sleep and therefore does not affect running time on one charge much? Anyway this approach requires installation of one more packet and running one more daemon in background, and RAM is always scarce on Jolla.
We can use native system timed service for running scheduled tasks. And I successfully use it for running several scripts on schedule. But I had to create these events with CLI interface timedclient-qt5. In the process of creating these tasks I've discovered that timedclient-qt5 is rather buggy and does not support all timed features, so eventually I modified ~/.timed/events.data with text editor to get what I want.
IMHO UI for managing timed events would be much more useful.

 


 

 


 

Pages