बैश स्क्रिप्ट का उपयोग करके क्रॉस्टब स्थापित करना


11

मैंने दो स्क्रिप्ट को क्रॉस्टैब पर स्थापित करने के लिए एक स्क्रिप्ट बनाई है।

#!/bin/bash

 sudo crontab -l > mycron
 #echo new cron into cron file

 echo "*/05 * * * * bash /mnt/md0/capture/delete_old_pcap.sh" >> mycron #schedule the delete script
 echo "*/12 * * * * bash  /mnt/md0/capture/merge_pcap.sh" >> mycron     #schedule the merge script

#install new cron file
 crontab mycron
rm mycron

स्क्रिप्ट चलती है, और दो लाइनों को क्रॉस्टैब में जोड़ा जाता है। लेकिन अगर मैं स्क्रिप्ट को फिर से चलाता हूं, तो यह उन रेखाओं को फिर से जोड़ता है, इस प्रकार मेरे पास एक ही सामान कहने वाली चार लाइनें होंगी। मैं चाहता हूं कि स्थापित स्क्रिप्ट को ऐसे चलाया जाए कि, क्रॉस्टैब में डाली गई लाइनें दोहराई न जाएं। मैं उसे कैसे कर सकता हूँ


मुझे समझ नहीं आया कि आपका उद्देश्य क्या है? आपने इसे पहली बार क्यों स्क्रिप्ट किया ?, कृपया अपने मूल पोस्ट में जानकारी जोड़ें और संपादित करें । tks
एक्स तियान

जवाबों:


19

मैं का उपयोग /etc/cron.dकरने की सिफारिश करेंगे crontab

आप उन फ़ाइलों को रख सकते हैं /etc/cron.dजिनमें crontab प्रविष्टियों की तरह व्यवहार होता है। हालांकि प्रारूप थोड़ा अलग है।

उदाहरण के लिए
/etc/cron.d/pcap:

*/05 * * * * root bash /mnt/md0/capture/delete_old_pcap.sh
*/12 * * * * root bash  /mnt/md0/capture/merge_pcap.sh

प्रारूप में अंतर उपयोगकर्ता को समय विनिर्देश के बाद काम चलाने के लिए जोड़ रहा है।

अब आप बस जाँच कर सकते हैं कि क्या फ़ाइल मौजूद है, और यदि आप इसे अधिलेखित कर देते हैं, तो कोई बात नहीं।

 

ध्यान दें कि यह संभव है कि आपके क्रोन डेमॉन में न हो /etc/cron.d। मुझे नहीं पता कि किस क्रोन डेमोंस के पास यह है, लेकिन विक्सी क्रोन लिननक्स पर मानक क्रोन डेमॉन है, और यह करता है।


3

आप इसके बजाय एक समारोह की घोषणा कर सकते हैं:

add() {
  grep -Fq "$1" mycron || echo "$1" >> mycron
}

और यह कहते हुए आह्वान करें:

add "*/05 * * * * bash /mnt/md0/capture/delete_old_pcap.sh"

यदि फ़ाइल में मौजूद नहीं है, तो यह केवल पंक्ति को जोड़ देगा।


क्या आप बता सकते हैं कि grep -Fq "$ 1" क्या करता है?
जिष्णु यू नायर

और स्क्रिप्ट त्रुटि दे grep: इनपुट फ़ाइल `mycron 'भी उत्पादन है
जिष्णु यू नायर

@JishnuUNair -Fहोगा grepतय स्ट्रिंग के रूप में पैटर्न की व्याख्या।
देवनाउल

@Jishnuunair क्या आप सुनिश्चित हैं कि आपने उपरोक्त पाठ को सही तरीके से कॉपी किया है?
देवनाउल

हां, मैंने इसे सही तरीके से कॉपी किया है।
जिष्णु यू नायर

1

बाश से मैं का उपयोग करें

    crontab -l | { cat; echo "*/10 * * * * /script/script.sh > /dev/null 2>&1"; } | crontab -

दूरस्थ स्क्रिप्ट पर क्रोन प्रविष्टियों को जोड़ने के लिए भी इस स्क्रिप्ट का उपयोग करें

    cronok="##";
    cronok+=`ssh $host 'crontab -l'`;
    pattern="reboot.sh"

    if [[ "$cronok" == *${pattern}* ]]; then
         echo "found cron  at [$host]"
      else
        echo "Cron at [$host] not found adding now"
       `ssh $host 'crontab -l | { cat; echo "*/10 * * * * /root/reboot.sh > /dev/null 2>&1"; } | crontab -'`
       echo "finished cron"
    fi

0

आप एक स्क्रिप्ट लिख सकते हैं और इसे रोकने के लिए इसे कोंट्राब में जोड़ सकते हैं:

####You should calculate tiem you want kill your script.
#######code of calculating........
pid=`ps ax |egrep myscript |awk {'print $1'}`
kill -9 $pid
#OR
kill $pid

3
इस सवाल का जवाब नहीं है। इसके अलावा, kill -9केवल अंतिम उपाय के रूप में किया जाना चाहिए - unix.stackexchange.com/questions/8916/…
ग्रीम
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.