123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119 |
- <!doctype html>
- <html>
- <head>
- <meta charset="utf-8">
- <meta name="viewport" content="width=device-width, initial-scale=1" />
-
- <link rel="stylesheet" href="../style.css#" type="text/css" />
- <title>cron</title>
- <script>
- function findLang(){
- let href = location.href;
- for(let i=href.length-1;i>0;i--){
- if('/'==href.charAt(i) && '/'==href.charAt(i-3))
- return i;
- }
- return 0;
- }
- function nav2(page){
- let i = findLang();
- location.href = location.href.substring(0,i+1)+page;
- }
- function nav2Lang(lang){
- let i = findLang();
- let href = location.href;
- location.href = location.href.substring(0,i-2)+lang+location.href.substring(i);
- }
- </script>
- </head>
- <body>
- <header class='header'>
- <a class="logo" href="javascript:void(0)" onclick="return nav2('index.html#')">Home</a> <a class="logo" href="javascript:void(0)" onclick="return nav2('tags/index.html#')">Tags</a>
-
-
- <a class="logo" href="javascript:void(0)" onclick="return nav2Lang('zh')">简体中文</a>
-
-
- <nav>
- </nav>
- </header>
- <br />
-
- <div class="container">
- <h1 class="title">cron
- <br>
- <span class="subtitle"></span>
- </h1>
- <ul class="tags">
-
- </ul>
- <h4 id="crontab-with-enhanced-semantics">crontab (with enhanced semantics)</h4>
- <p>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.</p>
- <p>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.</p>
- <p>The sixth field in crontab file could be in the format of <a href="../links/index.html#">internal links</a>. 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.</p>
- <p>To make crontab more powerful, we changed the semantics as follows:<br>
- 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 <span style="color:red">both</span> fields matche the current time.</p>
- <p>Note (the original crantab semantics):<br>
- 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.</p>
- <h5 id="make-crontab-persist-after-os-rebooting">make crontab persist after OS rebooting</h5>
- <p>If uweb browser was launched at least once after rebooting, the crontab jobs are scheduled as normal.</p>
- <p>To keep crontab take effect without launching uweb browser once:</p>
- <ul>
- <li>Install the "com.termux.boot" and "com.termux" Apps.</li>
- <li>Create an executable file in termux under the folder "~/.termux/boot/" containing the two lines:<br>
- #!/data/data/com.termux/files/usr/bin/sh<br>
- am broadcast -n info.torapp.uweb/.AlarmReceiver --es uweb.line ""</li>
- <li>Launch "com.termux.boot" once.</li>
- </ul>
- <h4 id="tcron">tcron</h4>
- <p>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.</p>
- <p>Use tcron (<a href="i:0bhttps://fastly.jsdelivr.net/gh/torappinfo/uwebjs/bin/tcron.tgz">Click to install</a>) with "default.rc" or "default.rc2".</p>
- <p>usage: tcron logfile command hours [timezone delay_sec elsecommand]<br>
- execute "command" during time interval once.<br>
- where logfile modification time must be updated if "command" runs successfully.</p>
- <p>hours: If positive, then each day is divided into multiple intervals (unit: hour), and in each interval, the "command" runs only once.<br>
- If negative, then the unit is minute.<br>
- hours could be also in "hh:mm-hh:mm,..." format. Ex. "6:00-8:30,11:00-13:00,5:30-6:30".<br>
- timezone: an integer, default to be "8" for Beijing China (UTC+8). "0" for Greenwich UK (UTC+0).<br>
- delay_sec: execute "command" after "delay_sec" seconds.<br>
- elsecommand: executed whenever "command" not run.</p>
- <p>ex:<br>
- set PATH=/system/bin:/data/data/info.torapp.uweb/files/bin<br>
- #Empty the folder "baidu" every 30 days.<br>
- tcron /sdcard/b "rm -rf /sdcard/baidu/*;toybox touch /sdcard/b" 720</p>
- <p><a target="_self" href="i:0hdefault.rc:../searchurl/txt/default.rc">Install example default.rc file for termux</a></p>
- </div>
- <p>Last Modified: 27 August 2024<br>
- update ebrowserreadme.md<br>
- <pre></pre>
- </p>
- <script id='jsgiscus'
- src='https://giscus.app/client.js'
- data-repo="torappinfo/uweb"
- data-repo-id="MDEwOlJlcG9zaXRvcnkzMDIyMDU3MjE="
- data-category="Announcements"
- data-category-id="DIC_kwDOEgNLGc4CQjsh"
- data-mapping="title"
- data-strict="0"
- data-reactions-enabled="1"
- data-emit-metadata="0"
- data-input-position="top"
- data-theme="light"
- data-lang="en"
- data-loading="lazy"
- crossorigin="anonymous" async>
- </script>
- <footer class="site-footer">
- <div class="container">
- © 2018-2024 Richard H. Cao
- </div>
- </footer>
- <!-- This document is licensed under the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is available at <https://www.gnu.org/licenses/>. -->
- </body>
- </html>
|