# cron

#### crontab (with enhanced semantics)

Some battery restrictions on android 13+ may disallow new instance of uweb browser by alarm events. Users can either keep uweb instance (no battery consumption) or remove the restriction for uweb.

For performance, the file "crontab" uses single space as field separator. Letters are not suppored currently. So use "1" for "January" and 2 for "Tuesday" etc.

The sixth field in crontab file could be in the format of internal links. Specifically, "c:" to execute the following commands in termux and "!" to execute commands directly. If the sixth field is not in any of above formats, then the field will appear as the message of alarm clock.

To make crontab more powerful, we changed the semantics as follows:
The day of a command's execution can be specified by two fields — day of month, and day of week. The command will be run when both fields matche the current time.

Note (the original crantab semantics):
The day of a command's execution can be specified by two fields — day of month, and day of week. If both fields are restricted (i.e., aren't *), the command will be run when either field matches the current time. For example, "30 4 1,15 * 5" would cause a command to be run at 4:30 am on the 1st and 15th of each month, plus every Friday.

##### make crontab persist after OS rebooting

If uweb browser was launched at least once after rebooting, the crontab jobs are scheduled as normal.

To keep crontab take effect without launching uweb browser once:

- Install the "com.termux.boot" and "com.termux" Apps.
- Create an executable file in termux under the folder "~/.termux/boot/" containing the two lines:
  #!/data/data/com.termux/files/usr/bin/sh
  am broadcast -n info.torapp.uweb/.AlarmReceiver --es uweb.line ""
- Launch "com.termux.boot" once.

#### tcron

With the option "custom file handling" enabled, "default.rc" runs as shell script at uweb launching time and "default.rc2" runs whenever uweb becomes foreground.

Use tcron (Click to install) with "default.rc" or "default.rc2".

usage: tcron logfile command hours [timezone delay_sec elsecommand]
execute "command" during time interval once.
where logfile modification time must be updated if "command" runs successfully.

hours: If positive, then each day is divided into multiple intervals (unit: hour), and in each interval, the "command" runs only once.
If negative, then the unit is minute.
hours could be also in "hh:mm-hh:mm,..." format. Ex. "6:00-8:30,11:00-13:00,5:30-6:30".
timezone: an integer, default to be "8" for Beijing China (UTC+8). "0" for Greenwich UK (UTC+0).
delay_sec: execute "command" after "delay_sec" seconds.
elsecommand: executed whenever "command" not run.

ex:
set PATH=/system/bin:/data/data/info.torapp.uweb/files/bin
#Empty the folder "baidu" every 30 days.
tcron /sdcard/b "rm -rf /sdcard/baidu/*;toybox touch /sdcard/b" 720

Install example default.rc file for termux

Last Modified: 27 August 2024
update ebrowserreadme.md