snipt

Ctrl+h for KB shortcuts

Bash

add task to cron (with duplicate check)

# backup current cron jobs to tmp file
task="/path/to/some/task"
timing="0 0 * * *"
tmpCron=$(mktemp)
crontab -l > "$tmpCron"

# check if update repo already exists in current cron
if grep "$task" "$tmpCron" 1>/dev/null
then
	echo "$task cron task, already exists, leaving cron unchanged"
else
    # append tasks to cron
    echo "$timing $task" >> "$tmpCron"
    
    # update cron
    crontab "$tmpCron" || { echo "failed to update cron, exiting..."; exit 1; }
fi

# delete tmp file
rm "$tmpCron"
https://snipt.net/embed/84aa3b690511f85dd6b735dc39eb567e/
/raw/84aa3b690511f85dd6b735dc39eb567e/
84aa3b690511f85dd6b735dc39eb567e
bash
Bash
20
2019-06-20T03:00:08
True
False
False
Oct 18, 2015 at 04:16 AM
/api/public/snipt/141783/
add-task-to-cron-with-duplicate-check
<table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><a href="#L-1"> 1</a> <a href="#L-2"> 2</a> <a href="#L-3"> 3</a> <a href="#L-4"> 4</a> <a href="#L-5"> 5</a> <a href="#L-6"> 6</a> <a href="#L-7"> 7</a> <a href="#L-8"> 8</a> <a href="#L-9"> 9</a> <a href="#L-10">10</a> <a href="#L-11">11</a> <a href="#L-12">12</a> <a href="#L-13">13</a> <a href="#L-14">14</a> <a href="#L-15">15</a> <a href="#L-16">16</a> <a href="#L-17">17</a> <a href="#L-18">18</a> <a href="#L-19">19</a> <a href="#L-20">20</a></pre></div></td><td class="code"><div class="highlight"><pre><span></span><span id="L-1"><a name="L-1"></a><span class="c1"># backup current cron jobs to tmp file</span> </span><span id="L-2"><a name="L-2"></a><span class="nv">task</span><span class="o">=</span><span class="s2">&quot;/path/to/some/task&quot;</span> </span><span id="L-3"><a name="L-3"></a><span class="nv">timing</span><span class="o">=</span><span class="s2">&quot;0 0 * * *&quot;</span> </span><span id="L-4"><a name="L-4"></a><span class="nv">tmpCron</span><span class="o">=</span><span class="k">$(</span>mktemp<span class="k">)</span> </span><span id="L-5"><a name="L-5"></a>crontab -l &gt; <span class="s2">&quot;</span><span class="nv">$tmpCron</span><span class="s2">&quot;</span> </span><span id="L-6"><a name="L-6"></a> </span><span id="L-7"><a name="L-7"></a><span class="c1"># check if update repo already exists in current cron</span> </span><span id="L-8"><a name="L-8"></a><span class="k">if</span> grep <span class="s2">&quot;</span><span class="nv">$task</span><span class="s2">&quot;</span> <span class="s2">&quot;</span><span class="nv">$tmpCron</span><span class="s2">&quot;</span> 1&gt;/dev/null </span><span id="L-9"><a name="L-9"></a><span class="k">then</span> </span><span id="L-10"><a name="L-10"></a> <span class="nb">echo</span> <span class="s2">&quot;</span><span class="nv">$task</span><span class="s2"> cron task, already exists, leaving cron unchanged&quot;</span> </span><span id="L-11"><a name="L-11"></a><span class="k">else</span> </span><span id="L-12"><a name="L-12"></a> <span class="c1"># append tasks to cron</span> </span><span id="L-13"><a name="L-13"></a> <span class="nb">echo</span> <span class="s2">&quot;</span><span class="nv">$timing</span><span class="s2"> </span><span class="nv">$task</span><span class="s2">&quot;</span> &gt;&gt; <span class="s2">&quot;</span><span class="nv">$tmpCron</span><span class="s2">&quot;</span> </span><span id="L-14"><a name="L-14"></a> </span><span id="L-15"><a name="L-15"></a> <span class="c1"># update cron</span> </span><span id="L-16"><a name="L-16"></a> crontab <span class="s2">&quot;</span><span class="nv">$tmpCron</span><span class="s2">&quot;</span> <span class="o">||</span> <span class="o">{</span> <span class="nb">echo</span> <span class="s2">&quot;failed to update cron, exiting...&quot;</span><span class="p">;</span> <span class="nb">exit</span> 1<span class="p">;</span> <span class="o">}</span> </span><span id="L-17"><a name="L-17"></a><span class="k">fi</span> </span><span id="L-18"><a name="L-18"></a> </span><span id="L-19"><a name="L-19"></a><span class="c1"># delete tmp file</span> </span><span id="L-20"><a name="L-20"></a>rm <span class="s2">&quot;</span><span class="nv">$tmpCron</span><span class="s2">&quot;</span> </span></pre></div> </td></tr></table>
bash, cron, linux
--- 
+++ 
@@ -0,0 +1,20 @@
+# backup current cron jobs to tmp file
+task="/path/to/some/task"
+timing="0 0 * * *"
+tmpCron=$(mktemp)
+crontab -l > "$tmpCron"
+
+# check if update repo already exists in current cron
+if grep "$task" "$tmpCron" 1>/dev/null
+then
+	echo "$task cron task, already exists, leaving cron unchanged"
+else
+    # append tasks to cron
+    echo "$timing $task" >> "$tmpCron"
+    
+    # update cron
+    crontab "$tmpCron" || { echo "failed to update cron, exiting..."; exit 1; }
+fi
+
+# delete tmp file
+rm "$tmpCron"
  • omriko
  • 3 years, 8 months ago